网页接入支付宝支付,Django&移动端H5网页接入支付宝支付全流程

前言:

本文主要向大家介绍python做后台的移动端H5接入支付宝支付的全部流程, 所有步骤经过本人测试 近期公司项目临近尾声, 需要接入支付宝支付功能, 公司项目是一个移动端的网页项目, 后台用的是Django, 作者在接到需求的时候先去搜索了一波教程, 发现网上对于python+移动端网页接入支付宝的教程几乎没有, 官方的文档对python也不是很友好, 遂自行踩坑, 踩坑结束也就有了这篇文章, 希望能给大家一些帮助

环境及文档地址:

python3.6.5 Django 3.0.4 (接入支付宝实际上对django版本没有限制) alipay-sdk-python 3.3.398 (支付宝官方SDK)

由于官方文档对python不甚友好, 所以大家最好文档结合本文一起品尝, 效果更佳, 下面贴出本文对应的一些文档地址:

支付宝手机网站支付开发文档支付宝开放平台支付宝沙箱应用安装SDK

pip install alipay-sdk-python==3.3.398 官方SDK, 安装没什么可说的

支付的流程详解

此处借用官方的一张图来给大家介绍支付的整个流程 在这里插入图片描述 用户实际操作流程(也是官方的图): 在这里插入图片描述

用户再页面上点击去付款(图1)后端接到请求后, 调用SDK生成订单信息, 最后生成一个跳转到支付宝的链接, 返回此链接给前端用户页面前端通过js代码访问跳转链接, 跳转到支付宝界面(图2)如果用户手机安装有支付宝, 网页会自动唤醒支付宝并进入支付界面(图3)用户完成支付支付宝回跳到你指定的页面并携带支付的信息(前端回跳毕竟不可靠, 不要太依赖)支付宝post请求你指定的接口并携带支付的信息(在这个接口内执行保存数据库等相关逻辑) 至此, 整个支付流程结束, 下面我们来详细说说代码层面的东西接入支付宝需要准备的东西

正式项目需要一个实名认证过的支付宝账号登录支付宝开放平台并根据自己的需求创建应用并签约对应功能(此动作是为了获取接入所必须的appid, 支付宝公钥, 并授权回调地址) 支付宝开放平台 支付宝也提供了一个沙箱环境供开发者在测试开发阶段调试等等, 本文就是基于沙箱环境的一个教程, 不过请大家放心, 沙箱环境跟正式环境可以无缝切换,无需更改代码逻辑, 只需要更换appid及支付宝网关即可 支付宝沙箱应用

登录沙箱应用并获取自己的沙箱appid 并写入自己的后台代码中ALIPAY_APPID = '2016100xxxx39412'# 自己的沙箱appidALIPAY_DEBUG = True# 是否为沙箱, 后续创建alipay对象会用到创建自己的公私钥 在你的代码目录下创建keys文件夹, 进入keys目录, 然后执行如下两条命令genrsa -out app_private_key.pem 2048rsa -in app_private_key.pem -pubout -out app_public_key.pem把自己的公钥给支付宝,并获取支付宝的公钥 在沙箱环境下点击 在这里插入图片描述 在这里插入图片描述 此时你的keys目录应该是这样的: 在这里插入图片描述 好啦, 此时所需要的一切都已经准备好了, 我们开始写代码开始写代码

为了节省篇幅, 直接贴出我的代码, 注释的非常清楚

import os# 用于获取keys下秘钥文件路径from django.conf import settings# 用于使用ALIPAY_APPID 及 APLPAY_DEBUG 动态调节沙箱环境或者正式环境from alipay.aop.api.AlipayClientConfig import AlipayClientConfig# 用于创建客户端对象所需的配置类from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient# 用于创建客户端对象from alipay.aop.api.request.AlipayTradeWapPayRequest import AlipayTradeWapPayModel, AlipayTradeWapPayRequest# 手机网站支付所需的类class Payment(View):def post(self, request):# 实例化客户端alipay_client_config = AlipayClientConfig(settings.ALIPAY_DEBUG)# 创建配置类, True: 沙箱环境, False: 正式环境alipay_client_config.app_id = settings.ALIPAY_APPID# 指定appid# 指定自己的私钥, 用于支付宝验签alipay_client_config.app_private_key = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/app_private_key.pem"), "r").read()# 指定支付宝的公钥, 用于支付宝验签alipay_client_config.alipay_public_key = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/alipay_public_key.pem"), "r").read()client = DefaultAlipayClient(alipay_client_config)# 实例化客户端对象# 构造跳转链接所需的参数(此处我只填了必填的几个参数, 具体可参考开发文档的请求参数说明)model = AlipayTradeWapPayModel()#model.out_trade_no = "20200410182552613"# 订单编号, 自己的后台生成(不能重复)model.total_amount = "100.00"# 需要支付的价格model.subject = "大梦_damon的python课程"# 订单抬头信息说明model.product_code = "QUICK_WAP_WAY"# 手机网站支付的固定参数request = AlipayTradeWapPayRequest(biz_model=model)# 创建请求对象request.return_url = "http://127.0.0.1:8000/payment_success/"# 支付成功后的回跳地址request.notify_url = "http://127.0.0.1:8000/payment_notify/"# 支付成功后的通知地址# 执行API调用alipay_url = client.page_execute(request, "GET")# 生成跳转链接url, 也可以指定POST方式的跳转, 不过前端处理起来比GET方式稍复杂return JsonResponse({"alipay_url": alipay_url})# 返回跳转链接给前端页面

