解密支付系統(tǒng),來看如何構(gòu)建理想的支付系統(tǒng)架構(gòu)
??點擊“博文視點Broadview”,獲取更多書訊

貨幣是人類發(fā)展史上一個極為重要的角色,它不僅是市場上物品交換的媒介,更是人類文明發(fā)展史上里程碑式的代表物。
幾千年前人類在貿(mào)易市場上使用實物交換,可以想象一下我們的祖先進行市場貿(mào)易:一個人手上有羊奶,另一個人手上有牛肉,如果兩個人都需要對方的物品,那么交換一下就可以了,這是最早的貿(mào)易。
但是隨著人類文明的發(fā)展,這種實物交換已經(jīng)無法滿足人類的市場需求,比如擁有牛肉的人不喜歡羊奶,交易就無法進行。
這時候智慧的古人學會了使用媒介,大家所熟知的古時候的媒介是金、銀、銅等。使用媒介給每種物品定價,所有的物品都可以通過媒介來購買和出售。
到了近代,金、銀、銅的弊端也逐漸浮現(xiàn)出來,比如攜帶不便,大量金銀放在身上會有安全隱患。在這種情況下,紙幣應運而生,紙幣的誕生解決了大部分金屬貨幣的弊端,成本也非常低,并且攜帶方便。
隨著科技的飛速發(fā)展,人類更加依賴電子產(chǎn)品,就出現(xiàn)了電子貨幣。貨幣發(fā)展經(jīng)歷的四大階段如圖1所示。

圖1
每一種貨幣的發(fā)展都經(jīng)歷了漫長的過程,每一種貨幣能夠生存下來都經(jīng)歷了嚴格的考驗。現(xiàn)在電子貨幣深入我們生活的方方面面,我們?nèi)ド虉鲑徫铮ゲ蛷d吃飯,搭乘交通工具等,帶一部手機就可以解決所有的支付問題。使用手機支付需要依靠互聯(lián)網(wǎng),通過互聯(lián)網(wǎng)實現(xiàn)支付能力催生出了一大批支付機構(gòu)。
支付機構(gòu)誕生之初市場是非常混亂的,沒有統(tǒng)一的管理,沒有統(tǒng)一的規(guī)范,所有的支付機構(gòu)可以直接對接銀行,可以實現(xiàn)資金留存,這樣操作存在極大的風險,比如支付機構(gòu)“跑路”了會造成很多人的資金損失。
所有行業(yè)的發(fā)展都要經(jīng)歷從混亂到有序的過程,2005年6月中國人民銀行(簡稱央行)出臺《支付清算組織管理辦法(征求意見稿)》,在一定程度上規(guī)范了支付行業(yè)。2010年6月《非金融機構(gòu)支付服務管理辦法》的出臺使整個支付行業(yè)終于有據(jù)可依,行業(yè)發(fā)展得以規(guī)范化。2011年5月央行開始發(fā)行支付牌照,從事支付行業(yè)的人士都非常了解支付牌照(也稱支付業(yè)務許可證)的重要性,有支付牌照的機構(gòu)做三方支付業(yè)務才是合規(guī)的,不然就是所謂的無證機構(gòu),是央行嚴厲打擊的對象。
目前全國有支付牌照的企業(yè)只有200多家,這200多家在央行是有備付金賬戶的,即客戶資金是安全有保障的,且支付機構(gòu)可以在此基礎(chǔ)上為客戶提供資金清算和管理的服務。
是不是只有有支付牌照的企業(yè)才能做支付業(yè)務?
答案是否定的,沒有牌照的也可以,但是沒有央行的備付金賬戶,所以不能進行資金的清算和管理,只能做支付信息服務,我們稱之為聚合支付。
這樣做的目的是保護消費者的財產(chǎn)安全,使市場更加合規(guī)穩(wěn)定。有支付牌照的支付機構(gòu)的業(yè)務流程如圖2所示。

圖2
沒有支付牌照的支付機構(gòu)的業(yè)務流程如圖3所示。

