在金融业务中跨行清算系统的实现过程
最近接觸到的金融系統比較多,對于銀行間結算概念比較模糊,搜索分析與總結,這里做一個總結,涉及到第三方文章的參照部分在文章末尾有鏈接。
這篇文章的目的是在于從一個程序員的角度去思考一個跨行清算系統的架構是如何實現的以及整個過程中我們有哪些思想是可以借鑒的。由于金融里面涉及到太多的專業名詞,包括借貸,備付金,頭寸,調撥等等,這里不會涉及到這些,取而代之的是以大家可以理解的概念去解釋。
下面簡單的介紹一下兩種跨行清算系統的實現原理以及特點。一種跨清算系統是我們最熟悉的銀聯,還有一種是越來越流行的第三方支付系統,比較典型的是微信,支付寶,快錢等。
首先來拿生活中的一個非常常見的例子來說明跨行清算的整個過程,這里面不涉及交易費等其他概念。
跨行取款流程?
張三是工行的持卡人,他需要取現金,但是找不到工行的ATM機器,發現附近有建行的ATM機器,他只能去建行取款,整個過程就是跨行清算的過程,我們以這個場景為例,分析一下業務流程,具體交互流程見下面一張圖。
?
?
工行持卡人張三在建行ATM機器取款100,ATM請求建行主機,由于是工行的卡,建行不識別,只能請求工行去處理,工行識別持卡人賬戶并扣款100,然后通知建行,建行則通知atm吐錢。
這里整個系統要解決兩個問題:
1 建行如何與工行通信
2 建行和工行之間如何清算,如上圖結果,工行欠建行100.
整個系統的分析基于以上兩個問題,下面首先解決是通信問題
?
跨行通信的兩種模式
我們先假設工行提供接口,只需要建行發送指約定格式的報文,即可于工行通信,這種相當于建行直接通過接口方式與工行通信。如果是這種方式,只能解決建行和工行的單向通信,如果工行和建行通信,則工行要發送建行指定的通信報文格式??墒谴蠹蚁胂?#xff0c;如果銀行更多怎么辦,下面是三家銀行間的通信
當有三家銀行的時候,通信鏈路就有3*2=6條,當銀行越來越多的時候,這種點對點的通信變的越來越復雜,每新增一家銀行,他要做之前銀行都要做的很多重復性的勞動,這樣的成本非常高,也不經濟,那么必須出現一個網絡,它能夠接入所有的銀行,新的銀行只需要接入這個網絡,就可以和其他所有的銀行進行通信。
先把這個網絡成為通信網絡,這種通信網絡有兩種方式可以連接所有的銀行
- 1 這個通信網絡定義標準接口,所有的銀行都必須實現這個通信網絡定義的api,新的銀行如果想要接入這個通信網絡,必須實現通信接口約定的協議。簡稱公共接口模式
- 2 這個通信網絡主動去連接所有的銀行的接口,把所有銀行的接口信息都接入里面,就像一個適配器,新的銀行如果想要接入這個通信網絡,這個通信網絡必須主動聯系銀行,按照銀行的接口協議實現通信,簡稱適配器模式。
? 下面一幅圖演示了這兩種模式的不同:
對于這兩模式,主要博弈就在于誰強誰弱。顯然第三方支付公司屬于適配器模式,需要一家一家銀行去接入,至于銀聯,個人認為應該是第一種模式,這種對于銀聯這種需要穩定的系統來說是最具有優勢的。
?
跨行清算保證金模式
?
解決了通信問題,下面就看如何解決資金的清算問題。一種簡單的方案就是工行在建行里面開設一個保證金賬戶,用這個賬戶去償還在整個跨行交易中應付給建行的資金。
?
從上圖來看,這種方案確實可行。只需要工行在建行里面放足額的保證金,就可以滿足跨行的費用。但是這里面實際上存在非常多的問題,
- 1 如果銀行越來也多,每個銀行都要在其他銀行存錢,太不經濟了
- 2 保證金需要放多少資金?如果一直都沒有發生跨行交易,工行就虧大發了
- 3 如果保證金不夠怎么辦?交易失敗還是記應收款?
對于第一個問題假設銀行越來越多,會導致工行需要在其他每個銀行里面都開設保證金賬戶(見下圖),是一個很不經濟的方案。
說明這個在其他銀行存保證金的方案是不可行的,和之前通信的問題一樣,是不是可以把所有的銀行保證金賬戶單獨管理起來,統一放置在一起,方便各個銀行之間的清算。我們暫時把這個系統稱之為保證金系統。
保證金系統?
保證金就是方便各個銀行之間的清算,需要單獨由一個系統進行管理,解決了跨行之間保證金存放的問題。每個銀行只需要在保證金系統中存點錢就可以了。保證金系統也有兩種模式。先看看比較好理解的第一種模式:
在這種模式下,銀行先把一部分錢存放在保證金系統里面,同時銀行內部建立一個虛擬賬戶,記錄存放了多少錢,主要是方便對賬,萬一這個保證金系統錢算錯了怎么辦。你可以想象一下,銀行是很小氣的,為啥愿意把錢存放到這保證金系統里面,這部分錢干啥不好,能夠銀行這么干的只有國家了,這個系統就是央行的備付金管理系統。每個新增的銀行都要存一份錢在這里。
另外一種方案是倒過來思考,既然沒有牛逼的央行作支撐,那可以在每個商業銀行都建立一個賬戶,用這個賬戶負責和銀行進行清算。每新增一家銀行,就在那個銀行里面開一個保證金賬戶。
這兩種方式有本質的不同,一個是銀行把資金的一部分轉出到保證金,銀行建立虛擬賬戶和保證金里面真實的資金映射。一個是保證金系統把資金轉出到各個銀行,自己內部建立一個虛擬賬戶和銀行中真實的資金賬戶進行映射。這個間接的銀行了后續的對賬機制,這里先不敘述。
所有的第三方支付公司跨行清算的流程都是第二種方式,只有國家級清算公司(比如銀聯)是第一種方式,這是一種資源和權力上的不平等,不過是可以理解的。
清算系統
?
保證金系統解決了保證金存放的問題,接下來就是解決如何清算的問題。假設保證金轉賬是實時的,就要面對上面說的問題,保證金不夠的情況下,跨行交易是成功還是失敗。這是一個業務上問題,有很多種解決方案,我們暫不說。從技術上來講,如果每一筆交易都要保證金實時記賬,那么保證金系統的負載太大,事務如何保證等等一些列的問題。所以一個最簡單的方案就是:一天結算一次。
每天由一個系統記錄這些跨行交易信息,匯總出來,統一記賬。這樣一天只需要調用一次保證金系統即可。那么整個清算過程則是下面的流程:
- 1 系統T日發生建行和工行的跨行交易100
- 2 清算系統T+1日匯總T日工行和建行之間發生的交易明細數據,并且發這些數據發給建行和工行進行確認
?
- 3 工行建行分別對明細對賬確認之后,通知清算系統確認交易明細無誤,清算系統開始清算,調用保證金支付系統轉賬。
- 4 清算完成之后,工行和建行分別獲取保證金系統的真實金額和自身系統內部的映射賬戶進行余額對賬。
?
清算中心最主要干得事情就是統計誰欠誰多少錢,以及觸發保證金系統的調撥操作。
?
對賬流程
?
對賬包括兩個部分,一個是跨行交易明細的對賬以及保證金余額的對賬。
首先要思考的是:對賬是誰發起的 ? 這個是了解對賬的本質。
我們舉生活中的一個例子,我們把錢投資到一個人,那個人負責公司的日常運作。你肯定會主動了解公司的賬務,因為那個是你的錢。對賬的發起人也是如此,對于銀聯的清算過程,對賬的發起者是商業銀行,因為你把錢放在保證金系統里面,這是你的錢,你需要去關心這個的,銀聯可不關心這個。
對于另外一種保證金系統,把錢放在各個銀行里面了,那么對賬的發起者就是這個保證金系統維護者了。目前普遍的第三方支付公司都是這個模式,所以他要找各個銀行要結果明細進行對賬,確認自己的資金安全無誤。
?
以上就是一個簡單的跨行清算系統的雛形,從一個就簡單的例子入手,說明一個清算過程。目前銀聯的第三方支付公司的清算過程大致如此,但是實現細節遠比這個復雜。但是一個基本的清算系統的本質模型大體上是不會變的。當然這個只是對于同幣種的清算,不同幣種或者虛擬貨幣的清算會涉及到匯率的問題,這些就很復雜,有機會在研究一下,后續在分享。
關于為什么微信支付是搶占銀行支付的地盤?
一般商戶用銀聯支付,流程是這樣的。首先,需要去做一個POS機用來收單,這個POS機是銀聯指定的廠商來做。而且這個POS機要指定一個銀行端口,比如說光大銀行,也就是說,最終商戶會通過其在光大銀行的賬號收到錢。消費者在T day在商戶的POS機上刷卡,消費者用的是五花八門的各個銀行的銀行卡。在消費者每次刷卡的時候,會把交易數據上傳到銀聯的交易系統。然后在T Day的晚上,銀聯的交易系統,或者說備用金系統,會對這一天的交易進行結算。動用各個銀行間的備用金,來進行資金的轉移。最終,在T+1 Day的時候,會把錢打到商戶光大銀行的賬號上。
?
而在使用微信支付的時候,我們還是考慮消費者使用各種各樣的綁定到微信的銀行卡付款,從商戶的角度來講,我們知道它有一個二維碼,那么那個二維碼,也是綁定了這個商戶在某個銀行的賬號,我們假設是光大銀行。其實跟銀聯類似,每天交易的時候,都是向支付寶的交易中心記錄交易信息,然后夜里進行清算,但是這里清算不同的地方在于,使用的是支付寶公司在各個銀行的備用金。最終錢會到商戶那個二維碼綁定的銀行的銀行賬號中國。
?
之前在淘寶買東西,其實走的都是銀聯支付,從淘寶的購物界面,跳轉到某個商業銀行的官網支付界面,還要安裝控件等。這個也是給銀聯的備用金系統提交交易信息,最后每天會進行清算。
?
而現在的快捷支付,走到是支付寶自己在各個銀行間的備用金系統,跟銀聯沒有關系了。
http://www.360doc.com/content/15/0723/12/7022730_486846878.shtml
總結
以上是生活随笔為你收集整理的在金融业务中跨行清算系统的实现过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看到绿坝暴力后的对国家信息安全的牢骚
- 下一篇: js鼠标双击的时候如何屏蔽单击事件呢