天天看点

用python完成支付宝App支付后台流程

下载安装python-alipay-sdk:

pip install python-alipay-sdk –upgrade

参考:https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

一、流程:

1、在支付宝开放平台配置好App应用

https://docs.open.alipay.com/204/105297/

2、初始化

alipay = AliPay(
    appid="",
    app_notify_url=None,  # 默认回调url
    app_private_key_string=app_private_key_string,
    alipay_public_key_string=alipay_public_key_string,  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
    sign_type="RSA2" # RSA 或者 RSA2
    debug=False  # 默认False
)
           

3、生成order_string

# App支付,将order_string返回给app即可
order_string = alipay.api_alipay_trade_app_pay(
    out_trade_no="20161112",
    total_amount=,
    subject=subject,
    notify_url="https://example.com/notify" # 可选, 不填则使用默认notify url
)
           

4、通知验证

receive_data = dict(web.input())
signature = receive_data.pop("sign")
if receive_data["sign_type"]:
    signatureType = receive_data.pop("sign_type")
# 检查签名
success = alipay.verify(receive_data, signature)
if success and receive_data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):
    _LOG.info('verify success')
           

二、遇到的问题:

问题1:

python-alipay-sdk插件报“RSA key format is not supported”错误

解决方法:

sign_type=”RSA” 改成sign_type=”RSA2”

问题2:

订单参数异常,请重新下单后再发起付款(ALIN42273)

解决方法:

ALIN42273-自查方案:

https://openclub.alipay.com/read.php?tid=4699&fid=62&uid=1732

一般是因为传的参数格式不正确,或者忘记传某个必须要传的参数

问题3:

系统繁忙 请稍后再试(ALIN10146)

ALIN10146-自查方案

https://openclub.alipay.com/read.php?tid=6918&fid=60

解决方案:

我的问题是秘钥匹配问题,建议参考这个帖子验证公钥的正确性方法如下:

https://openclub.alipay.com/read.php?tid=1486&fid=46

另外有一个重要的RSA密钥生成工具在开发的过程中非常有用,

https://docs.open.alipay.com/291/105971