一筆訂單,可以做多筆支付,怎麼解決?
使用者選擇支付方式後,系統需要和第三方進行互動,獲取到結果後,可能跳轉到第三方收銀台,也可能在當前頁面展示收款***;
由於產生待支付單後,支付狀態是不可控的,支付狀態由第三方**資訊中獲取。所以很難控制支付單的再次產生。
概念解釋:
乙個訂單對應多個支付單,但乙個訂單下 只允許出現 一筆成功的支付單
支付流程是一套非同步的操作。
使用者選擇支付方式
跳轉到對應的收銀台
使用者支付成功
第三方**系統
修改訂單狀態
不可控的因素是在第三和第四步。
第一步使用者的乙個訂單,選擇支付方式觸發第三方支付平台之前,先掃瞄該訂單下的待支付訂單,如果存在,呼叫其訂單關閉介面,使之前的待支付單立即失效。然後再建立新的支付單做支付。
理想狀態下,建立的支付單可以隨時關閉,這就可以完美解決重複支付問題。
第二步使用者支付成功後,收到第三方的**通知,修改訂單狀態後,再次掃瞄待支付的訂單,對其進行關閉訂單的操作。
所以建立訂單時加了乙個選擇策略來控制是否立即關閉歷史支付訂單。然後用第二步來兜底。
到此還是不能完全解決重複支付,原因如下:
支付寶的不能及時關閉,到此不一定能完全解決。
部分銀行的介面功能中,沒有提供及時關閉訂單的功能。
第三步針對以上策略下的漏網之魚,還需採取補償策略:
定時任務:定時對賬,通過定時任務,掃瞄那些支付成功,且實際支付金額大於應收金額的支付單,或者說乙個訂單號,存在多筆成功的支付訂單的資料。按時間順序,將後面支付的支付單做主動退款。
這一步還是不能完全解決問題。原因:部分支付平台不支援退款,這種情況下,無法做到主動退款,只能依賴人工操作。
第四步最後的無奈之舉:發現重複支付的支付單資料,且沒有退款介面可用時。發起一條工單,通知到運營端,讓運營去人工處理。
clc
2016最新支付寶APP支付整合問題解決
2.新增支付寶sdk所需要的依賴庫 xcode7之前是dylib,xcode7之後是tbd 3.在info.plist中新增對http請求的支援 4.在info中新增schemes 5.新增支付寶demo中的util和openssl兩個資料夾中的檔案到工程中,將demo中的兩個openssl支援庫新...
光大代付支付有問題解決思路
光大代付 異常現象 數字簽名 閘道器資金源 前置機 銀行 分析問題 1 數字簽名失敗 需要銀行配合解決 所以暫時先將前置機禁用 2 確認有幾台前置機 3 分析其他的前置機是否有同樣問題 4 如果其他機器上沒有其他問題 則將該機器禁用 代付有3個 光大 中信 招行 其他的銀行通過這些銀行進行跨行轉賬,...
興業銀行支付介面測試問題解決
一直在測試興業銀行的支付介面,在支付成功之後,返回 頁面的時候,居然不能顯示 支付成功 頁面,提示無法開啟頁面,乙個404的錯誤。檢查來檢查去,也跟蹤了一堆 ctl.payment.php中的result 方法 if payment member id payment member id this ...