支付寶接入文檔中TRADE_SUCCESS和TRADE_FINISHED的本質區別


之前一直不知道這2種狀態到底有什么不同。支付寶中擔保交易和即時到賬交易對其的描述為:

  • TRADE_SUCCESS  交易成功(或支付成功)
  • TRADE_FINISHED    交易完成

一頭霧水。。。。。。OK,找例子來說明吧:

例子一:

  • 即時到賬普通版。   普通版不支持支付完成后的退款操作,即用戶充值完成后,該交易就算是完成了,這筆交易就不能再做任何操作了。
  • 即時到賬高級版。   這個版本在用戶充值完成后,賣家可以執行退款操作進行退款,即該交易還沒有徹底完成,賣家還可以修改這筆交易。

OK,開測。當用戶在支付寶網站上充值完成后,這個時候支付寶的通知消息中,如果是即時到賬普通版,那么這時的交易狀態值為:  TRADE_FINISHED;如果是即時到賬高級版,此時的交易狀態值就為:TRADE_SUCCESS。

我第一次接入的時候在我網站中判斷用或來做,即如果是交易成功或者交易完成則發貨。這時就錯大了。。。。。。因為作為即時到賬高級版,在TRADE_SUCCESS完成后過了三個月,支付寶又會主動再推送一個消息為TRADE_FINISHED。所以如果我用以上的邏輯來做發貨,那么我接入即時到賬高級版的話,就會發貨2次。

這個問題是因為我沒有徹底理解清楚這2種關系造成的。

仔細琢磨了一下,發現了它們兩者最本質的差別。TRADE_SUCCESS狀態代表了充值成功,也就是說錢已經進了支付寶(擔保交易)或賣家(即時到賬);這時候,這筆交易應該還可以進行后續的操作(比如三個月后交易狀態自動變成TRADE_FINISHED),因為整筆交易還沒有關閉掉,也就是說一定還有主動通知過來。而TRADE_FINISHED代表了這筆訂單徹底完成了,不會再有任何主動通知過來了。

綜上所述,收到TRADE_FINISHED請求后,這筆訂單就結束了,支付寶不會再主動請求商戶網站了;收到TRADE_SUCCESS請求后,后續一定還有至少一條通知記錄,即TRADE_FINISHED。所以,在做通知接口時,切記使用判斷訂單狀態用或的關系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM