支付流程里面就涉及到了第三方支付接口:
下單接口:商戶提交下單請求到第三方支付接口,第三方支付收單成功后返回下單成功結果給到商戶系統(tǒng)。(下單接口的最終處理結果分為下單成功和下單失敗,若未收到明確結果可調用單筆訂單查詢接口查詢結果。)
支付接口:調用該接口時指定支付參數,完成買家賬戶向商戶賬戶的支付,采用頁面跳轉交互模式和后臺通知交互模式。(結果分為兩路返回:一路為前臺在 return_url 頁面跳轉顯示支付結果;一路為后臺在 notify_url 收到支付結果通知后進行響應。)
退款接口:調用第三方支付的支付請求接口返回付款成功后,在需要做退款處理時調用退款請求接口發(fā)起退款處理。(退款接口的最終處理結果分為退款成功和退款失敗,若未收到明確結果可調用退款查詢接口查詢結果。)
單筆訂單查詢接口:根據訂單號查詢單筆訂單信息和狀態(tài)。退款訂單查詢接口:調用第三方支付的退款接口返回后,在需要查詢退款請求狀態(tài)可調用退款訂單查詢接口查詢退款訂單的狀態(tài)和訂單信息。
測試過程中需要注意的主要測試點及異常場景:
首先要保證接口都能正常調用;
生成一筆訂單,支付完成后,同步或異步重復回調,只有一次有效;
生成一筆訂單,復制訂單號和金額,再次生成一筆訂單,用 fiddler 設置斷點,用第一筆已完成的訂單號和訂單金額去替換現有的訂單號和金額,無法完成支付;
生成一筆訂單,跳轉到第三方時修改金額,無法到賬,或者如果是游戲充值游戲幣的話,到賬為篡改后的金額對應的游戲幣;
異步通知屏蔽,同步有效,進行支付,同步能夠正常到賬;
同步設置無效,異步有效,進行支付,異步能夠正常到賬;
同步異步都設置無效,在第三方支付完成后,在重發(fā)機制時間范圍內,設置異步有效,到下次通知時間點時,能夠正常通知到賬(補單機制的驗證,如果商戶收到第三方支付成功的通知后,要告知第三方支付收到了成功的通知,如果第三方支付收到商戶應答不是 ok 或超時,第三方支付就會認為通知失敗,會在規(guī)定的時間內持續(xù)調用 notify_url,一般有時間或次數的限制);
針對支付訂單在數據庫中存儲是否完整和正確進行校驗(比如:第三方訂單號–方便與第三方對賬和問題排查、訂單金額、訂單狀態(tài)等);
如果是用戶購買實物商品,用戶發(fā)起退貨,要保證退貨流程正常,資金能正常返還,要考慮下并發(fā)情況驗證以確保安全性;
如果是用戶購買虛擬商品,比如話費、油卡之類的商品,只有在發(fā)貨失敗的時候才能發(fā)起退貨,注意驗證;