圖3
可以看出,有牌照和沒有牌照的業(yè)務處理流程是不一樣的,沒有牌照的支付機構(gòu)需要通過有牌照的支付機構(gòu)實現(xiàn)資金的流轉(zhuǎn),并且有牌照的支付機構(gòu)直接把錢結(jié)算給商戶,資金不經(jīng)過聚合支付機構(gòu)。接下來出現(xiàn)的“支付機構(gòu)”指的都是有支付牌照的三方支付機構(gòu)。
支付機構(gòu)核心的兩個職責一個是幫助商戶把錢收上來,另一個是把收到的錢結(jié)算給商戶。
這兩個職責對應的兩個過程分別是入金和出金,入金是指能夠支撐客戶的支付能力,把錢從C端客戶的賬戶入賬到支付機構(gòu)的賬戶,出金是把收到的C端客戶的錢結(jié)算給商戶。
通俗地講,支付機構(gòu)就是幫助商戶管好錢。支付的過程一定要做到高效且安全,C端客戶在支付的過程中按照一般人的習慣不會等待超過7秒,7秒之內(nèi)一定要支付完成,否則會給客戶造成很不好的體驗。
一筆支付要經(jīng)過商戶、支付機構(gòu)、銀聯(lián)/網(wǎng)聯(lián),接著到達銀行,然后銀行再把結(jié)果返回,最終展示給用戶,這個過程是非常漫長的。如果訂單量比較少,幾秒內(nèi)完成這些工作完全沒有問題,如果支付機構(gòu)每天有上千萬或者上億的支付單量(比如支付寶、微信),保證支付的高效就非常難了。
支付的過程中有很多影響支付速度的因素,比如帶寬、硬件設(shè)備等,這些因素對于開發(fā)人員來說應該考慮,但是并不能起到?jīng)Q定性的作用,開發(fā)人員能做的是使用最少的資源,實現(xiàn)最高的效率。
如何設(shè)計一套高效且安全的支付體系呢?
首先業(yè)務架構(gòu)要清晰,支付體系的業(yè)務架構(gòu)如圖4所示。

圖4
我們常使用的支付方式除了微信、支付寶,還有快捷支付(即綁定銀行卡支付)。
微信支付包含掃碼支付、JSAPI支付、Native支付、APP支付、H5支付、小程序支付等。
支付寶支付包含手機網(wǎng)站支付、APP支付、電腦網(wǎng)站支付等。
聚合支付機構(gòu)要具備這些支付能力就需要對接對應的接口。合規(guī)的支付機構(gòu)之間不能相互對接,只能和銀聯(lián)/網(wǎng)聯(lián)對接。如果要具有微信、支付寶支付能力,則需要通過銀聯(lián)/網(wǎng)聯(lián)來對接微信和支付寶。
隨著支付業(yè)務的發(fā)展,線上支付單量的增加,支付系統(tǒng)架構(gòu)也經(jīng)歷了幾次演進。早先使用線上支付的人非常少,一個支付機構(gòu)的日單量可能只有十幾萬甚至幾萬筆。這時候不需要太多的系統(tǒng)資源,也不需要太復雜的架構(gòu)設(shè)計,一個系統(tǒng)基本“搞定”所有的事情,如圖5所示。

圖5
同一個系統(tǒng)里的業(yè)務分不同的模塊來處理,支付系統(tǒng)不外乎API接入、交易邏輯處理、商戶維護、賬務記錄等。如果訂單量小,那么這個架構(gòu)沒有問題,但是隨著支付業(yè)務復雜性增加,訂單筆數(shù)增多,系統(tǒng)的弊端就逐漸暴露出來了。
系統(tǒng)容災能力弱:所有的模塊都在一個系統(tǒng)中,某一個模塊出現(xiàn)問題,會影響其他的模塊,比如退款本身是可以異步執(zhí)行的,如果因為退款業(yè)務的原因把正常支付的資源使用完或者拖垮系統(tǒng)就得不償失了。
開發(fā)成本高,團隊協(xié)作不靈活:所有的開發(fā)者都用同一套代碼,編碼版本維護成本高,調(diào)優(yōu)發(fā)布風險大。
復雜業(yè)務擴展性差:隨著業(yè)務復雜性的增加,系統(tǒng)的業(yè)務擴展能力會受到架構(gòu)的嚴重影響,無法靈活修改系統(tǒng)的業(yè)務模塊。
基于這些問題,流量大的支付機構(gòu)就開始思考設(shè)計擴展性更好的支付架構(gòu)來支撐不斷增長的業(yè)務量和業(yè)務復雜度,首先考慮的是如何把系統(tǒng)拆得可用性強一些,系統(tǒng)的模塊中的賬務管理、商戶管理、渠道對接是非常重要并且獨立的,可以拆分出來,拆分后的系統(tǒng)結(jié)構(gòu)如圖6所示。

