如何設(shè)計(jì)一套支付系統(tǒng)–對(duì)賬模塊

6 評(píng)論 20733 瀏覽 201 收藏 17 分鐘

編輯導(dǎo)語(yǔ):很多人都有記賬的習(xí)慣,但是記到后面卻發(fā)現(xiàn)自己的帳算不清楚,記賬不能只靠著單方面的賬單,還要進(jìn)行對(duì)賬才能確保無(wú)誤;本文將會(huì)從產(chǎn)品設(shè)計(jì)的業(yè)務(wù)知識(shí)點(diǎn)出發(fā),詳細(xì)介紹對(duì)賬業(yè)務(wù)流程,并列舉會(huì)出現(xiàn)的常見問(wèn)題和解決方法。

業(yè)務(wù)背景:

對(duì)賬模塊是支付系統(tǒng)的核心能力之一,是信息流和資金流關(guān)聯(lián)的重要依據(jù),平臺(tái)如果只使用渠道的單邊賬單或者平臺(tái)流水訂單,出現(xiàn)差錯(cuò)或渠道惡意扣單的風(fēng)險(xiǎn)極高。

為提高資金賬務(wù)的正確性和保障平臺(tái)的利益,需要通過(guò)平臺(tái)系統(tǒng)對(duì)賬能力與上游渠道對(duì)賬單逐筆勾兌確認(rèn),如有差異能及時(shí)解決或歸檔。

用戶畫像:

1)清結(jié)算專員:負(fù)責(zé)發(fā)起清分的操作者,首先確保信息流對(duì)平,然后確認(rèn)資金流應(yīng)收款和信息流平賬賬單金額一致。希望能及時(shí)發(fā)現(xiàn)長(zhǎng)短款問(wèn)題,并解決,保障資金清算給商戶(平臺(tái)可收款用戶)的時(shí)效性。

2)對(duì)賬異常訂單處理專員:負(fù)責(zé)核算異常訂單原因,并在平臺(tái)操作將異常訂單執(zhí)行修正、平賬。

一、必須知道的業(yè)務(wù)知識(shí)點(diǎn)

1. 對(duì)賬

在會(huì)計(jì)上概念:指為了保證賬簿記錄的正確性而進(jìn)行的有關(guān)賬項(xiàng)的核對(duì)工作;做到賬證相符、賬賬相符、賬實(shí)相符。

在支付系統(tǒng)上的體現(xiàn):

1)賬證核對(duì):是將賬簿記錄與記賬憑證進(jìn)行核對(duì)。這里是記賬憑證是指第三方上游提供的渠道對(duì)賬單,第三方渠道會(huì)根據(jù)對(duì)賬單金額實(shí)際結(jié)算資金,也就是常說(shuō)的信息流對(duì)賬。(有的支付公司或銀行只要收到對(duì)賬單了且平賬,即使資金未實(shí)際到賬,業(yè)務(wù)也允許發(fā)起清分以提高清算時(shí)效性)

2)賬賬核對(duì):是把有相互關(guān)系的多個(gè)賬簿記錄進(jìn)行核對(duì),有相互關(guān)系的賬簿記錄,包括總分類賬簿間核對(duì),明細(xì)賬簿間核對(duì)等多種類型。整個(gè)支付系統(tǒng)可以被拆分成了多個(gè)子系統(tǒng),如交易系統(tǒng)、賬戶系統(tǒng)、會(huì)計(jì)系統(tǒng)、賬戶系統(tǒng),每個(gè)子系統(tǒng)在處理各自的業(yè)務(wù)并記錄,其實(shí)就相當(dāng)于會(huì)記理論中的賬簿。系統(tǒng)間的對(duì)賬,主要用于修正內(nèi)部系統(tǒng)的數(shù)據(jù)不一致。

3)賬實(shí)核對(duì):是各項(xiàng)資產(chǎn)物資的記錄數(shù)值與實(shí)際真實(shí)數(shù)額間的核對(duì)。確認(rèn)第三方匯款到銀行賬戶資金和平賬對(duì)賬單結(jié)算金額是否匹配,也就是常說(shuō)的資金流對(duì)賬。

2. 軋帳

對(duì)賬系統(tǒng)主要做的是信息流的對(duì)賬,若對(duì)賬中發(fā)現(xiàn)有差異的訂單歸類記入對(duì)賬異常訂單表,可稱為軋帳。

