我们再web开发中,经常会遇到接入QQ登录,微信登录,支付宝支付,微信登录等等需求,以下针对python接入支付宝的流程进行总结。
接入步骤
-
目前支付宝的官方文档中,暂不支持python版本(凭什么?)
-
github上有大神写出了python对接支付宝的教程,大家可以参考
https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
-
# 安装python-alipay-sdk pip install python-alipay-sdk --upgrade # 对于python2, 请安装2.0以下版本: pip install python-alipay-sdk==1.1
支付宝流程步骤如下
-
这里面有两对密钥对
- 支付宝维护一对, 在我们的支付宝沙箱环境中能拿到支付宝的公钥,我们先拿着支付宝的公钥对我们的订单进行签名,支付宝那边接受到请求拿着自己的私钥进行验签,这样可以避免别人的恶意请求,因为公钥和私钥是配对的,别人拿不到支付宝的公钥。
- 我们也要把我们应用的公钥给支付宝,在我们完成支付的时候支付宝会拿着我们应用公钥对支付订单,支付流水号等进行签名,然后我们后端就得拿着我们自己应用私钥进行验签。
- 这两队签名和验签步骤都可以参考上面支付宝流程图
-
生成密钥的两种方式
-
openssl # openssl 是Linux自带的 在终端即可执行 OpenSSL> genrsa -out app_private_key.pem 2048 # 私钥 OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem # 导出公钥 OpenSSL> exit # 注意这个生成的密钥会在当前路径下
-
-
点击下载 这是一个app,安装好后会生成密钥对
-
支付宝的私钥支付宝自己保存了,我们需要将我们的公钥交给我们的沙箱
支付宝公钥我们复制,保存起来,因为等一下参数要用到。
因为我们在沙箱环境中已经设置了应用公钥,所以这里没有必要将应用公钥放进来
-
注意,还需要在公钥文件中补充开始与结束标志
-----BEGIN PUBLIC KEY----- 此处是公钥内容 -----END PUBLIC KEY-----
这一步做完了之后配置就完成啦,当我们创建完订单选择支付宝付款后,我们后端就需要请求支付宝,支付宝接收我的订单拼接url用户尽心登录,输入密码,确认支付
app_private_key_str = open(r'/home/python/Desktop/2020jxsz_teach/