一、环境搭建
1. 安装支付宝开放平台官方SDK(最好在python的虚拟环境中安装
pip install alipay-sdk-python
二、功能解析
1.构建支付宝客户端:功能是初始化一些基本参数(请求地址, Appid, 私钥和支付宝公钥), 签名使用
from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
# 初始化客户端, sandbox_debug指的是否是调试默认,如果是True,则自动切换为提交环境为沙盒
alipay_client_config = AlipayClientConfig(sandbox_debug=True)
# 设置Appid
alipay_client_config.app_id = settings.ALIPAY_APPID
# 设置私钥, 私钥必须是单行无换行符的字符串, 使用OPENSSL生成, 方法参考最后的备注
alipay_client_config.app_private_key = settings.APP_PRIVATE_KEY
# 设置支付宝公钥, 在支付宝开放平台沙盒账号中获取
alipay_client_config.alipay_public_key = settings.ALIPAY_PUBLIC_KEY
# 开始构建客户端, logger为日志对象, 参考文末
client = DefaultAlipayClient(alipay_client_config, logger)
2. 执行具体的请求, 打开支付宝开放平台文档可以获取每个请求对应的接口
以支付宝收单并支付的接口为例:
from alipay.aop.api.domain.AlipayTradePagePayModel import AlipayTradePagePayModel
from alipay.aop.api.request.AlipayTradePagePayRequest import AlipayTradePagePayRequest
# 构建域:作用是存储下单所需要的的必须参数, 只接受字符串参数,如果是数字要强制转换
# 这些参数需要在https://docs.open.alipay.com/api_1/alipay.trade.page.pay/中查找,哪些是必填的,哪些是可选的
model = AlipayTradePagePayModel()
model.out_trade_no = '商家订单编号'
model.total_amount = '订单价格'
model.subject = "订单标题"
# 订单超时时间:如果买家超过这个时间不付款,会关闭交易(最小1m分钟)
model.timeout_express = '10m'
pay_request = AlipayTradePagePayRequest(biz_model=model)
pay_request.notify_url = '支付后支付宝发送POST请求的地址'
# 拼接用来产生支付二维码的链接,返回给用户,用户就可以支付
pay_url = client.page_execute(pay_request, http_method='GET')