3. 平帳

對(duì)賬異常訂單進(jìn)入差錯(cuò)流程,可以通過(guò)人工或者自動(dòng)的方式,按照事先設(shè)計(jì)好的規(guī)則處理這些異常差錯(cuò),可稱為平帳。

4、渠道對(duì)賬單

上游渠道會(huì)按照平臺(tái)在其申請(qǐng)的渠道賬戶維度推送對(duì)賬單,渠道賬戶也就是常說(shuō)的支付通道。

如果是第三方支付公司或銀行,上游渠道是微信、支付寶、銀聯(lián)二維碼(云閃付)等等。例如:支付平臺(tái)申請(qǐng)有微信2通道和微信6通道,則微信側(cè)會(huì)生成2份對(duì)賬單文件。

每份對(duì)賬單會(huì)包括支付成功訂單和退款成功訂單。第三方會(huì)以對(duì)賬單中的結(jié)算金額(支付訂單金額-支付訂單手續(xù)費(fèi))-(退款訂單金額-退款訂單手續(xù)費(fèi))結(jié)算匯款給到平臺(tái)資金賬戶。

5、銀聯(lián)二維碼(難點(diǎn))

銀聯(lián)二維碼是銀聯(lián)平臺(tái)自主推出的支付產(chǎn)品,C端使用云閃付、各手機(jī)銀行APP支付,訂單底層走的都是銀聯(lián)二維碼通道。

為什么銀聯(lián)二維碼需要重點(diǎn)說(shuō)呢?

因?yàn)樗煌谖⑿?、支付寶通道統(tǒng)一費(fèi)率的原則,銀聯(lián)會(huì)根據(jù)C端用戶支付時(shí)使用的銀行卡借貸性質(zhì)和交易金額是否大于1000作為費(fèi)率規(guī)則,并且還會(huì)收取額外的品牌服務(wù)費(fèi),詳情參見下圖。

所以設(shè)計(jì)銀聯(lián)二維碼通道對(duì)賬時(shí),還需考慮到多費(fèi)率及品牌服務(wù)費(fèi)的場(chǎng)景。

二、對(duì)賬流程

1. 業(yè)務(wù)流程

對(duì)賬業(yè)務(wù)可以插解為5個(gè)業(yè)務(wù)環(huán)節(jié),本文主要說(shuō)明每個(gè)環(huán)節(jié)的能力職責(zé)、常見問(wèn)題和通用解決方法,具體的產(chǎn)品方案還需要結(jié)合讀者平臺(tái)自身的業(yè)務(wù)特點(diǎn)和系統(tǒng)架構(gòu)設(shè)計(jì)。

三、對(duì)賬任務(wù)

對(duì)賬是一個(gè)日常操作,正常情況下上游渠道都會(huì)以D+1的周期生成渠道對(duì)賬單。

每天系統(tǒng)可以默認(rèn)生成定時(shí)對(duì)賬任務(wù),每個(gè)上游渠道生成時(shí)間不一樣,可以事前和上游確認(rèn),并結(jié)合平臺(tái)對(duì)賬的處理時(shí)效和商戶到賬需求,設(shè)計(jì)一個(gè)合理的時(shí)間執(zhí)行。

對(duì)賬任務(wù)設(shè)計(jì)前需確認(rèn),渠道對(duì)賬單推送方式、解析方法、匹配字段,并提前做好聯(lián)調(diào)適配工作;例如渠道有可能會(huì)需要申請(qǐng)白名單權(quán)限或提供SFTP地址信息,要謹(jǐn)防上線后才發(fā)現(xiàn)系統(tǒng)無(wú)法正常獲取對(duì)賬單的情況。

1. 創(chuàng)建任務(wù)批次

創(chuàng)建批次一方面是為了防止重復(fù)對(duì)賬,另一方面需要在對(duì)賬結(jié)束的時(shí)候?qū)?duì)賬的結(jié)果信息存儲(chǔ)到批次中。

2. 記錄任務(wù)信息

對(duì)賬任務(wù)信息,例如:通道名稱、通道編號(hào)、渠道商戶號(hào)、對(duì)賬任務(wù)批次、對(duì)賬任務(wù)狀態(tài)、交易時(shí)間、任務(wù)創(chuàng)建時(shí)間、下載開始時(shí)間、下載結(jié)束時(shí)間、下載狀態(tài)、對(duì)賬開始時(shí)間、對(duì)賬結(jié)束時(shí)間、對(duì)賬結(jié)果、對(duì)賬方式;

