跨行清算系統(tǒng)的實(shí)現(xiàn)原理
最近看了很多銀聯(lián)方面的清算系統(tǒng)的設(shè)計(jì)原理,對(duì)于跨行清算系統(tǒng)有了很大的了解,寫這篇文章的目的是在于從一個(gè)程序員的角度去思考一個(gè)跨行清算系統(tǒng)的架構(gòu)是如何實(shí)現(xiàn)的以及整個(gè)過(guò)程中我們有哪些思想是可以借鑒的。由于金融里面涉及到太多的專業(yè)名詞,包括借貸,備付金,頭寸,調(diào)撥等等,這里不會(huì)涉及到這些,取而代之的是以大家可以理解的概念去解釋。
下面簡(jiǎn)單的介紹一下兩種跨行清算系統(tǒng)的實(shí)現(xiàn)原理以及特點(diǎn)。一種跨清算系統(tǒng)是我們最熟悉的銀聯(lián),還有一種是越來(lái)越流行的第三方支付系統(tǒng),比較典型的是快錢。
首先來(lái)拿生活中的一個(gè)非常常見(jiàn)的例子來(lái)說(shuō)明跨行清算的整個(gè)過(guò)程,這里面不涉及交易費(fèi)等其他概念。
跨行取款流程
張三是工行的持卡人,他需要取現(xiàn)金,但是找不到工行的ATM機(jī)器,發(fā)現(xiàn)附近有建行的ATM機(jī)器,他只能去建行取款,整個(gè)過(guò)程就是跨行清算的過(guò)程,我們以這個(gè)場(chǎng)景為例,分析一下業(yè)務(wù)流程,具體交互流程見(jiàn)下面一張圖。

工行持卡人張三在建行ATM機(jī)器取款100,ATM請(qǐng)求建行主機(jī),由于是工行的卡,建行不識(shí)別,只能請(qǐng)求工行去處理,工行識(shí)別持卡人賬戶并扣款100,然后通知建行,建行則通知atm吐錢。
這里整個(gè)系統(tǒng)要解決兩個(gè)問(wèn)題:
1 建行如何與工行通信
2 建行和工行之間如何清算,如上圖結(jié)果,工行欠建行100.
整個(gè)系統(tǒng)的分析基于以上兩個(gè)問(wèn)題,下面首先解決是通信問(wèn)題
跨行通信的兩種模式
我們先假設(shè)工行提供接口,只需要建行發(fā)送指約定格式的報(bào)文,即可于工行通信,這種相當(dāng)于建行直接通過(guò)接口方式與工行通信。如果是這種方式,只能解決建行和工行的單向通信,如果工行和建行通信,則工行要發(fā)送建行指定的通信報(bào)文格式??墒谴蠹蚁胂?,如果銀行更多怎么辦,下面是三家銀行間的通信

當(dāng)有三家銀行的時(shí)候,通信鏈路就有3*2=6條,當(dāng)銀行越來(lái)越多的時(shí)候,這種點(diǎn)對(duì)點(diǎn)的通信變的越來(lái)越復(fù)雜,每新增一家銀行,他要做之前銀行都要做的很多重復(fù)性的勞動(dòng),這樣的成本非常高,也不經(jīng)濟(jì),那么必須出現(xiàn)一個(gè)網(wǎng)絡(luò),它能夠接入所有的銀行,新的銀行只需要接入這個(gè)網(wǎng)絡(luò),就可以和其他所有的銀行進(jìn)行通信。
先把這個(gè)網(wǎng)絡(luò)成為通信網(wǎng)絡(luò),這種通信網(wǎng)絡(luò)有兩種方式可以連接所有的銀行
- 1 這個(gè)通信網(wǎng)絡(luò)定義標(biāo)準(zhǔn)接口,所有的銀行都必須實(shí)現(xiàn)這個(gè)通信網(wǎng)絡(luò)定義的api,新的銀行如果想要接入這個(gè)通信網(wǎng)絡(luò),必須實(shí)現(xiàn)通信接口約定的協(xié)議。簡(jiǎn)稱公共接口模式
- 2 這個(gè)通信網(wǎng)絡(luò)主動(dòng)去連接所有的銀行的接口,把所有銀行的接口信息都接入里面,就像一個(gè)適配器,新的銀行如果想要接入這個(gè)通信網(wǎng)絡(luò),這個(gè)通信網(wǎng)絡(luò)必須主動(dòng)聯(lián)系銀行,按照銀行的接口協(xié)議實(shí)現(xiàn)通信,簡(jiǎn)稱適配器模式。
下面一幅圖演示了這兩種模式的不同:

對(duì)于這兩模式,主要博弈就在于誰(shuí)強(qiáng)誰(shuí)弱。顯然第三方支付公司屬于適配器模式,需要一家一家銀行去接入,至于銀聯(lián),個(gè)人認(rèn)為應(yīng)該是第一種模式,這種對(duì)于銀聯(lián)這種需要穩(wěn)定的系統(tǒng)來(lái)說(shuō)是最具有優(yōu)勢(shì)的。
跨行清算保證金模式
解決了通信問(wèn)題,下面就看如何解決資金的清算問(wèn)題。一種簡(jiǎn)單的方案就是工行在建行里面開(kāi)設(shè)一個(gè)保證金賬戶,用這個(gè)賬戶去償還在整個(gè)跨行交易中應(yīng)付給建行的資金。

從上圖來(lái)看,這種方案確實(shí)可行。只需要工行在建行里面放足額的保證金,就可以滿足跨行的費(fèi)用。但是這里面實(shí)際上存在非常多的問(wèn)題,
- 1 如果銀行越來(lái)也多,每個(gè)銀行都要在其他銀行存錢,太不經(jīng)濟(jì)了
- 2 保證金需要放多少資金?如果一直都沒(méi)有發(fā)生跨行交易,工行就虧大發(fā)了
- 3 如果保證金不夠怎么辦?交易失敗還是記應(yīng)收款?
對(duì)于第一個(gè)問(wèn)題假設(shè)銀行越來(lái)越多,會(huì)導(dǎo)致工行需要在其他每個(gè)銀行里面都開(kāi)設(shè)保證金賬戶(見(jiàn)下圖),是一個(gè)很不經(jīng)濟(jì)的方案。
說(shuō)明這個(gè)在其他銀行存保證金的方案是不可行的,和之前通信的問(wèn)題一樣,是不是可以把所有的銀行保證金賬戶單獨(dú)管理起來(lái),統(tǒng)一放置在一起,方便各個(gè)銀行之間的清算。我們暫時(shí)把這個(gè)系統(tǒng)稱之為保證金系統(tǒng)。
保證金系統(tǒng)
保證金就是方便各個(gè)銀行之間的清算,需要單獨(dú)由一個(gè)系統(tǒng)進(jìn)行管理,解決了跨行之間保證金存放的問(wèn)題。每個(gè)銀行只需要在保證金系統(tǒng)中存點(diǎn)錢就可以了。保證金系統(tǒng)也有兩種模式。先看看比較好理解的第一種模式:

在這種模式下,銀行先把一部分錢存放在保證金系統(tǒng)里面,同時(shí)銀行內(nèi)部建立一個(gè)虛擬賬戶,記錄存放了多少錢,主要是方便對(duì)賬,萬(wàn)一這個(gè)保證金系統(tǒng)錢算錯(cuò)了怎么辦。你可以想象一下,銀行是很小氣的,為啥愿意把錢存放到這保證金系統(tǒng)里面,這部分錢干啥不好,能夠銀行這么干的只有國(guó)家了,這個(gè)系統(tǒng)就是央行的備付金管理系統(tǒng)。每個(gè)新增的銀行都要存一份錢在這里。
另外一種方案是倒過(guò)來(lái)思考,既然沒(méi)有牛逼的央行作支撐,那可以在每個(gè)商業(yè)銀行都建立一個(gè)賬戶,用這個(gè)賬戶負(fù)責(zé)和銀行進(jìn)行清算。每新增一家銀行,就在那個(gè)銀行里面開(kāi)一個(gè)保證金賬戶。

這兩種方式有本質(zhì)的不同,一個(gè)是銀行把資金的一部分轉(zhuǎn)出到保證金,銀行建立虛擬賬戶和保證金里面真實(shí)的資金映射。一個(gè)是保證金系統(tǒng)把資金轉(zhuǎn)出到各個(gè)銀行,自己內(nèi)部建立一個(gè)虛擬賬戶和銀行中真實(shí)的資金賬戶進(jìn)行映射。這個(gè)間接的銀行了后續(xù)的對(duì)賬機(jī)制,這里先不敘述。
所有的第三方支付公司跨行清算的流程都是第二種方式,只有國(guó)家級(jí)清算公司(比如銀聯(lián))是第一種方式,這是一種資源和權(quán)力上的不平等,不過(guò)是可以理解的。
清算系統(tǒng)
保證金系統(tǒng)解決了保證金存放的問(wèn)題,接下來(lái)就是解決如何清算的問(wèn)題。假設(shè)保證金轉(zhuǎn)賬是實(shí)時(shí)的,就要面對(duì)上面說(shuō)的問(wèn)題,保證金不夠的情況下,跨行交易是成功還是失敗。這是一個(gè)業(yè)務(wù)上問(wèn)題,有很多種解決方案,我們暫不說(shuō)。從技術(shù)上來(lái)講,如果每一筆交易都要保證金實(shí)時(shí)記賬,那么保證金系統(tǒng)的負(fù)載太大,事務(wù)如何保證等等一些列的問(wèn)題。所以一個(gè)最簡(jiǎn)單的方案就是:一天結(jié)算一次。
每天由一個(gè)系統(tǒng)記錄這些跨行交易信息,匯總出來(lái),統(tǒng)一記賬。這樣一天只需要調(diào)用一次保證金系統(tǒng)即可。那么整個(gè)清算過(guò)程則是下面的流程:
- 1 系統(tǒng)T日發(fā)生建行和工行的跨行交易100