圖6
這樣拆分后系統(tǒng)擴展性相對來說就比較高了,但技術(shù)永遠都是向前發(fā)展的,微服務思想大大提升了系統(tǒng)的可擴展性,接下來分析使用微服務設(shè)計支付系統(tǒng)架構(gòu)的思路。
微服務的核心思想是把復雜的系統(tǒng)拆分為多個簡單的子系統(tǒng)。明確了支付業(yè)務模型之后,需要把確定的支付產(chǎn)品轉(zhuǎn)化為系統(tǒng),以支撐我們的業(yè)務需求。支付體系架構(gòu)經(jīng)過多次演進,根據(jù)業(yè)務架構(gòu)我們需要把系統(tǒng)拆解一下,每個小系統(tǒng)只負責一個業(yè)務模塊。按照微服務的思想把支付系統(tǒng)拆分為多個小模塊,如圖7所示。

圖7
每個模塊都可以單獨作為一個微服務的小系統(tǒng),每個小系統(tǒng)負責不同的業(yè)務,某一個模塊出現(xiàn)問題不會影響其他的業(yè)務模塊。
支付網(wǎng)關(guān)是支付的入口,所有的交易都要經(jīng)過支付網(wǎng)關(guān)再分發(fā)給各個系統(tǒng),對支付機構(gòu)起到門戶的作用,給接入的商戶提供統(tǒng)一的入口,方便商戶的接入。
商戶中心負責管理商戶信息,商戶想要使用支付平臺,就要先提交入駐申請,把營業(yè)執(zhí)照、法人信息、收款賬戶等上傳到支付機構(gòu),支付機構(gòu)存儲并管理這些信息,在支付、結(jié)算的時候都需要用到這些信息。
支付核心系統(tǒng)(簡稱支付核心)負責處理業(yè)務邏輯,相當于一個系統(tǒng)的Service層,交易經(jīng)過支付網(wǎng)關(guān)之后首先到達支付核心,支付核心根據(jù)交易報文的內(nèi)容去“商戶中心”收集信息,去請求“渠道”完成支付或者退款,去調(diào)用“賬務”完成記賬等。
賬務系統(tǒng)負責管理商戶的資金,商戶入駐支付機構(gòu)的時候,需要開通一個或多個管理資金的賬戶,商戶使用支付渠道支付的每一筆資金都會在賬戶中體現(xiàn),最終結(jié)算的時候也從賬戶中把資金結(jié)算給商戶。
清結(jié)算系統(tǒng)負責把收到的資金結(jié)算給商戶,結(jié)算的時候以支付、退款的明細為依據(jù),把商戶在支付機構(gòu)的余額賬戶中的資金劃轉(zhuǎn)到商戶的銀行卡中。
計費系統(tǒng)負責收取渠道的手續(xù)費,一方面銀聯(lián)和網(wǎng)聯(lián)要收取支付機構(gòu)的手續(xù)費,另一方面支付機構(gòu)會從中獲利,是支付機構(gòu)收入的主要來源。
渠道系統(tǒng)負責對接入金和出金的渠道,所有的支付機構(gòu)不能和銀行直接交互,需要通過銀聯(lián)/網(wǎng)聯(lián)與銀行交互。聚合支付機構(gòu)可以對接三方支付機構(gòu)。
一筆支付單在支付系統(tǒng)之間流轉(zhuǎn)的過程如圖8所示。
?
圖8
所有的交易都要先經(jīng)過支付網(wǎng)關(guān),支付網(wǎng)關(guān)收到交易報文之后會進行驗簽、解密等相關(guān)的操作,校驗完成之后轉(zhuǎn)發(fā)報文到支付核心,支付核心會對業(yè)務字段進行驗證、數(shù)據(jù)落庫,然后請求渠道系統(tǒng)進行路由篩選,篩選出外部的交易渠道(使用銀聯(lián)還是網(wǎng)聯(lián)),選定之后轉(zhuǎn)發(fā)報文到銀聯(lián)或者網(wǎng)聯(lián),然后把支付結(jié)果返回到支付核心,支付核心把支付結(jié)果通過支付網(wǎng)關(guān)返回給商戶。支付核心發(fā)送支付成功消息,清結(jié)算系統(tǒng)監(jiān)聽支付成功消息并把支付成功的記錄落入數(shù)據(jù)庫,等待發(fā)起結(jié)算。賬務系統(tǒng)接收支付成功消息進行記賬。支付的各個系統(tǒng)拆分之后,每個系統(tǒng)負責不同的職責,系統(tǒng)劃分之后,就可以進行技術(shù)選型了。
本文節(jié)選自《支付架構(gòu)實戰(zhàn)》一書,歡迎閱讀本書繼續(xù)了解技術(shù)選型等支付架構(gòu)設(shè)計的內(nèi)容。
掃碼了解本書詳情

?
如果喜歡本文 歡迎?在看丨留言丨分享至朋友圈?三連 ?熱文推薦??
▼點擊閱讀原文,了解本書詳情~