對(duì)賬方式為對(duì)賬處理時(shí)的對(duì)賬規(guī)則,可以根據(jù)業(yè)務(wù)實(shí)際情況分為:無(wú)需對(duì)賬、以渠道為準(zhǔn)、以平臺(tái)為準(zhǔn)。

  • 以渠道為準(zhǔn),則若對(duì)賬訂單平臺(tái)交易狀態(tài)為支付中或支付失敗,但渠道為支付成功,則平臺(tái)狀態(tài)改為支付成功。
  • 以平臺(tái)為準(zhǔn),則是若出現(xiàn)上述情況,對(duì)賬訂單記錄為異常訂單。

3. 重置任務(wù)機(jī)制

考慮到對(duì)賬過(guò)程中可能會(huì)遇到的來(lái)自上游渠道的問(wèn)題或平臺(tái)系統(tǒng)自身問(wèn)題,需要設(shè)計(jì)重置機(jī)制。

上游渠道對(duì)賬單錯(cuò)誤,需求二次或多次推送,所以需要設(shè)計(jì)重新下載渠道對(duì)賬單或重新上傳渠道對(duì)賬單;有可能平臺(tái)自身數(shù)據(jù)錯(cuò)誤導(dǎo)致出現(xiàn)大量的差異訂單,修復(fù)后需要重新對(duì)賬。

4. 對(duì)賬任務(wù)詳情示例

  1. 對(duì)賬信息:記錄對(duì)賬任務(wù)基本情況;
  2. 對(duì)賬結(jié)果信息:顯示關(guān)鍵對(duì)賬字段值;
  3. 掛銷賬信息:顯示是否有掛銷賬訂單及金額;
  4. 對(duì)賬異常信息:顯示是否有對(duì)賬異常訂單及金額;
  5. 備注:將系統(tǒng)自動(dòng)處理的過(guò)程記錄,也可以手動(dòng)修改。

四、對(duì)賬單下載

1. 獲取文件

渠道對(duì)賬單獲取方式,一般提前作為任務(wù)規(guī)則寫死。

大多數(shù)銀行都要求接入方提供ftp服務(wù),銀行定時(shí)將對(duì)賬單推送到接入方提供的ftp服務(wù)器上面;

還有一部分銀行會(huì)提供對(duì)賬單的下載服務(wù),通過(guò)ftp/http的都有,ftp方式居多;

另外網(wǎng)銀的對(duì)賬單比較特殊,一般都需要結(jié)算登錄網(wǎng)銀的后臺(tái)管理系統(tǒng)中,手動(dòng)下載,結(jié)算下載完對(duì)賬單后在導(dǎo)入到對(duì)賬系統(tǒng)。

2. 判斷文件是否存在

任務(wù)自動(dòng)獲取文件的情況下需要判斷任務(wù)是否存在:

自動(dòng)獲取渠道對(duì)賬單:不存在需要設(shè)置輪詢,每間隔一段時(shí)間重新獲取。重試次數(shù)和間隔的設(shè)置需要小心,重試太頻繁,容易把服務(wù)器打死.;時(shí)間間隔太大,又會(huì)阻塞后續(xù)處理步驟。5~10分鐘是一個(gè)合適的重試間隔區(qū)間。

手動(dòng)導(dǎo)入渠道對(duì)賬單:要設(shè)計(jì)導(dǎo)入入口,導(dǎo)入成功后任務(wù)狀態(tài)也要做相應(yīng)的變更。

3. 下載文件

技術(shù)實(shí)現(xiàn)上可以做成工廠模式,不同的支付渠道有不同的下載類,如果是http接口將文件寫入到對(duì)賬單,如果是ftp服務(wù)器,將服務(wù)器中的對(duì)賬單下載到本地帶解析的目錄中。主要涉及的代碼ftp工具類、http(s)工具類,相關(guān)IO讀寫。

4. 判斷來(lái)源渠道

獲取到上游對(duì)賬單文件后,很有可能多個(gè)渠道的對(duì)賬單在同一個(gè)SFTP地址,根據(jù)文件名匹配到對(duì)應(yīng)的對(duì)賬任務(wù),文件名一般會(huì)包含賬單時(shí)間、渠道商戶號(hào),然后再執(zhí)行下一步。