- 2 清算系統(tǒng)T+1日匯總T日工行和建行之間發(fā)生的交易明細(xì)數(shù)據(jù),并且發(fā)這些數(shù)據(jù)發(fā)給建行和工行進(jìn)行確認(rèn)

- 3 工行建行分別對(duì)明細(xì)對(duì)賬確認(rèn)之后,通知清算系統(tǒng)確認(rèn)交易明細(xì)無(wú)誤,清算系統(tǒng)開(kāi)始清算,調(diào)用保證金支付系統(tǒng)轉(zhuǎn)賬。
- 4 清算完成之后,工行和建行分別獲取保證金系統(tǒng)的真實(shí)金額和自身系統(tǒng)內(nèi)部的映射賬戶進(jìn)行余額對(duì)賬。

清算中心最主要干得事情就是統(tǒng)計(jì)誰(shuí)欠誰(shuí)多少錢,以及觸發(fā)保證金系統(tǒng)的調(diào)撥操作。
對(duì)賬流程
對(duì)賬包括兩個(gè)部分,一個(gè)是跨行交易明細(xì)的對(duì)賬以及保證金余額的對(duì)賬。
首先要思考的是:對(duì)賬是誰(shuí)發(fā)起的 ? 這個(gè)是了解對(duì)賬的本質(zhì)。
我們舉生活中的一個(gè)例子,我們把錢投資到一個(gè)人,那個(gè)人負(fù)責(zé)公司的日常運(yùn)作。你肯定會(huì)主動(dòng)了解公司的賬務(wù),因?yàn)槟莻€(gè)是你的錢。對(duì)賬的發(fā)起人也是如此,對(duì)于銀聯(lián)的清算過(guò)程,對(duì)賬的發(fā)起者是商業(yè)銀行,因?yàn)槟惆彦X放在保證金系統(tǒng)里面,這是你的錢,你需要去關(guān)心這個(gè)的,銀聯(lián)可不關(guān)心這個(gè)。
對(duì)于另外一種保證金系統(tǒng),把錢放在各個(gè)銀行里面了,那么對(duì)賬的發(fā)起者就是這個(gè)保證金系統(tǒng)維護(hù)者了。目前普遍的第三方支付公司都是這個(gè)模式,所以他要找各個(gè)銀行要結(jié)果明細(xì)進(jìn)行對(duì)賬,確認(rèn)自己的資金安全無(wú)誤。
以上就是一個(gè)簡(jiǎn)單的跨行清算系統(tǒng)的雛形,從一個(gè)就簡(jiǎn)單的例子入手,說(shuō)明一個(gè)清算過(guò)程。目前銀聯(lián)的第三方支付公司的清算過(guò)程大致如此,但是實(shí)現(xiàn)細(xì)節(jié)遠(yuǎn)比這個(gè)復(fù)雜。但是一個(gè)基本的清算系統(tǒng)的本質(zhì)模型大體上是不會(huì)變的。當(dāng)然這個(gè)只是對(duì)于同幣種的清算,不同幣種或者虛擬貨幣的清算會(huì)涉及到匯率的問(wèn)題,這些就很復(fù)雜,有機(jī)會(huì)在研究一下,后續(xù)在分享。
PS:以上很多名詞都是自己的隨意寫的,里面很多專業(yè)名詞這里不提及,有興趣的可以自己去了解。
14年互聯(lián)網(wǎng)技術(shù)、產(chǎn)品、運(yùn)營(yíng)經(jīng)驗(yàn),前支付寶技術(shù)專家,互金創(chuàng)業(yè)公司CTO,大令保事業(yè)部總經(jīng)理。
在互金領(lǐng)域有比較強(qiáng)的產(chǎn)品以及運(yùn)營(yíng)經(jīng)驗(yàn),尤其擅長(zhǎng)用戶增長(zhǎng)、轉(zhuǎn)化、運(yùn)營(yíng)上的經(jīng)驗(yàn),兼具技術(shù)、產(chǎn)品、運(yùn)營(yíng)思維。
目前是云貓?jiān)鲩L(zhǎng)實(shí)驗(yàn)室 創(chuàng)始人
團(tuán)隊(duì)成員來(lái)自阿里等國(guó)內(nèi)知名互聯(lián)網(wǎng)公司,曾在互聯(lián)網(wǎng)金融、互聯(lián)網(wǎng)保險(xiǎn)、企業(yè)級(jí)SaaS等項(xiàng)目中負(fù)責(zé)用戶增長(zhǎng),團(tuán)隊(duì)管理的工作,擁有豐富的一線流量增長(zhǎng)經(jīng)驗(yàn)與實(shí)操手段。
歡迎關(guān)注我們,用技術(shù)驅(qū)動(dòng)增長(zhǎng)
浙公網(wǎng)安備 33010602011771號(hào)