如何避免订单重复支付?
咖友提問: 如何設計避免訂單出現重復支付的邏輯?
問題補充:假設有這么一種情況:
訂單已下單成功并且正處于支付頁面,用戶調起支付網關進行支付。支付成功了一次,但是由于某種情況導致未接收到銀行返回的【支付成功】等信號,系統此時還是認為未支付成功。用戶此時又支付了一次并且成功了。
問題:
如果用戶出現了2次支付并且都成功了,后臺邏輯退款這一塊如何設計?
是否可以避免這種情況的發生?如果可以怎么去避免呢。
來自 @妖之皇 的回答:
一、后臺設計邏輯:
1、參與的主體:
電商系統;
網銀或者第三方支付平臺;
電商用的結算平臺(如:商戶支付寶和商戶翼支付)
2、設計的主要流程:
電商系統調起網關支付,訂單跳轉到網銀或者第三方支付平臺中進行實際支付,這時訂單中包含的信息是由電商用的結算平臺先生成的一個支付訂單信息(這個支付信息包含與電商系統與網銀或者第三方支付平臺的關聯);用戶在網銀或者第三方支付平臺中進行實際支付(這個支付交互是網銀或者第三方支付平臺與結算平臺的交互),成功之后才是結算平臺反饋支付信息給電商系統。下列圖中:
①是用戶調起網關支付,訂單跳轉到網銀或者第三方支付平臺中進行實際支付;
②是用戶支付成功后,訂單反饋至電商系統。
現在出現重復付款的問題就是出現在中的網銀或者第三方支付平臺到電商用的結算平臺出現了延遲的情況,導致在電商系統中的訂單一直處于未付款狀態,部分用戶以為未支付就最終產生了重復付款。
二、如何避免
針對這個問題,思考了各種場景以及情況,這種模式是無法避免重復付款的(必須得看結算平臺的處理效率-一般情況下還是比較好的,還是少有延遲的情況)。只能后臺檢測重復付款的訂單,異常走退款流程。
除非系統本身具有支付平臺的功能。
三、延伸問題,如何處理因為支付成功后因延遲回調而訂單被取消
這個問題的出現背景也是因為第三方結算平臺延遲反饋而造成用戶錯以為沒有支付而取消訂單或者是系統到時時自動取消訂單。
解決辦法:建立異常處理機制。 結算平臺延遲返回成功的支付信息給電商系統時,如果判斷出此訂單已經取消。則進入異常處理機制,更改訂單為已收款狀態,并再次扣減訂單中庫存以及各種優惠(例如:價保,返利,促銷費,優惠等等)的回退。當然再此扣減的時候需要先判斷相關產品的庫存以及用戶的各種優惠是否滿足訂單的扣減,不滿足則不允許轉化。
這里是應該先判斷再次扣減的庫存以及各種優惠,再修改訂單狀態,步驟以及相關的支付信息為成功。
本文由PMCAFF產品經理社區會員原創發布于社區(www.pmcaff.com),未經許可,禁止轉載。
總結
以上是生活随笔為你收集整理的如何避免订单重复支付?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PMCAFF微课堂 | 产品汪如何做好“
- 下一篇: PMCAFF产品众测 | 对话随手攒CE