五、文件解析

1. 解析文件

解析文件主要是將下載的對(duì)賬文件解析成我們可以對(duì)賬的數(shù)據(jù)類型并且入庫(kù)。

解析的文件不同渠道有不同的類型,因此也可以設(shè)計(jì)成不同的解析模板,使用工廠模式將不同格式的文件解析成可以對(duì)賬的統(tǒng)一數(shù)據(jù)類型。

解析的文件類型一般包括:json、text、cvs、excle等,另外部分銀行會(huì)對(duì)賬單做加密或者提供zip打包的格式,這里就需要額外開發(fā)zip工具類和加解密工具類進(jìn)行處理。

對(duì)賬文件中包含的主要信息有:商戶訂單號(hào)、交易流水號(hào)、交易時(shí)間、支付時(shí)間、付款方、交易金額、交易類型、交易狀態(tài)這些字段。

2. 轉(zhuǎn)換入庫(kù)

每個(gè)渠道的賬單格式都不盡相同, 在得到賬單后,下一步是對(duì)賬單做標(biāo)準(zhǔn)化處理,這樣軋帳以及后續(xù)工作就可以統(tǒng)一處理了。

標(biāo)準(zhǔn)化后的賬單數(shù)據(jù)可以放在文件系統(tǒng)或者數(shù)據(jù)庫(kù)中,這取決于交易數(shù)據(jù)量;每天百萬(wàn)以上的量,還是使用文件系統(tǒng),比較合適,數(shù)據(jù)庫(kù)操作相對(duì)比較慢,也浪費(fèi)資源。

基于文件系統(tǒng)的標(biāo)準(zhǔn)化涉及如下內(nèi)容:

  • 文件格式標(biāo)準(zhǔn)化統(tǒng)一使用csv或者json或者xml格式,如果是使用hadoop或者spark來(lái)對(duì)賬,也可以使用csv。
  • 文件存儲(chǔ)統(tǒng)一化文件目錄,文件名都需要遵循統(tǒng)一命名規(guī)范。

六、對(duì)賬單處理

1. 獲取對(duì)方對(duì)賬單

將事前準(zhǔn)備的上游對(duì)賬單標(biāo)準(zhǔn)文件放入緩沖對(duì)賬池。

2. 獲取我方對(duì)賬單

本地交易記錄的準(zhǔn)備,總的來(lái)說(shuō)有如下方法:

啥都不做,直接用訂單表的原始數(shù)據(jù):鑒于大部分系統(tǒng)使用的是MySQL,這也意味著在MySQL上做對(duì)賬。對(duì)賬時(shí)需要大量的數(shù)據(jù)查找工作,必然會(huì)影響線上業(yè)務(wù)。在數(shù)據(jù)規(guī)模較大,比如超過(guò)100萬(wàn)時(shí),就不太合適了。

使用備庫(kù)來(lái)執(zhí)行對(duì)賬:這樣既簡(jiǎn)單,也不影響線上業(yè)務(wù),這是典型的空間換時(shí)間的做法。

采用分表分庫(kù)對(duì)賬:如果業(yè)務(wù)大到需要分表分庫(kù)才能處理,那對(duì)賬數(shù)據(jù)準(zhǔn)備也不一樣。

3. 逐一匹配

前文有提到對(duì)賬方式有三種,不對(duì)賬、以渠道為準(zhǔn)、以平臺(tái)為準(zhǔn),大部分的情況下的對(duì)賬方式都以渠道為準(zhǔn),信息流的傳遞方向,支付成功結(jié)果是由上游渠道通知平臺(tái)的,平臺(tái)很有可能會(huì)因網(wǎng)絡(luò)或系統(tǒng)問(wèn)題而沒(méi)有收到通知。

一般按照交易金額、交易狀態(tài)、手續(xù)費(fèi)金額逐一匹配,對(duì)賬方式選擇以渠道為準(zhǔn)的處理邏輯為例:

1)交易金額不匹配:記入異常訂單。

2)交易狀態(tài)不匹配:若上游為支付成功,我方為未支付或支付失敗,則以上游為準(zhǔn)。

  • 若我方訂單為支付成功,上游只會(huì)推送支付成功的訂單為對(duì)賬單,上游對(duì)賬單不存在的情況,將我方訂單記入為掛賬訂單;
  • 若上游對(duì)賬單存在,我方不存在的情況,記入異常訂單。

