支付對賬三部曲之資金對賬系統(tǒng)設(shè)計篇
上篇文章我們講到千萬級對賬系統(tǒng)整體的系統(tǒng)架構(gòu)以及完整的業(yè)務(wù)流程,那今天這篇文章我們來聊下對賬結(jié)束之后流程 - 資金核對。
何為資金核對?
上篇文章聊到對賬,其實屬于業(yè)務(wù)明細對賬,即我方交易訂單與渠道明細的訂單的核對,這個對賬過程需要逐筆核對。核對成功,代表雙方的訂單數(shù)據(jù)都沒有問題。
既然成功了,對方需要把這筆錢給到我們。但是實際情況下,可能是為一些問題,導(dǎo)致這筆錢最后沒給我們。
所以這個過程我們也需要核對,這個核對過程就被稱為資金核對。
那資金核對,需要拿應(yīng)收應(yīng)付與實收實付參與核對,那什么是應(yīng)收應(yīng)付?什么是實收實付?兩邊數(shù)據(jù)怎么獲取呢?
先不用急,下面文章會詳細解釋,我們先來看下資金核對整體流程。

資金核對整體流程其實與業(yè)務(wù)明細對賬流程類似,分為三部分:
資金數(shù)據(jù)收集 資金數(shù)據(jù)核對 資金數(shù)據(jù)差錯梳理
資金核對過程,核對某個渠道某個商戶號實收實付與應(yīng)收應(yīng)付的數(shù)以參與核對數(shù)量會很小,所以整個過程都在對賬系統(tǒng)內(nèi)完成。
資金數(shù)據(jù)收集
上面我們說過資金核對的數(shù)據(jù)分為兩部分:
應(yīng)收應(yīng)付 實收實付
那資金收集這一部分,其實就是對應(yīng)這部分數(shù)據(jù)的收集。
實收實付數(shù)據(jù)收集
實收實付的錢,其實就是對方支付機構(gòu)/清算機構(gòu)清算給我們結(jié)算款,那這個實際對應(yīng)的是『銀行』賬戶實際資金的變動。
『銀行』賬戶分為兩種,如果是一般公司,那這里『銀行』賬戶指的就是某家銀行對公賬戶。
那如果是支付公司,這里的『銀行』賬戶指的是備付金賬戶。
這兩類賬戶分別有兩種不同數(shù)據(jù)處理措施。
實收實付數(shù)據(jù)收集之后,存入銀行資金表,表結(jié)構(gòu)如下 :

關(guān)鍵字段如下:
unique_id 流水ID,用于標識唯一資金流水信息 source ?用來標記資金來源 settle_date 資金結(jié)算賬期 bank_no 銀行賬號 debit_amount 借記金額 credit_amount 貸記金額 channel_code 渠道編碼 remark 摘要信息 opposite_bank_no 對手賬號 merchant_no 渠道商戶號
channel_code 與 merchant_no 一般會有多個存在,所以我們在實收實付數(shù)據(jù)收集過程中,需要根據(jù)一定匹配規(guī)則,匹配指定的 channel_code 與 merchant_no。
另外上面 settle_date 為資金結(jié)算賬期,這個跟交易發(fā)生日期并不相同。
資金結(jié)算賬期一般為 T+1,那交易賬期為 T 日的交易,資金結(jié)算過來賬期將會為 T+1。
這么看比較難以理解,舉個例子,2022 年 1 月 7 日(周五)發(fā)生一筆 100 w 的交易,這筆交易賬期就是 2021 年 1 月 7 日。
由于這個渠道資金結(jié)算周期是 T+1,也就是說 1 月 7 日,1 月 8 日,1 月 9 日的交易資金,將會在 1 月 10 日統(tǒng)一結(jié)算。
所以說這里資金結(jié)算賬期將會為 2022 年 1 月 10 日。
銀行賬戶數(shù)據(jù)收集
銀行賬戶實際資金變動,最終都會體現(xiàn)在銀行結(jié)算賬單上,那我們可以通過下載結(jié)算賬單,解析獲取實際變動資金信息。
這種方式需要運營人員手動下載銀行賬單,再上傳賬單到對賬系統(tǒng),需要一定人工參與。
如果銀行賬戶不多,可以參用這種方式。
那如果銀行賬戶較多,可以考慮對接銀企直連,這樣可以通過對賬系統(tǒng)自動拉取資金變動詳情,減少人工參與。
下面以手動下載對賬單為例,不同的銀行下載資金結(jié)算賬單格式都不太相同,系統(tǒng)上需要對這種情況做自適應(yīng)配置。
招行資金賬單格式如下(部分字段未顯示):

