python+alipay支付宝支付接入(沙箱测试)
2021-06-29 本文已影响0人
码男将将
写在前面
本文依据自己的理解和开发编写的流程中间可能有些逻辑问题欢迎大佬指出。
本文主要说的是沙箱接入,正式应用需要注册应用的步骤。如果你想接入正式应用建议先把沙箱搞通。原因其一正式应用就是换appid的事,其二正式应用搞坏了折的是真钱!!
1.注册开发者账号
调试支付宝支付需要先 在 支付宝开放平台 进行注册,入驻为 “自助研发者”;链接为 https://open.alipay.com/platform/home.htm
第一次进入需要填写详细信息 - 注意:切换为 自研开发者
2.进入沙箱
完善个人信息后,在个人管理后台可看到 “沙箱” 服务
注:沙箱为支付宝提供的调试支付的测试环境,在该环境下,可模拟和调试支付流程
具体位置如下: 开发者中心 - 首页
1584258109763.png
3.查看沙箱
点击 研发服务 - 进入沙箱后, 在沙箱应用选项中可以看到支付宝提供的测试应用
注:当您的网站上线运营时,需要在开放平台申请一个应用;并填写相关信息审核后,方可使用支付功能;沙箱应用为支付宝提供开发者测试用的应用
1584258794452.png
4.生成&添加 RSA 公私钥
4.1生成密钥对
支付过程中涉及到请求和响应的签名校验;
在linux终端中 输入openssl 进入 交互环境
root@xxx:~$openssl
OpenSSL> genrsa -out app_private_key.pem 2048 #私钥
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem #导出公钥
OpenSSL> exit
root@xxx:~$ls
app_private_key.pem app_public_key.pem
RSA 钥匙用途
公钥加密/私钥解密
私钥签名/公钥验签
4.2 添加公钥
点击 沙箱应用展示信息页中的 RSA2密钥 的 设置/查看
在弹出的对话框中,选择 公钥 模式
并将您刚才生成出的 app_public_key.pem 中的内容 复制到 红色大框体内,并保存复制
注意,生成公钥如下, 只复制 -----BEGIN PUBLIC KEY----- 和 -----END PUBLIC KEY----- 之间的内容即可
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA871I3CXvQWXcbwbcyEJB
r7Prxfhf34z1lzZWEaeBugCiUNjK2llrVKyV5tcHqxv9xTzQXz6Mg4n0jmhqkqtI
B6gCNAo5bYMN9nDRnqZ33ojJmZMmxupWUZCvz+3Svft0P0hd/oKc0OZOTI8MPPNV
y5HsovhABUfVsTgSH/AlMoKEz7sM7Cqtb2LT8nZewSdrnEhLrw7KFkDyNfftO8CF
yls6MbNeI4CHmc0PTcXJ7O8+Fx0WOJrYDKPMHW25OxB1IT3Pdn8PnAbtYeRoiUU1
Yfp/qZMmnedZgF0Qpr+ZIZLPhAZrRwqfMcfSIiNJvmcsUKVGLBal10frAIztHKmW
eQIDAQAB
-----END PUBLIC KEY-----
1584259487199.png
4.3保存支付宝公钥
提交我方公钥后,弹框会显示 支付宝公钥;该公钥需要复制保存下来;
1584260105387.png
保存流程如下:
1,用户目录下
vim alipay_public_key.pem
2,进入vim后手动添加如下两行
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
3,光标在BEGIN处 点击 键盘o 进入插入模式,此时光标停留在 BEGIN和END的两行之间;粘贴支付宝公钥 最终格式如下
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgVjSs4PrjOsJ/c/m7SDYoPKPIwvEwq3U6p2dzpB0X/wVsYsZEHLrWEeVZfTHi9J0yrvwnxgUPlCGKv4EaJuc8msWuuH3TxEvurTPJxYUCOiBIQYeG5iRTh3fWyCkMlLNm8UXv0v+KRVK9bZ17cWB0vBM7iwrytGbfKg0vhIjsybbOd4VM/m4bWZOFdkXAmJfbO+pfMsa9TzF5zYmSpoHuBAkGu9m7EtzzBlXifthYkhvyEAX/XWG3rgaEe+l8W+NlPZ1uudZ2AIWLvnLl5Jjrcz1yMJqOhsobBrPiWbnwnRsMz1Sn9W9rl/cGITcboPlEMgs988Vcd/o21gHDNwNKQIDAQAB
-----END PUBLIC KEY-----
4,esc退出插入模式, 执行 :wq 退出保存
5.安装 python 的 支付宝组件
# 安装python-alipay-sdk
sudo pip3 install python-alipay-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple
#安装成功后执行如下命令 校验安装结果
root@xxx:~$ pip3 freeze|grep -i ali
python-alipay-sdk==2.0.1 #输出此结果 则表示安装成功
支付时序图
关于return_url和notify_url的问题
- return_url 【GET】
- 如果不给return_url支付宝处理完业务会留在自己的网页不做跳转
- 重定向时会带上订单编号等参数
- notify_url 【POST】
- 支付结果异步通知
- 对于 PC 网站支付的交易,在用户支付完成之后,支付宝会根据 API 中商户传入的 notify_url,通过 POST 请求的形式将支付结果作为参数通知到商户系统。
- 详见(https://docs.open.alipay.com/270/105902/)