code分成三類:
1. 明確成功的code
2. 明確失敗的code
3. 未知狀態的code(未知的code)
原則:
未知code保持進行中
1. 提現一定要查詢修復方式。同步的:只相信success,其他保持不變,通過狀態來決定狀態。非同步的:同步,維持狀態不變。
2. 充值(預充值),成功保持進行中,其他不關閉,只是記錄已出錯過,下次重新獲取流水號。
改進: 不關閉,只是記錄已出錯過。 不影響狀態流轉。解決了支付的乙個大問題,線上遇到的場景:未知code到底是保持進行中,還是保持關閉的問題。
對支付而言:這種case下,如果保持進行中,又支付,還是失敗的。如果關閉,可能已經支付成功了,但是又呼叫了一次。
3. 代扣。 未知code。 關閉對我方有好處,使用者損失,不會導致使用者無法重複代扣的問題。進行中好處,可以通過後續狀態檢查校驗。
未知狀態的code。
這些code有些是錯誤可重試的,有些是不可重試的,不管可不可重試,最好都阻斷掉。
所以請求方可以重新請求,以獲取結果。也可以採用查詢狀態的方案來實現。
好的提供者,內部要保證完整性。採用狀態查詢修復和再次查詢的方案。
如果某個提供者,不提供內部完整性。
查詢到狀態為
1、進行中,重試,觸發流轉。
2、失敗,關閉。不重試。
3.、 成功。不重試
4. 、無,重試。可能觸發流轉,也可能繼續被拒絕返回未知code,陷入無限死迴圈。
所以建議
如果對方明確介面是可重試的,內部不保證完整性,建議用後者。
http返回錯誤碼
http響應碼響應碼由三位十進位制數字組成,它們出現在由http伺服器傳送的響應的第一行。響應碼分五種型別,由它們的第一位數字表示 1xx 資訊,請求收到,繼續處理 2xx 成功,行為被成功地接受 理解和採納 3xx 重定向,為了完成請求,必須進一步執行的動作 4xx 客戶端錯誤,請求包含語法錯誤或...
C 異常2 返回錯誤碼
一種比異常終止更靈活的辦法是,使用函式的返回值來指出問題。例如,ostream類的get void 成員通常返回下乙個輸入字元的ascii碼,但到達檔案尾時,將返回eof。對hmean 來說,這種方法不管用。任何數值都是有效的返回值,因此不存在可以指出問題的特殊值。在這種情況下,可以使用指標引數或引...
後台返回錯誤碼並且接收錯誤碼以及資料的方式
之前和小夥伴們一起寫專案的時候,後台的兄弟們介面的返回一班是乙個物件,或者乙個陣列。比如說檢測是否登入,小夥伴們的介面會返回狀態碼為200,返回值為乙個物件,其中有有關登入狀態,已登入或者未登入,也就是說只要介面能夠被訪問,那麼返回的狀態碼一定是200的。這次在github上拉了乙個網易雲 的後台 ...