以前一直不知道這2種狀態到底有什麼不一樣。支付寶中擔保交易和即時到帳交易對其的描述爲:網站
一頭霧水。。。。。。OK,找例子來講明吧:接口
例子一:支付寶
OK,開測。當用戶在支付寶網站上充值完成後,這個時候支付寶的通知消息中,若是是即時到帳普通版,那麼這時的交易狀態值爲: TRADE_FINISHED;若是是即時到帳高級版,此時的交易狀態值就爲:TRADE_SUCCESS。請求
我第一次接入的時候在我網站中判斷用或來作,即若是是交易成功或者交易完成則發貨。這時就錯大了。。。。。。由於做爲即時到帳高級版,在TRADE_SUCCESS完成後過了三個月,支付寶又會主動再推送一個消息爲TRADE_FINISHED。因此若是我用以上的邏輯來作發貨,那麼我接入即時到帳高級版的話,就會發貨2次。支付
這個問題是由於我沒有完全理解清楚這2種關係形成的。推送
仔細琢磨了一下,發現了它們二者最本質的差異。TRADE_SUCCESS狀態表明瞭充值成功,也就是說錢已經進了支付寶(擔保交易)或賣家(即時到帳);這時候,這筆交易應該還能夠進行後續的操做(好比三個月後交易狀態自動變成TRADE_FINISHED),由於整筆交易尚未關閉掉,也就是說必定還有主動通知過來。而TRADE_FINISHED表明了這筆訂單完全完成了,不會再有任何主動通知過來了。消息
綜上所述,收到TRADE_FINISHED請求後,這筆訂單就結束了,支付寶不會再主動請求商戶網站了;收到TRADE_SUCCESS請求後,後續必定還有至少一條通知記錄,即TRADE_FINISHED。因此,在作通知接口時,切記使用判斷訂單狀態用或的關係。版本