背景
隨著互聯(lián)網(wǎng)這陣風的刮起,金融跟著火了一把践付。大概在13年左右,互聯(lián)網(wǎng)金融也成為大家耳熟能詳?shù)囊粋€名詞隧土。
在互金行業(yè)和支付行業(yè)命爬,有過經(jīng)歷的同事都知道一個詞:資損。顧名思義饲宛,就是資金損失。
資損產(chǎn)生原因
系統(tǒng)層面:
- 支付重復發(fā)生亥啦。
- 返回碼映射錯誤练链。
- 處理中交易處理不當。
- 賬務或者交易處理異常媒鼓。
人為原因:
你可能想多了错妖,我不想寫疚沐。哈哈。
資損發(fā)生的場景
一般在出金的情況下痴施,才會有資損的發(fā)生究流。即公司層面的資損。而對于入金的情況芬探,一般會對用戶產(chǎn)生重復扣款,導致用戶投訴哩簿,影響客戶體驗酝静。當然,也有一種場景形入,就是未扣成功缝左,當作成功處理,也會產(chǎn)生資損蛇数。
所以是越,我們在日常處理資金的時候,尤其要注意倚评。對于出金,如果處理不好盔性,那么極有可能造成公司的難以估量的損失呢岗。
當然蛹尝,也不是要大家忽略入金的處理悉尾。入金處理不當,造成大量的客戶投訴构眯,也會降低公司客戶的粘度,從而降低用戶的活躍度务漩,使用戶流失它褪。當然,入金在我上面提到的場景中茫打,也會造成公司資損。
特殊的場景是轮洋,用戶扣款失敗抬旺,但是當作成功處理。給用戶電子賬戶加錢开财,然后用戶進行提現(xiàn)。那么碾褂,資損立刻發(fā)生历葛。
原因分析和應對方案
- 出金的場景:提現(xiàn),自動贖回恤溶,人工贖回,轉(zhuǎn)賬等支付或者代發(fā)操作问裕。
- 入金的場景:充值孵坚,購買等代扣行為窥淆。
1巍杈、支付重復發(fā)生:
對于互金行業(yè)的同胞來說,重復支付這種操作一點不陌生筷畦。
由于系統(tǒng)業(yè)務邏輯沒有控制好,導致重復支付吼砂。如沒有對返回碼做正確的處理鼎文,那么上游業(yè)務系統(tǒng)認為是失敗的,就會重復發(fā)送支付請求周偎。造成資金損失撑帖。
由于通訊組件沒有用好,導致支付重復的請求胡嘿。這里很常見的的情況如下:我們在往銀行后者第三方發(fā)送請求的時候,通常會用apache的httpclient或者netflix的feign組件勿侯。但是他們在通訊層面都是有重試策略的逢享。對于readtimeout或者connectiontimeout吴藻,都會進行一定規(guī)則的重試。所以我們在用這些組件的時候沟堡,一定要了解他們的特性,推薦做法是將重試策略關閉禀横。用掉單查詢來進行支付請求結(jié)果的補償粥血。掉單機制后面會提及酿箭。
那么趾娃,如何來避免支付的重復發(fā)生呢?
不同的場景采用不同的策略妇蛀。這里稍微提及下笤成。因為場景復雜,可能時間有限炕泳,不便于過多的碼文字。
行業(yè)內(nèi)通俗的做法是下游系統(tǒng)對上游系統(tǒng)做冪等的控制挣磨。舉個例子荤懂,第三方金融機構(gòu)如果調(diào)用支付寶的接口,你會發(fā)現(xiàn)晤锥,支付寶的開放平臺廊宪,要求你先獲取一個支付單號。這個單號是唯一的箭启。然后跳轉(zhuǎn)到自己的平臺,進行支付信息的填寫放妈。后續(xù)做的所有的支付操作荐操,你都需要帶著這個id。支付寶之所以這么做托启,其中一個用途,就是用這個來做冪等和掉單查詢的機制拐迁。
2、返回碼映射錯誤:
這個對于沒有類似經(jīng)驗的人來說链方,打擊是毀滅性的灶搜。因為根本沒有這個概念。
我曾經(jīng)看到團隊的一個小伙伴割卖,對于處理中的交易,直接當失敗來處理罢维,但是我驚呆了丙挽。
ok,言歸正傳颜阐,返回碼凳怨,是下游對上游調(diào)用的一個響應。
如果上游將下游的返回失敗的返回碼肤舞,解析處理成成功,或者相反芒率,解析成處理失敗篙顺。那么可想而知,結(jié)果慰安。化焕。铃剔。查刻。凤类。
當然,返回碼一般會有兩種谜疤。如果接過銀行渠道的同學,應該有印象:一種是通訊返回碼履肃;另一種是交易或者支付的返回碼坐桩。
我們需要對這兩種返回碼做處理。分兩層來判斷膘螟。
如果通訊失敗碾局,那么交易失敗。
如果通訊成功擦俐,交易成功蚯瞧,那么成功嘿期。
如果通訊成功埋合,交易失敗,那么失敗甚颂。
其他情況,都是處理中蹭睡。
以上是通用做法赶么,公式套用即可。
當然,返回碼需要分層來映射琼锋。對于底層來說祟昭,可能偏系統(tǒng)層面。對于上游或者業(yè)務系統(tǒng)來說谜叹,偏業(yè)務層面搬葬,需要轉(zhuǎn)換成用戶看得懂的描述。
比如踩萎,我們前段時間香府,業(yè)務和技術在糾結(jié)的“撤標中”和“已取消”。其實業(yè)務的角度企孩,是希望用戶能明白,明確目前操作的狀況擒抛。而技術的角度补疑,可能會站在系統(tǒng)層面看問題。
3诊胞、處理中交易處理不當
對于處理中的交易锹杈,我們通俗的做法是,記錄成處理中邪码。然后通過查詢來查回最終交易的狀態(tài)咬清。而不是單純的當作失敗或者成功來處理糕韧。
當然喻圃,這里還有另外一種思路粪滤。供大家參考。
在業(yè)務緊急的情況下肆汹,有些交易是可以通過立即失敗或者成功來處理的予权。當然,需要區(qū)分入金和出金岗照。
對于出金笆环,如果業(yè)務要求,那么可以在適當?shù)牡魡尾樵兒笃韧拢龀晒μ幚怼?/p>
對于入金账忘,如果業(yè)務要求,那么也可以在適當?shù)牡魡尾樵兒蟾日悖鍪√幚怼?/p>
以上兩種方案蒋荚,在一定程度上保證來公司的資金安全。
广鳍。吓妆。。行拢。。竭缝。電腦沒電了。咙俩。湿故。明天繼續(xù)。