之前一直不知道這2種狀態(tài)到底有什么不同愧捕。支付寶中擔(dān)保交易和即時(shí)到賬交易對其的描述為:
TRADE_SUCCESS ?交易成功(或支付成功)
TRADE_FINISHED ? ?交易完成
一頭霧水渐北。囚灼。秀睛。匕累。。坞古。OK梆惯,找例子來說明吧:
例子一:
即時(shí)到賬普通版酱鸭。 ? 普通版不支持支付完成后的退款操作,即用戶充值完成后垛吗,該交易就算是完成了凹髓,這筆交易就不能再做任何操作了。
即時(shí)到賬高級版怯屉。 ? 這個版本在用戶充值完成后蔚舀,賣家可以執(zhí)行退款操作進(jìn)行退款饵沧,即該交易還沒有徹底完成,賣家還可以修改這筆交易赌躺。
OK狼牺,開測。當(dāng)用戶在支付寶網(wǎng)站上充值完成后礼患,這個時(shí)候支付寶的通知消息中是钥,如果是即時(shí)到賬普通版,那么這時(shí)的交易狀態(tài)值為: ?TRADE_FINISHED缅叠;如果是即時(shí)到賬高級版悄泥,此時(shí)的交易狀態(tài)值就為:TRADE_SUCCESS。
我第一次接入的時(shí)候在我網(wǎng)站中判斷用或來做肤粱,即如果是交易成功或者交易完成則發(fā)貨弹囚。這時(shí)就錯大了。狼犯。余寥。。悯森。宋舷。因?yàn)樽鳛榧磿r(shí)到賬高級版,在TRADE_SUCCESS完成后過了三個月瓢姻,支付寶又會主動再推送一個消息為TRADE_FINISHED祝蝠。所以如果我用以上的邏輯來做發(fā)貨,那么我接入即時(shí)到賬高級版的話幻碱,就會發(fā)貨2次绎狭。
這個問題是因?yàn)槲覜]有徹底理解清楚這2種關(guān)系造成的。
仔細(xì)琢磨了一下褥傍,發(fā)現(xiàn)了它們兩者最本質(zhì)的差別儡嘶。TRADE_SUCCESS狀態(tài)代表了充值成功,也就是說錢已經(jīng)進(jìn)了支付寶(擔(dān)保交易)或賣家(即時(shí)到賬)恍风;這時(shí)候蹦狂,這筆交易應(yīng)該還可以進(jìn)行后續(xù)的操作(比如三個月后交易狀態(tài)自動變成TRADE_FINISHED),因?yàn)檎P交易還沒有關(guān)閉掉朋贬,也就是說一定還有主動通知過來凯楔。而TRADE_FINISHED代表了這筆訂單徹底完成了,不會再有任何主動通知過來了锦募。
綜上所述摆屯,收到TRADE_FINISHED請求后,這筆訂單就結(jié)束了糠亩,支付寶不會再主動請求商戶網(wǎng)站了虐骑;收到TRADE_SUCCESS請求后准验,后續(xù)一定還有至少一條通知記錄,即TRADE_FINISHED廷没。所以沟娱,在做通知接口時(shí),切記使用判斷訂單狀態(tài)用或的關(guān)系腕柜。
原文地址:支付寶接入文檔中TRADE_SUCCESS和TRADE_FINISHED的本質(zhì)區(qū)別, 感謝原作者分享。