文章目录
一、前言
本文主要针对 Python for Django 在对接支付宝电脑网站、手机网站、App支付过程中具体实现步骤进行详解;
相信大家支付功能也写了不少,但时间一长,再次用到的时候有些细节难免会忘记,此篇文章就为方便后续快速实现支付宝各支付功能集成而作。
支付Demo源码地址详见:《Alipay_demo》 下载即可使用
关联文章 《30分钟未支付自动取消订单的设计方案》 将在下一篇分享~~好文章 记得收藏+点赞+关注额 !!!
---- Nick.Peng
二、支付宝开发者相关文档
- 支付宝开发文档: https://openhome.alipay.com/developmentDocument.htm
- 支付快速接入文档: https://docs.open.alipay.com/270/105899/
- 官方SDK地址: https://docs.open.alipay.com/270/106291/
- 非官方支付宝SDK地址: https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
- 开发帮助中心: https://opensupport.alipay.com/support/helpcenter/192
对接过程中如果遇到难题,可以在帮助中心寻找答案
三、各支付功能支付流程图
- 支付流程文字叙述如下,以电脑网站支付为例
- 用户点击下单,生成订单信息,前端携带后端生成返回的订单id,调取获取支付宝支付链接口,接口返回支付链接(包含订单编号,总金额,return_url,notify_url 等参数);
- 前端获取到支付宝支付链接后,构建form表单,向支付宝服务器发起支付请求;
- 进入支付宝支付页面,登录支付宝,登录成功后输入支付密码,进行支付;
- 支付成功后跳转到支付成功页面,支付宝携带支付结果数据重定向到商户指定的 return_url 页面;
- 前端携带支付成功结果数据,向同步回调通知接口发起请求,后端验签成功后返回支付成功业务逻辑响应;
- 同时支付宝服务器也会根据提供的 notify_url 异步请求异步通知接口,后端验签成功,保存支付结果,并返回 success 字符给支付宝服务器;
- 到此支付流程结束
四、支付宝接入前准备
4.1 创建应用
- 安装SDK:
pip install python-alipay-sdk==1.7.1
- 创建项目:
django-admin startproject alipay_demo
- 创建应用:
python manage.py startapp payment
- 本Demo目录结构
4.2 配置公私钥
此步主要完成两个配置文件,即:应用私钥:app_private_key.pem,支付宝公钥:alipay_public_key.pem
-
生成应用的私钥和公钥,Windows用户请下载签名工具
# 打开终端,输入openssl回车,一次执行以下命令生成应用公私钥 openssl OpenSSL> genrsa -out app_private_key.pem 2048 # 私钥RSA2 OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 导出公钥 OpenSSL> exit #退出OpenSSL程序
-
保存应用私钥文件
在 payment 应用中新建 keys 目录,用来保存秘钥文件。
将应用私钥文件 app_private_key.pem 复制到 payment/keys 目录下, 内容如下。-----BEGIN RSA PRIVATE KEY----- 此处为上面生成的应用私钥 -----BEGIN RSA PRIVATE KEY-----
-
查看公钥
cat app_publict_key.pem
将应用公钥内容复制粘贴到支付宝控制台进行配置,会得到支付宝公钥;如图,第一次应该是设置应用公钥
注意:对应加密方式进行配置,推荐RSA2。
-
保存支付宝公钥
在 payment/keys 目录下新建 alipay_public_key.pem 文件,用于保存支付宝的公钥文件。
将上一步生成的支付宝的公钥内容复制到 alipay_public_key.pem 文件中