圖解支付結算平臺設計:如何高效給商戶結算
本文主要講清楚支付系統中商戶結算涉及的基本概念,產品架構、系統架構,以及一些核心的流程和相關領域模型、狀態機設計等。
收單結算是支付系統最重要的子域之一,行業內經常把有牌照的支付平臺稱為“收單機構”就可見一斑。
我們在上一篇文章講了收單如何幫忙商戶收錢,收完錢還得轉給商戶,用戶支付100塊錢,那么到底給商戶多少錢,什么時候給,這都是結算平臺干的工作。謂之“結算”。
下面這個圖留著是為了提高“收單、結算、拒付”緊密結合的印象。
三者的職能如下:
- 收單核心:主要負責處理商戶訂單的全生命周期管理:訂單創建、支付推進、退款、撤銷等。
- 結算核心:主要負責把商戶應收賬款算清楚,把結算款按合同約定結轉給商戶。
- 拒付核心:主要負責處理用戶的拒付和對應的抗辯以及最后的判責。
一、結算在支付系統中的位置
在收單機構(支付平臺)里,結算就是把幫商戶收進來的錢,按約定的結算規則、準確、及時地結算給商戶。
二、結算產品架構
結算模式分為主動結算和被動結算。站在商戶的角度,被動結算就是以收單機構為準,收單機構說結多少就是多少。主動結算就是以商戶為準,商戶說結多少就是多少。
一般來說,大部分商戶都是被動結算,特殊的大商戶比如Google,Apple經常使用主動結算。
結算一定要設計賬期,就像賬務系統要有會計日是一樣的道理,避免跨天的交易或零點附近的交易出現結算異常。對應就有賬期創建、入賬、關賬、出賬。
三、結算系統架構
核心的服務包括:結算受理、注冊,賬期的新建、關賬、出賬,最后就是結算。
四、結算核心流程
下面以即時到賬模式為例說明。擔保交易模式和預授權模式稍有不同。
在交易日,收單收到支付成功回執后,就發消息給結算,結算收到消息去查結算合約,進入結算注冊流程。
在結算注冊時,如果存在打開的賬期,就直接掛過去,如果不存在,就創建一個賬期。
在結算日,先進行關賬,避免在途任務受影響。關賬成功后,進入結算批次,再進入打款流程。
打款有3種情況:
1)結算到商戶余額戶。
2)在線結算到提現卡。
3)線下人工打款(人工結算)。
打款完成后,推進結算流水SETTLED。
五、結算核心領域模型
左邊綠色部分是賬單和流水相關信息,中間藍色是賬期和批次相關信息,右邊是打款信息。
因為一個收單可能會有多種費用,所以會生成多條我方賬單流水。同樣的,一個收單可能結算給多個主體,對應有多筆結算流水。
結算賬期有點類似會計日的概念,是為了控制零點左右的收單單據的結算能落到正確的結算賬期里去。
關賬后就會發起外部結算以及對應的打款。一個結算批次可能會分成多筆打款。
六、結算狀態機設計
上面把結算涉及到的狀態機都畫出來了。
特殊的是打款單的狀態機,因為打款有可能調用外部渠道打到商戶的卡里去,外部渠道有一定概率先返回打款成功,過兩天后又返回退票(實際打款失敗,資金退回),這個時候需要推進到REVERSE,然后重新更新信息后再進行打款。
退票的原因有多種,比如商戶的卡被凍結等。
七、資金流
結算一般只涉及到正向資金流,也就是支付成功后,一步步推進結算到商戶余額戶或者商戶銀行卡,如果是結算到商戶余額戶,就需要商戶主動在商戶門戶發起提現到卡。
很多人很好奇“為什么要有支付網關過渡戶和商戶待結算戶?能不能直接進商戶余額戶?”
我的答案是:如果你一定要這么做,也是可以的,但是會給自己埋下很多坑。
我舉兩個例子:
1. 從渠道扣款成功,并不代表就一定要結算給商戶。比如去外部渠道扣款是有時間消耗的,外部渠道扣款成功后,如果訂單已經關閉(用戶主動關單或者訂單超時關單),這個時候需要給用戶把錢原路退回去。所以需要有一個“支付網關過渡戶”作為臨時的中間戶(也是內部戶,用戶或商戶是不可見的),在需要退回時,直接從這個中間戶退回去。
2. 商戶是有結算周期的,一般使用T+N表示,這個N可以是0,1,2 … …,從風險角度,比較少使用T+0。
3. 結算方式是可以使用結算到余額戶或卡。如果每筆都直接結算到了卡,發生退款怎么辦?還需要有單獨一個退款戶。大規模交易情況下,這個卡的交易記錄也是極多的。
4. 退款一般從商戶待結算戶扣回。這樣設計更簡單。
八、結束語
本文主要講了結算的基本概念,以及對應的產品和系統架構圖,一些核心的領域模型和狀態機設計。
本文由人人都是產品經理作者【隱墨星辰】,微信公眾號:【隱墨星辰】,原創/授權 發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協議。
- 目前還沒評論,等你發揮!