我們需要從賬單上收集如下數(shù)據(jù):
交易日期 銀行賬號 借方金額,可以理解為該銀行賬號轉(zhuǎn)出的金額 貸方金額,可以理解為該銀行賬號轉(zhuǎn)入的金額 摘要,轉(zhuǎn)賬附言 流水號,這筆轉(zhuǎn)賬唯一標識號 銀行余額
如果每個三方渠道綁定結(jié)算銀行賬戶信息都不一樣,那我們可以使用銀行賬號,區(qū)分不同三方渠道應(yīng)收應(yīng)付數(shù)據(jù)。
但是實際操作過程中,我們可能使用同一個銀行賬戶接受多個不同三方渠道實收實付數(shù)據(jù) ,所以這里我們需要有一個匹配規(guī)則,當(dāng)某條流水匹配上這個規(guī)則的時候,那么這條流水就是某個三方渠道實收實付數(shù)據(jù)。
由于每個三方渠道資金轉(zhuǎn)入時,銀行流水摘要都不太一樣。有些三方渠道,比如支付寶、微信可以設(shè)置轉(zhuǎn)入銀行的附言。
舉個例子,支付寶結(jié)算款我們可以設(shè)置為 支付寶xxx(商戶號4位尾數(shù))賬戶往來款。
微信結(jié)算款我們可以設(shè)置為 微信xxxx(商戶號4位尾數(shù))賬戶往來款。
通過這種方式,我們使用銀行摘要或則備注,當(dāng)做匹配規(guī)則。如果匹配成功,將其轉(zhuǎn)換為某個渠道某個商戶號實收實付數(shù)據(jù)。
備付金賬戶數(shù)據(jù)收集
上面通過銀行資金結(jié)算單的方式,只適合非支付機構(gòu)。
如果是支付機構(gòu),由于目前所有支付機構(gòu)資金集中存管在人行的備付金賬戶,簡稱 ACS 賬戶,所以沒辦法使用上面這種方式。
不過好在目前人行給支付機構(gòu)開通大額系統(tǒng)的權(quán)限,那所有通過大額系統(tǒng)出入的金額,支付機構(gòu)側(cè)都可以收到銀聯(lián)或網(wǎng)聯(lián)轉(zhuǎn)發(fā)的 ACS 動賬通知。