3)手續(xù)費(fèi)金額不匹配:記入異常訂單。

4. 掛銷賬處理

常會(huì)存在因日切時(shí)間點(diǎn)不一致或網(wǎng)絡(luò)延時(shí)等情況,導(dǎo)致我方平臺(tái)訂單時(shí)間與上游渠道時(shí)間不一致,同一個(gè)訂單在渠道交易時(shí)間是1月1號(hào),但在平臺(tái)是1月2號(hào)。

  1. 掛賬,對(duì)賬時(shí)若上游無(wú)我方有,訂單放入掛賬訂單中。
  2. 銷賬,若匹配中掛賬訂單匹配上了,記錄為當(dāng)日平臺(tái)賬單,掛銷賬狀態(tài)改為已銷賬。

七、差錯(cuò)處理

關(guān)于差錯(cuò)流程,每個(gè)系統(tǒng)的業(yè)務(wù)特性、運(yùn)營(yíng)團(tuán)隊(duì)流程、公司財(cái)務(wù)管理辦法不一樣,不能生搬硬套,但原則是一樣的,所有的異常訂單的報(bào)銷賬必須有理有據(jù),多重審核。

1. 異常原因

(1)若出現(xiàn)訂單金額不一致的情況,一般是平臺(tái)調(diào)用上游交易接口時(shí),雙方字段的定義不匹配導(dǎo)致的。

(2)若出現(xiàn)手續(xù)費(fèi)金額不一致的情況,一般是平臺(tái)手續(xù)費(fèi)計(jì)算規(guī)則和上游不匹配導(dǎo)致的,差額不會(huì)太大,可以設(shè)計(jì)閥值若在可以接受的范圍類不計(jì)為異常。

(3)若出現(xiàn)上游對(duì)賬單存在,平臺(tái)訂單不存在的情況,通常是有第三方繞過(guò)平臺(tái)系統(tǒng)與上游系統(tǒng)發(fā)生支付或退款交易。需要及時(shí)核查是否存在交易密鑰泄露或被繞過(guò)商戶去上游系統(tǒng)平臺(tái)操作。

2. 修正

選擇以平臺(tái)為準(zhǔn)或以上游為準(zhǔn),修改訂單金額、訂單狀態(tài)、手續(xù)費(fèi)金額。此時(shí)寫入修正原因很重要,便于后期業(yè)務(wù)追蹤考求。

3. 平賬

將平臺(tái)異常訂單狀態(tài)改為平賬,并將平賬時(shí)的時(shí)間作為賬單時(shí)間,合入至平臺(tái)賬單。平臺(tái)會(huì)根據(jù)平臺(tái)賬單計(jì)算渠道分潤(rùn)金額和商戶結(jié)算金額。

八、業(yè)務(wù)規(guī)則系統(tǒng)化

最后,每個(gè)平臺(tái)產(chǎn)品細(xì)節(jié)都會(huì)有其特定的業(yè)務(wù)規(guī)則,就不具體說(shuō)明平臺(tái)頁(yè)面和和平臺(tái)操作功能,筆者不做詳情說(shuō)明。以上業(yè)務(wù)規(guī)則系統(tǒng)化,系統(tǒng)流程圖如下,讀者可以結(jié)合自己平臺(tái)業(yè)務(wù)情況提取細(xì)化。

 

本文由 @Jamie Gao 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 請(qǐng)問(wèn):確認(rèn)資金流應(yīng)收款和信息流平賬賬單金額一致
    這句話比較的兩個(gè)對(duì)象具體是指什么呢,可以解釋一下嗎,沒(méi)有看懂

    來(lái)自浙江 回復(fù)
  2. 您好,關(guān)于4中的掛賬,是否可以將掛賬的單放入下一天的匹配中進(jìn)行嘗試銷賬?

    回復(fù)
  3. 我來(lái)啦

    來(lái)自廣東 回復(fù)
  4. 邏輯很清晰

    來(lái)自廣東 回復(fù)
  5. 樓主什么時(shí)候分享下結(jié)算系統(tǒng)的設(shè)計(jì),期待中~

    來(lái)自浙江 回復(fù)
    1. 同樣期待~

      來(lái)自福建 回復(fù)