前端收到响应后可以通过以下代码实现跳转

location.href = alipay_url

不出意外你就会看到图2的样子了 至此, 我们算是正式的接入了支付宝的支付, 至于用户支付成功后的回调逻辑等我下一篇文章再给大家详细介绍 欢迎大家评论或者指出文章中写的模糊或者逻辑错误的地方! 如果帮助到了你, 可否给我点个赞呢?

电脑网站支付接入流程 - 技术支持 & 案例 FAQ网站支付宝登录接入流程 - 技术支持 & 案例 FAQweb端网站接入支付宝支付过程 - 掘金支付宝支付接入整理 - 掘金移动端h5网页调用支付宝支付接口 - 掘金支付宝支付(一)—H5手机网站支付2.0(alipay.trade.wap ...Django&移动端H5网页接入支付宝支付全流程_梦阿迪的博客 ...Spring Boot集成支付宝电脑网站支付功能 - 哈客部落vue移动端h5调用支付宝支付接口(案例2)_黑色咖啡 Ken的 ...android 支付宝网页支付和快捷支付App接入阿里支付宝支付,app如何开通接入支付宝支付功能,APP如何申请阿里支付宝支付支付宝小程序唤起支付平台如何接入微信支付网站接入支付宝收款接口RSA2[公私钥]方式验签使用教程php快速接入支付宝即时支付,PC网站支付和手机网站支付,基于thinkPHP框架 WeChatDeveloper支付类包支付宝手机网页支付接入与使用规则移动端h5网页调用支付宝支付接口(项目)Web应用接入支付宝支付功能沙箱环境测试支付宝支付功能支付宝接口对接指南(三、支付宝开放接口对接:老版SDK)【保姆级】nopcommerce 支付宝支付插件,使用开放平台接入支付宝如何境外改为境内?在国外可以使用吗?手机网站支付宝接入iframe无法唤醒支付宝app支付宝接口对接指南(四、回调通知对接:websoket方式)【保姆级】php支付宝系列之电脑网站支付tp框架接入支付宝公钥证书支付+回调java接入支付宝api实现支付宝手机扫码登录Web应用对接支付宝当面付解决方案手机APP如何接入支付宝支付(java后台)Java接入支付宝支付接口方法线上支付支付宝个人支付接入流程详解Vue的H5页面唤起支付宝支付用php的方法在:H5页面唤起支付宝app支付后端---史上最全最小白最简单最细致的Java接入支付宝支付接口方法Node.js接入支付宝(蚂蚁金服)支付tp框架接入支付宝支付第三方支付接入支付宝当面付支付宝手机网页支付Node接入支付宝开放平台的沙箱实现支付功能PHP手机网页接入支付宝心得(一)自主拼接参数并签名访问
接入支付宝登录支付宝电脑网站支付接入个人网站接入支付宝支付支付宝网页支付流程支付宝扫码支付接入支付宝网站支付接口支付宝支付接入流程支付宝支付接入文档网页接入支付宝支付怎么关闭网站接入支付宝支付支付宝 网页支付支付宝 接入网页 支付宝网页调用支付宝支付接口个人网站接入支付宝登陆网页支付宝支付宝接入网址是什么支付宝网站接入助听器戴久了是不是耳朵更聋了戏曲穆桂英挂帅选段伴奏霸气头像女生超拽冷酷动漫黑色2021年集五福时间uc缓存的电影m3u8怎么导出mp4格式隧道安全施工视频弗雷德曼联小学生新年祝福词范文小米11ultra背屏玩法拍照ps4 真三国无双8画质模糊骨盆处肌肉构造图