通過這種方式,我們可以自動監(jiān)聽 ACS 的動賬消息,自動收集應(yīng)收應(yīng)付數(shù)據(jù)。
人行 ACS 動賬消息有多種不同類型的,支付機構(gòu)結(jié)算款信息,網(wǎng)聯(lián)/銀聯(lián)會通過調(diào)用 hvps.141.001.01-即時轉(zhuǎn)賬報文發(fā)起結(jié)算,
所以這里我們只需要監(jiān)聽該報文類型即可。
我們從這個報文數(shù)據(jù)收集到以下數(shù)據(jù):
交易日期 消息流水號 備付金賬號 借記金額 貸記金額 對方賬號 備付金余額 摘要
每個渠道發(fā)起 ACS 動賬摘要信息都不太相同,所以我們也可以使用摘要信息去做匹配,將其轉(zhuǎn)換為某個渠道某個商戶號實收實付數(shù)據(jù)。
一些典型 ACS 渠道摘要如下:
銀聯(lián)支付寶:支付寶條碼清算xxxx(商戶號)_0106(賬期) 網(wǎng)聯(lián)微信:微信條碼清算xxxx(商戶號)_0106(賬期) 銀聯(lián)無卡支付:0105(賬期)銀行卡清算
這里需要說明一下交易資金流水賬期,一般來說資金結(jié)算周期是 T+1,那么一般都是在 T+1 日那天結(jié)算過來。
也就說我們收到 ACS 動賬消息中交易日期就可以當(dāng)做是資金流水的賬期。銀聯(lián)/網(wǎng)聯(lián)微信、支付寶就是這種情況。
舉個例子,2022 年 1 月 7 日交易結(jié)算款,會在 2022 年 1 月 10 號結(jié)算。也就說 2022 年 1 月 10 號將會收到一筆結(jié)算款 ACS 動賬消息,那我們就可以直接把這個 ACS 動賬消息中賬期當(dāng)做資金結(jié)算流水的賬期。
但是有些渠道就比較特殊,比如網(wǎng)聯(lián)銀行卡。
網(wǎng)聯(lián)銀行卡結(jié)算周期也是 T+1,但是 T 日會有兩個結(jié)算場次。
T日9點的場次包含的是T-1日15:00到T日9:00到交易批次。T日15點的場次包含的是T日9:00到T日15:00到交易批次。其中9:00提供的交易批次算作第二場次。

那這里網(wǎng)聯(lián)銀行卡資金賬期就不能直接使用 ACS 動賬消息中賬期,我們需要經(jīng)過計算,使用 ACS 動賬消息賬期經(jīng)過 T+1 計算。
舉個例子,2022 年 1 月 7 日收到網(wǎng)聯(lián)銀行卡 ACS動賬消息賬期是 2022 年 1 月 7 日,經(jīng)過 T+1 計算,網(wǎng)聯(lián)銀行資金賬期為 2022 年 1 月 10 日。
應(yīng)收實付數(shù)據(jù)收集
應(yīng)收應(yīng)付的數(shù)據(jù),跟據(jù)對方支付機構(gòu)提供的清算文件軋差計算匯總得出。
應(yīng)收應(yīng)付表結(jié)構(gòu)如下:

關(guān)鍵字段如下:
unique_id 唯一 id,內(nèi)部自己生成 settle_date 應(yīng)清算的賬期 bank_biz_date 業(yè)務(wù)賬期 biz_type 業(yè)務(wù)類型 trade_num 交易筆數(shù) channel_code 渠道編碼 merchant_no 商戶號 remark 備注
這里有兩個賬期,bank_biz_date 代表業(yè)務(wù)賬期,settle_date 應(yīng)清算的賬期。
settle_date 應(yīng)清算的賬期是 bank_biz_date 代表業(yè)務(wù)賬期經(jīng)過賬期類型(T+1/D+1)經(jīng)過之后生成。
舉個例子, 如果渠道賬期類型是 T+1,那么如果應(yīng)計算賬期是2022 年 1 月 10 號(周一), 那數(shù)據(jù)如下所示:
| 業(yè)務(wù)賬期 | 應(yīng)清算賬期 | 業(yè)務(wù)類型 |
|---|---|---|
| 20220107 | 20220110 | 支付 |
| 20220108 | 20220110 | 支付 |
| 20220109 | 20220110 | 支付 |
下面數(shù)據(jù)匯總的數(shù)據(jù),我們根據(jù)應(yīng)清算賬期就可以查找這個賬期內(nèi)所有明細數(shù)據(jù)。
清算文件有兩種類型,第一種對賬明細文件就是清算文件,比如微信、支付寶。
還有一種就是提供對賬明細文件,也提供清算文件,比如網(wǎng)聯(lián)銀行卡,這種就需要使用清算文件計算。
對賬明細文件應(yīng)收應(yīng)付數(shù)據(jù)匯總
如果微信、支付寶這類對賬明細文件就是清算文件,這種比較簡單,我們只需要解析對賬文件,軋差匯總數(shù)據(jù)即可。
這一步可以放到對賬明細業(yè)務(wù)流程中,按照業(yè)務(wù)類型匯總得出以下數(shù)據(jù):
| 業(yè)務(wù)類型 | +/-(收入/支出) |
|---|---|
| 支付 | + |
| 支付手續(xù)費 | - |
| 退款 | - |
| 退款手續(xù)費 | + |
| 提現(xiàn) | - |
| 提現(xiàn)手續(xù)費 | - |
| 退匯 | + |
清算明細文件應(yīng)收應(yīng)付數(shù)據(jù)匯總
網(wǎng)聯(lián)銀行卡這類可以單獨提供清算文件的渠道,我們就需要使用清算文件匯總計算。
這里以網(wǎng)聯(lián)銀行卡為例,網(wǎng)聯(lián)會在 T 日日終兩個小時之后生成資金結(jié)算信息,文件中包含 T-1 日15 點到15 點交易相關(guān)信息。
清算文件格式如下:

