第一次搞支付交易需求?這份防資損干貨幫你避避坑。
在交易支付的流程中,總會出現(xiàn)一些損耗,這種資損的處理比較麻煩。這篇文章,作者總結(jié)了其中的經(jīng)驗(yàn),希望可以幫到大家。
一、資損定義和分類
1. 定義
資損指的是在業(yè)務(wù)活動過程中,由于業(yè)務(wù)規(guī)則與實(shí)際資金流動存在不一致的情況,致使業(yè)務(wù)參與方中的一方乃至多方承受了資金損失。
2. 資損分類
站在平臺/公司的角度,資損分長款資損和短款資損。
長款資損,多收了用戶的錢,如重復(fù)代扣,重復(fù)支付,或算多了扣款金額。雖然不直接虧錢,也可以給用戶退錢,但是也浪費(fèi)用戶時(shí)間、客服資源,而且可能存在互聯(lián)網(wǎng)輿論問題。
短款資損,少收用戶錢,或者多給用戶錢/貨/權(quán)益。占用公司客服,催收資源,而且追不回來直接虧錢。
二、通道接入時(shí)防資損
1. 狀態(tài)碼問題
錯(cuò)把判斷接口操作成功的字段,當(dāng)作定義支付業(yè)務(wù)是否成功的字段。
務(wù)必要跟通道方窮盡明確,哪些狀態(tài)碼是成功、哪些是失敗,其余應(yīng)該歸為中間狀態(tài),包括空值等異常。
2. 支付結(jié)果查詢問題
錯(cuò)把查詢操作失敗當(dāng)作交易失敗
切記發(fā)起交易結(jié)果查詢接口失敗,不等于交易失敗,不能漏判斷這個(gè)點(diǎn)。
查詢速度過快
交易剛完成就反查交易狀態(tài),查詢接口返回“無此訂單/訂單不存在”,可能是銀行交易鏈路長,查詢請求先到。若據(jù)此將交易視為失敗處理,會引發(fā)上游系統(tǒng)重試,導(dǎo)致重復(fù)支付。
建議對接時(shí)咨詢接口提供方查詢頻率,了解多久后能查詢;或定義查詢策略,報(bào)錯(cuò)后 N 時(shí)間再查一次,若一直報(bào)錯(cuò),N 時(shí)長后置為失敗。
3. 通知問題
通道方通知的結(jié)果不一致
如通道方出現(xiàn)多次通知結(jié)果前后不一致,則建議以第一遍的通知為準(zhǔn),后續(xù)通知不更新狀態(tài),且告警出來人工干涉。
同步結(jié)果覆蓋異步通知結(jié)果
接口發(fā)起支付的時(shí)候沒得到終態(tài),而異步通知來得快,把訂單改了終態(tài)。此時(shí)發(fā)起支付后的程序又把訂單改成中間態(tài),并觸發(fā)后續(xù)的業(yè)務(wù)。
這個(gè)時(shí)候有人可能會說,等待下一次中間態(tài)查詢的補(bǔ)償任務(wù)即可,但是如果下游業(yè)務(wù)沒做好冪等,就G了。
因此建議,支付狀態(tài)不能從終態(tài)更新成處理中狀態(tài),不能從一個(gè)終態(tài)更新成另外一個(gè)終態(tài),如把成功改為失敗,或者失敗改為成功。
4. 單位問題
明確通道方金額的分元單位、貨幣單位等,若內(nèi)外部系統(tǒng)單位不一致,及時(shí)進(jìn)行單位轉(zhuǎn)換。同時(shí)關(guān)注金額精度問題。
三、扣款/支付時(shí)防資損
1. 支付中問題
業(yè)務(wù)一定要考慮、設(shè)計(jì)支付中狀態(tài)。
2. 防重復(fù)扣款
系統(tǒng)代扣
后端按支付訂單號冪等,支付中/支付成功狀態(tài)下不允許發(fā)起新支付。
主動支付
前端防抖。
前端支付中狀態(tài)付款按鈕置灰禁用。
后端按支付訂單號冪等,支付中/支付成功狀態(tài)下不允許發(fā)起新支付。
3. 單位
前后端分元單位、貨幣顯示要顯示一致。
四、出金業(yè)務(wù)防資損
1. 防重復(fù)出金
根據(jù)業(yè)務(wù)單號防重
限制同一筆業(yè)務(wù)訂單,只能同時(shí)存在在途或者成功1條出金記錄。
根據(jù)業(yè)務(wù)特征防重
短時(shí)內(nèi)同對象(卡號、身份證號、信用代碼,對象編碼等)。
短時(shí)內(nèi)同金額。
2. 防大額出錯(cuò)
根據(jù)不同的業(yè)務(wù)特征制定出金限額
如單筆出金限額、平臺單位時(shí)間之內(nèi)(日、月、年)匯總出金限額、單對象單位時(shí)間之內(nèi)出金限額
五、賬戶/錢包業(yè)務(wù)防資損
1. 涉及資金流的賬戶入賬程序
加錢入賬
如充值,一定是先用戶支付成功(通道響應(yīng)支付成功),再操作給用戶賬戶加錢。
減錢入賬
如提現(xiàn)、充值退款,一定是先操作用戶賬戶減錢,再給用戶原路退款/打款。
減錢時(shí)務(wù)必判斷余額夠不夠。
如是充值退款,如充值的時(shí)候收了手續(xù)費(fèi),需明確退款是否退手續(xù)費(fèi),如手續(xù)費(fèi)也退,判斷余額夠不夠時(shí),需要剔除手續(xù)費(fèi)。
2. 操作賬戶的順序
先插入流水,再操作余額加減,且務(wù)必上事務(wù)。
3. 入賬防重
根據(jù)業(yè)務(wù)單號+流水類型/賬戶類型冪等。且需要將業(yè)務(wù)單號存進(jìn)流水。
4. 提現(xiàn)失敗后賬戶藍(lán)字沖賬
如業(yè)務(wù)涉及提現(xiàn)失敗做沖賬動作,需要注意以下點(diǎn)。
防重復(fù)給賬戶加錢
除了提現(xiàn)訂單號判斷防重外,帶上原提現(xiàn)流水號做判斷,如該提現(xiàn)流水號已存在沖賬流水,則拒絕。
防算錯(cuò)金額
沖賬要取當(dāng)下最新的余額進(jìn)行疊加,不能取原提現(xiàn)前余額。
如有提現(xiàn)手續(xù)費(fèi),需把提現(xiàn)手續(xù)費(fèi)也退回,切記不要算錯(cuò)。
本文由 @別字君 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!