支付系統(tǒng)資損分析

1 資損

資金損失,有多扣用戶款導(dǎo)致用戶的資金損失,也有多出金或多充值導(dǎo)致支付公司的資金損失的。

2 資損分析

2.1 跟上下游系統(tǒng)交互

2.1.1 重復(fù)請(qǐng)求或者被重復(fù)請(qǐng)求

發(fā)生在系統(tǒng)交互連接處,被調(diào)用方重復(fù)發(fā)起同一筆業(yè)務(wù)訂單,或同一筆訂單調(diào)用其他系統(tǒng)發(fā)起兩次以上請(qǐng)求,如果交互雙方對(duì)“同一筆訂單”的認(rèn)識(shí)不統(tǒng)一,相關(guān)聯(lián)系統(tǒng)沒有對(duì)“同一筆訂單”做好防重處理,都會(huì)導(dǎo)致重復(fù)出金或重復(fù)入金。

2.1.2 交互結(jié)果的返回碼

需要明確調(diào)用別人系統(tǒng)返回碼的含義,區(qū)分代表的是通訊結(jié)果還是業(yè)務(wù)結(jié)果,往往會(huì)因?yàn)榘巡皇钦嬲臉I(yè)務(wù)失敗返回碼映射成失敗的情況居多,還有就是超時(shí)無返回結(jié)果的時(shí)候也按失敗處理的話,也會(huì)造成資損。對(duì)于別人調(diào)用我們的系統(tǒng)時(shí),我們盡量返回盡量少,盡量明確的返回碼,對(duì)方如果處理不好的話也會(huì)出現(xiàn)資損。

2.1.3 并發(fā)

只在代碼上判重訂單還不夠,如果沒有控制好并發(fā),當(dāng)訂單同一時(shí)刻到達(dá)時(shí),程序會(huì)判定無歷史單均進(jìn)入下一步的業(yè)務(wù)處理,會(huì)發(fā)生資損。

2.2 內(nèi)部邏輯錯(cuò)誤

2.2.1 業(yè)務(wù)邏輯過程處理

業(yè)務(wù)處理遵循正常的業(yè)務(wù)處理過程,如果程序處理沒有嚴(yán)格貼合標(biāo)準(zhǔn),比如先扣金額再出金這個(gè)過程中沒有先扣掉金額就去做出金業(yè)務(wù),再或者處理過程中重要數(shù)據(jù)比如金額、收款方信息遭到更改,就會(huì)發(fā)生資損。

2.2.2 手續(xù)費(fèi)

由于好些場(chǎng)景中的手續(xù)費(fèi)扣除是跟主業(yè)務(wù)分開進(jìn)行的,手續(xù)費(fèi)是不是扣了,多扣少扣都不易發(fā)覺,所以此處也有資損的風(fēng)險(xiǎn)。

2.2.3 金額換算

在一些精度要求比較高的場(chǎng)景中,某些數(shù)據(jù)庫支持的不夠,需要將小數(shù)轉(zhuǎn)成整數(shù)存放和讀取,此時(shí)如果處理不當(dāng),會(huì)造成資損。

2.2.4 狀態(tài)控制

狀態(tài)在訂單的流轉(zhuǎn)處理中扮演著非常重要的角色,每種狀態(tài)的變化是有順序的,每個(gè)狀態(tài)下能做的業(yè)務(wù)處理也是有限制的,如果在某個(gè)狀態(tài)下做了不該做的事情,或者狀態(tài)轉(zhuǎn)換時(shí)跳過了設(shè)定的狀態(tài),就有可能會(huì)發(fā)生資損。

2.3 安全漏洞

2.3.1 偽造請(qǐng)求數(shù)據(jù)

報(bào)文被別有用心的人截取后,偽造請(qǐng)求報(bào)文發(fā)起出金請(qǐng)求,一旦安全機(jī)制薄弱的話會(huì)造成資損

2.3.2 內(nèi)部人員調(diào)用系統(tǒng)

內(nèi)部人員根據(jù)系統(tǒng)漏洞,模擬異步通知結(jié)果混淆當(dāng)前系統(tǒng),將本不該處理的訂單處理狀態(tài),引發(fā)后續(xù)一系列操作,可能會(huì)造成資損。

2.3.3 人為修改數(shù)據(jù)庫

如果數(shù)據(jù)庫人為修改出金金額或者狀態(tài)等關(guān)鍵信息,如果不能識(shí)別的話會(huì)造成資損

2.4 人工處理

人工處理異常訂單時(shí)往往跟系統(tǒng)自動(dòng)處理的邏輯不一致,導(dǎo)致有可能會(huì)重復(fù)處理業(yè)務(wù),或者在人工處理時(shí)與系統(tǒng)自動(dòng)處理并發(fā)導(dǎo)致資損。

3 解決方法

3.1 唯一商戶訂單號(hào)

防重表或數(shù)據(jù)庫對(duì)商戶號(hào)+商戶訂單號(hào)做唯一索引約束,控制請(qǐng)求的是否重發(fā)

3.2 解決并發(fā)問題

基于redis分布式鎖

基于數(shù)據(jù)庫排他鎖

增加審核機(jī)制,人工排除并發(fā),然后再進(jìn)行后續(xù)處理

3.3 白名單

系統(tǒng)白名單,重點(diǎn)系統(tǒng)交互比如在異步通知回調(diào)接口要識(shí)別回調(diào)報(bào)文的來源,對(duì)指定的Ip斷才認(rèn)為是合法的。

