梳理一下對接支付寶支付時回調踩過的一個坑。api
時間過了一年再次收到一條來自支付寶的回調信息,結果被處理成支付成功的回調(還好後面的邏輯有對訂單狀態進行校驗,因此沒有流程上的漏洞)。數據結構
觸發條件名 | 觸發條件描述 | 觸發條件默認值 |
---|---|---|
TRADE_FINISHED | 交易完成 | true(觸發通知) |
TRADE_SUCCESS | 支付成功 | true(觸發通知) |
TRADE_CLOSED | 交易關閉 | true(觸發通知) |
WAIT_BUYER_PAY | 交易建立 | false(不觸發通知) |
從上表可得出,當支付寶交易單的狀態被設爲 TRADE_FINISHED/TRADE_SUCCESS/TRADE_CLOSED 時,都會觸發一次回調通知異步
TRADE_FINISHED
TRADE_FINISHED 的通知觸發條件是:url
通知的地址是調用 alipay.trade.create
(統一收單交易建立接口)時指定的回調地址 notify_url
日誌
一年以後又收到一條通知,剖析日誌咱們發現:code
trade_status=TRADE_FINISHED&refund_fee=0.00
,也就是這個通知是由 TRADE_FINISHED
狀態觸發的TRADE_FINISHED
通知觸發條件的第二種狀況致使的支付寶方面的問題:接口
alipay.trade.refund
統一收單交易退款接口 沒有說起退款存在回調的狀況。而事實上退款以後(不管是全額仍是部分),都會觸發一次異步通知綜上所述,支付寶支付的文檔雖然很全,可是寫得很亂,不少重要的點常常再也不重要的地方重點說明。對接的時候仍是要仔細且多考慮幾個方面,儘可能編寫健壯的有必定程度容災能力的代碼。ip
https://opendocs.alipay.com/a...
https://opendocs.alipay.com/o...支付寶