python+alipay支付宝支付接入(沙箱测试)

307 阅读3分钟

python+alipay支付宝支付接入(沙箱测试)

1.注册开发者账号

调试支付宝支付需要先 在 支付宝开放平台 进行注册,入驻为 “自助研发者”;链接为 open.alipay.com/platform/ho… 第一次进入需要填写详细信息 - 注意:切换为 自研开发者

1584197606859.png

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密钥 的 设置/查看

1584259358341.png

在弹出的对话框中,选择 公钥 模式 并将您刚才生成出的 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 #输出此结果 则表示安装成功

支付时序图

支付宝交互时序图.png

关于return_url和notify_url的问题

  • return_url 【GET】

    • 如果不给return_url支付宝处理完业务会留在自己的网页不做跳转
    • 重定向时会带上订单编号等参数
  • notify_url 【POST】

    • 支付结果异步通知
    • 对于 PC 网站支付的交易,在用户支付完成之后,支付宝会根据 API 中商户传入的 notify_url,通过 POST 请求的形式将支付结果作为参数通知到商户系统。
    • 详见(docs.open.alipay.com/270/105902/)

本文转自 www.jianshu.com/p/9ed1441fb…,如有侵权,请联系删除。