天天看點

用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