下載下傳安裝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