天天看點

支付系統傳回值,錯誤碼,code

code分成三類:

  1. 明确成功的code 

  2. 明确失敗的code

  3. 未知狀态的code(未知的code)

原則: 

        未知code保持進行中

  1. 提現一定要查詢修複方式。同步的:隻相信success,其他保持不變,通過狀态來決定狀态。異步的:同步,維持狀态不變。

  2. 充值(預充值),成功保持進行中,其他不關閉,隻是記錄已出錯過,下次重新擷取流水号。

    如果未知code關閉,這樣就不會出現因為微信某種原因拒絕,重試還是拒絕,導緻使用者再也無法支付的現象。一直用同個流水号。導緻問題,支付後又來請求,會導緻關閉掉。

   改進: 不關閉,隻是記錄已出錯過。 不影響狀态流轉。解決了支付的一個大問題,線上遇到的場景:未知code到底是保持進行中,還是保持關閉的問題。

    對支付而言:這種case下,如果保持進行中,又支付,還是失敗的。如果關閉,可能已經支付成功了,但是又調用了一次。

  3. 代扣。 未知code。 關閉對我方有好處,使用者損失,不會導緻使用者無法重複代扣的問題。進行中好處,可以通過後續狀态檢查校驗。

未知狀态的code。

這些code有些是錯誤可重試的,有些是不可重試的,不管可不可重試,最好都阻斷掉。

是以請求方可以重新請求,以擷取結果。也可以采用查詢狀态的方案來實作。

好的提供者,内部要保證完整性。采用狀态查詢修複和再次查詢的方案。

如果某個提供者,不提供内部完整性。

查詢到狀态為

1、進行中,重試,觸發流轉。

2、失敗,關閉。不重試。

3.、 成功。不重試

4. 、無,重試。可能觸發流轉,也可能繼續被拒絕傳回未知code,陷入無限死循環。

是以建議

如果對方明确接口是可重試的,内部不保證完整性,建議用後者。

繼續閱讀