業(yè)務(wù)白名單,重點(diǎn)業(yè)務(wù)對(duì)重要標(biāo)識(shí)比如交易雙方、業(yè)務(wù)主體等做的白名單,控制業(yè)務(wù)的影響范圍。

3.4 風(fēng)控黑名單或商戶授權(quán)聯(lián)動(dòng)控制

通過風(fēng)控系統(tǒng)或者商戶控制中心對(duì)發(fā)現(xiàn)的可疑商戶及時(shí)制止交易,聯(lián)動(dòng)業(yè)務(wù)系統(tǒng),達(dá)到防止資金損失的效果。

3.5 訂單、流水和狀態(tài)

業(yè)務(wù)邏輯處理中為減少失誤,需要依賴兩個(gè)點(diǎn),一個(gè)是訂單、流水,另一個(gè)是狀態(tài)。訂單記錄了一筆業(yè)務(wù)的詳細(xì)信息,狀態(tài)是訂單狀態(tài),描述的是業(yè)務(wù)處理過程中的某個(gè)點(diǎn),流水是資金變化的依據(jù)。處理過程中做能做哪些事情由當(dāng)前和相鄰狀態(tài)決定,資金操作以之前的資金流水為依據(jù)判斷是否可以執(zhí)行。

3.6 防篡改

接口請(qǐng)求需登錄,請(qǐng)求報(bào)文加時(shí)間戳和簽名。

數(shù)據(jù)庫對(duì)重要記錄加簽存儲(chǔ),做業(yè)務(wù)前判斷。

結(jié)合白名單,拒絕接受不明請(qǐng)求。

4 預(yù)防和監(jiān)控

4.1 事前

事前監(jiān)控主要是功能在上生產(chǎn)環(huán)境前的一系列測(cè)試,包括開發(fā)人員自測(cè)測(cè)試人員測(cè)試和生產(chǎn)模擬環(huán)境測(cè)試,任何改動(dòng)都不能不經(jīng)測(cè)試直接放生產(chǎn)環(huán)境。

開發(fā)完成后要對(duì)做單元測(cè)試和接口測(cè)試。單元測(cè)試可以保證重點(diǎn)邏輯各個(gè)分支處理的準(zhǔn)確性,接口測(cè)試可以保證整個(gè)業(yè)務(wù)大體的貫通。

測(cè)試人員結(jié)合用例進(jìn)行充分的功能測(cè)試和集成測(cè)試。

壓力測(cè)試測(cè)試并發(fā)情況下系統(tǒng)的運(yùn)行狀況。

生產(chǎn)模擬環(huán)境測(cè)試要測(cè)試通過。

4.2 事中

出金前檢查資金鏈路,一旦有問題,立即熔斷,標(biāo)識(shí)異常,拒絕出金,后續(xù)由人工介入處理。

數(shù)據(jù)庫日志監(jiān)控,根據(jù)數(shù)據(jù)庫日志,檢測(cè)到人為變更時(shí),做關(guān)聯(lián)的檢查,資金鏈路有問題時(shí)會(huì)觸發(fā)報(bào)警提示。

4.3 事后

系統(tǒng)上下游之間的對(duì)賬。正常情況下交互的系統(tǒng)間調(diào)用是一一對(duì)應(yīng)的,對(duì)于發(fā)生異?;蚴怯捎谕ㄓ嵉仍螂p方有未完成狀態(tài)的需要進(jìn)行系統(tǒng)對(duì)賬。

資金流和信息流關(guān)于出入金匯總對(duì)賬。這種對(duì)賬可以從宏觀上把控資金往來的準(zhǔn)確性,能夠發(fā)現(xiàn)多入金或者多出金的情況。

?????????????????????????????????????????????????????????

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概述 支付系統(tǒng)是連接消費(fèi)者、商家(或平臺(tái))和金融機(jī)構(gòu)的橋梁,管理支付數(shù)據(jù),調(diào)用第三方支付平臺(tái)接口,記錄支付信息...
    沉落的星星閱讀 4,906評(píng)論 2 83
  • 話說最近大家的情緒紛紛不太平啊,不知是花粉吸多了還是雨水淋多了,聽見好幾個(gè)身邊的情侶吵架分手的。想想自己也是,有些...
    花滿樓時(shí)故人歸閱讀 344評(píng)論 0 0
  • 風(fēng) 物 我打江南走過, 那等在季節(jié)里的容顏如蓮花的開落 你底心是小小的窗扉緊掩 我達(dá)達(dá)的馬蹄是美麗的錯(cuò)誤 我不是歸...
    A_啟承教育戴老師閱讀 761評(píng)論 0 0
  • 跑步最大的特點(diǎn),是孤獨(dú)。別的運(yùn)動(dòng)可以靠互動(dòng)中的樂趣以及團(tuán)隊(duì)精神堅(jiān)持下來,比如打籃球踢足球。孤獨(dú)的運(yùn)動(dòng),要靠天性的契...
    扎高拉姆閱讀 217評(píng)論 0 0
  • 如果以前訪問過 是301 永久轉(zhuǎn)移了資源瀏覽器緩存了這個(gè)信息,就會(huì)直接跳轉(zhuǎn) 看看有沒有緩存 沒有 或者超時(shí)了 要...
    胖達(dá)_4b7e閱讀 417評(píng)論 0 0

友情鏈接更多精彩內(nèi)容