樣例文件如下:

我們可以根據(jù)上面分項列表統(tǒng)計不同業(yè)務(wù)類型的匯總金額。
資金數(shù)據(jù)核對
應(yīng)收應(yīng)付與實收實付兩端數(shù)據(jù)都收集完成之后,我們就可以開始資金數(shù)據(jù)核對。
這個核對過程相比對賬核對就比較簡單。
我們可以根據(jù)資金賬期+渠道編碼+渠道商戶號查找兩端數(shù)據(jù)。
舉個例子,微信渠道資金結(jié)算賬期 20220111應(yīng)收應(yīng)付明細數(shù)據(jù)如下:
| 業(yè)務(wù)賬期 | 資金賬期 | 業(yè)務(wù)類型 | 金額 |
|---|---|---|---|
| 20220110 | 20220111 | 支付 | 100w |
| 20220110 | 20220111 | 支付手續(xù)費 | 20w |
| 20220110 | 20220111 | 退款 | 10w |
| 20220110 | 20220111 | 退款手續(xù)費 | 2w |
軋差計算應(yīng)收應(yīng)付金額如下:
應(yīng)收應(yīng)付金額=支付金額-支付手續(xù)費-退款+退款手續(xù)費=100w-20w-10w+2w=72w
再查找20220111實收實付明細數(shù)據(jù)如下:
| 資金賬期 | 借記金額 | 貸記金額 |
|---|---|---|
| 20220111 | 0w | 72w |
軋差計算實收實付金額=貸記金額-借記金額=72w-0w=72w
如果兩端軋差之后數(shù)據(jù)相同,那么資金核對成功。
資金數(shù)據(jù)差錯處理
有些情況應(yīng)收應(yīng)付金額與實收實付金額不等,核對不能成功,這種情況排除系統(tǒng)問題之后,一般都是當(dāng)天賬期實收實付金額導(dǎo)致。
這種情況可能原因是,比如銀聯(lián)無卡渠道,可能因為用戶投訴盜卡,銀聯(lián)側(cè)將這筆錢退給用戶。這就導(dǎo)致當(dāng)天結(jié)算款缺少一部分。
網(wǎng)聯(lián)銀行卡出金退匯,這就會導(dǎo)致第二天清算款增加。
這些情況比較多,需要運營人員排查這部分原因。運營人員排查到具體原因之后,可以在后臺增加差錯調(diào)整記錄。

差錯調(diào)整記錄增加之后,實收實付金額將會重新計算:
實收實付金額=實收實付金額-借記調(diào)整金額+貸記調(diào)整金額
如果調(diào)整之后兩端金額相等,資金核對成功。
總結(jié)
資金核對過程相比對賬核對,不管業(yè)務(wù)流程,還是系統(tǒng)設(shè)計上都簡單很多。
但是資金核對業(yè)務(wù)規(guī)則相對來說還是表復(fù)雜。這里對于剛接觸的同學(xué),重點了解資金核對業(yè)務(wù)規(guī)則,資金結(jié)算賬期 T+1 計算規(guī)則,這些都比較繞。
講到這里,我們以及了解業(yè)務(wù)明細對賬以及資金對賬,后面我們再來聊下對賬三部曲最后一部-差錯處理。
參考
http://www.woshipm.com/pd/4427117.html
