一文讀懂:完整的支付系統(tǒng)整體架構(gòu)!

支付產(chǎn)品模塊是按照支付場景來為業(yè)務(wù)方提供支付服務(wù)。這個(gè)模塊一般位于支付網(wǎng)關(guān)之后,支付渠道之前。 它根據(jù)支付能力將不同的支付渠道封裝成統(tǒng)一的接口,通過支付網(wǎng)關(guān)來對外提供服務(wù)。所以,從微服務(wù)的角度,支付產(chǎn)品本身也是一個(gè)代理模式的微服務(wù),它透過支付網(wǎng)關(guān)響應(yīng)業(yè)務(wù)方請求, 進(jìn)行一些統(tǒng)一處理后,分發(fā)到不同的支付渠道去執(zhí)行,最后將執(zhí)行結(jié)果做處理后,通過支付網(wǎng)關(guān)再回傳給業(yè)務(wù)方。

支付產(chǎn)品在支付系統(tǒng)參考架構(gòu)圖中之位置,請看下圖所示:

產(chǎn)品分類

在不同的公司由于接入渠道和應(yīng)用的差異,對支付產(chǎn)品分類略有不同。綜合支付場景和流程,支付產(chǎn)品可以分為如下幾類:

支付產(chǎn)品是由支付系統(tǒng)對支付渠道進(jìn)行封裝而對業(yè)務(wù)方提供的支付能力。整體上來說,可以提供如下支付產(chǎn)品:

1. 快捷支付

用戶在完成綁卡之后,在支付的時(shí)候,不需要再輸入卡或者身份信息,僅需要輸入支付密碼就可以完成支付。對于小額度的支付,甚至可以開通小額免密,直接完成支付。 這種支付方式不會打斷用戶的體驗(yàn),是目前主要的在線支付方式。一般快捷支付產(chǎn)品是通過封裝銀行或者第三方支付平臺提供的快捷支付接口或者代付接口來實(shí)現(xiàn)的。

2. 網(wǎng)銀支付

用戶在支付的時(shí)候,需要跳轉(zhuǎn)到銀行網(wǎng)銀頁面來完成支付。在網(wǎng)銀頁面,需要輸入用戶的卡號和身份信息。這種支付方式會中斷用戶當(dāng)前的體驗(yàn),一般僅用于PC Web上的支付。 網(wǎng)銀支付是封裝銀行提供的網(wǎng)銀支付來實(shí)現(xiàn)。

3. 協(xié)議支付

協(xié)議支付也稱代收或者代扣,代收指渠道授權(quán)商戶可以從用戶的銀行賬戶中扣款,一般用于定期扣款,不用于日常消費(fèi)。比如水電煤氣、有線電視費(fèi)。協(xié)議支付是通過封裝銀行、第三方支付提供的代扣或者快捷接口來實(shí)現(xiàn)。

4. 平臺支付

使用微信、支付寶等第三方支付平臺來完成支付。使用時(shí),一般需要用戶預(yù)先安裝支付平臺系統(tǒng)(手機(jī)上),注冊并登錄到第三方支付平臺,并且已經(jīng)在該平臺上完成綁卡等操作。 由于微信、支付寶已經(jīng)被大量使用,用戶也產(chǎn)生對這些平臺的信任,平臺支付往往是電商公司的主要支付方式。

5. 外卡支付

對于由海外支付的需求,還需要提供外卡支付支持。 國內(nèi)不少支付渠道都能支持外卡支付,如支付寶全球購等。直接對接Paypal,也是目前用的最多的外卡支付渠道。 關(guān)于外卡支付,以后會有專文介紹。

6. 話費(fèi)支付

對于有包月小額類型的支付,手機(jī)話費(fèi)也是一個(gè)不錯的選擇。目前也有一些平臺可以支持話費(fèi)支付,比如虹軟、聯(lián)動優(yōu)勢等。

7. 虛幣支付

不少公司會有自己的虛擬幣,比如京豆、Q幣等。這些虛幣也可以作為一種支付方式。

8. 賬戶支付

也成為余額支付、零錢支付等。 指為用戶建立本地賬戶, 支持充值,之后可以使用這個(gè)賬戶來完成支付。

9. 信用支付

如京東的白條,螞蟻花唄等,指使用信用賬戶進(jìn)行透支,類似信用卡支付。

10. 代付

和代扣相反,代付是平臺將錢打給用戶。

每一種支付方式的詳細(xì)功能將在后續(xù)的各個(gè)章節(jié)中介紹。 這里先簡要介紹支付產(chǎn)品模塊的通用功能。

模塊功能

支出產(chǎn)品根據(jù)其支付能力,對外提供不同的功能。整體上來說,一般支付產(chǎn)品需要提供如下接口:

1. 簽約和解約

在快捷支付、代扣等產(chǎn)品中,用戶在使用前,需要先完成簽約。簽約可以在渠道側(cè)進(jìn)行,一般第三方支付采用這種方式,當(dāng)電商需要接入時(shí),讓第三方給授權(quán)。 銀行和銀聯(lián)的簽約一般是在電商側(cè)進(jìn)行, 電商側(cè)負(fù)責(zé)收集用戶的信息,調(diào)用銀行和銀聯(lián)的接口進(jìn)行簽約。簽約后,后續(xù)的支付行為就使用簽約號來進(jìn)行,無需再輸入個(gè)人信息。 和簽約相對應(yīng),解約則是取消簽約關(guān)系。

2. 支付

支付是少不了的操作。 不同產(chǎn)品中支付行為不一樣??旖葜Ц妒窃陔娚谭?wù)器上發(fā)起,請求渠道進(jìn)行支付;網(wǎng)銀支付則是跳轉(zhuǎn)到銀行支付網(wǎng)關(guān)上進(jìn)行; 而賬戶支付、虛幣支付,則是在本地進(jìn)行的。

3. 撤銷和退款

有些渠道區(qū)分撤銷和退款,比如銀聯(lián)、農(nóng)行等,撤銷指取消當(dāng)天在渠道側(cè)未結(jié)算的交易; 而退款僅針對已經(jīng)結(jié)算的交易。有些渠道則不作區(qū)分。

4. 查詢簽約狀態(tài)

對于需要簽約的交易,可以通過這個(gè)接口來查詢簽約狀態(tài)。

5. 查詢訂單狀態(tài)

通過這個(gè)接口來查詢支付清單狀態(tài)以及退款的訂單狀態(tài)。

6. 預(yù)授權(quán)

預(yù)授權(quán)交易用于受理方向持卡人的發(fā)卡方確認(rèn)交易許可。受理方將預(yù)估的消費(fèi)金額作為預(yù)授權(quán)金額,發(fā)送給持卡人的發(fā)卡方。

7. 預(yù)授權(quán)撤銷

對已成功的預(yù)授權(quán)交易,在結(jié)算前使用預(yù)授權(quán)撤銷交易,通知發(fā)卡方取消付款承諾。預(yù)授權(quán)撤銷交易必須是對原始預(yù)授權(quán)交易或追加預(yù)授權(quán)交易最終承兌金額的全額撤銷。

8. 預(yù)授權(quán)完成交易

對已批準(zhǔn)的預(yù)授權(quán)交易,用預(yù)授權(quán)完成做支付結(jié)算。

9. 預(yù)授權(quán)完成撤銷

預(yù)授權(quán)完成撤銷交易必須是對原始預(yù)授權(quán)完成交易的全額撤銷。預(yù)授權(quán)完成撤銷后的預(yù)授權(quán)仍然有效。

10. 對賬

通過FTP或者HTTP方式提供對賬文件供商戶側(cè)對賬。

11. 余額查詢

查詢商戶的交易賬戶的余額,避免由于余額不足導(dǎo)致交易失敗。 注意,不是客戶的余額。 當(dāng)然,不是所有的銀行或者第三方支付都提供這個(gè)接口。

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

上述操作,除了對賬、查單外,每個(gè)操作實(shí)現(xiàn)的主流程,一般會包括參數(shù)校驗(yàn),支付路由,生成訂單,風(fēng)險(xiǎn)評估,調(diào)用渠道服務(wù),更新訂單和發(fā)送消息這7步,對于一些比較復(fù)雜的服務(wù),還會涉及到異步同通知處理的步驟。

1. 執(zhí)行參數(shù)校驗(yàn)

所有的支付操作,都需要對輸入執(zhí)行參數(shù)校驗(yàn),避免接口受到攻擊。

驗(yàn)證輸入?yún)?shù)中各字段的有效性驗(yàn)證,比如用戶ID,商戶ID,價(jià)格,返回地址等參數(shù)。

驗(yàn)證賬戶狀態(tài)。交易主體、交易對手等賬戶的狀態(tài)是處于可交易的狀態(tài)。

驗(yàn)證訂單:如果涉及到預(yù)單,還需要驗(yàn)證訂單號的有效性,訂單狀態(tài)是未支付。為了避免用戶緩存某個(gè)URL地址,還需要校驗(yàn)下單時(shí)間和支付時(shí)間是否超過預(yù)定的間隔。

驗(yàn)證簽名。簽名也是為了防止支付接口被偽造。 一般簽名是使用分發(fā)給商戶的key來對輸入?yún)?shù)拼接成的字符串做MD5 Hash或者RSA加密,然后作為一個(gè)參數(shù)隨其他參數(shù)一起提交到服務(wù)器端。如支付網(wǎng)關(guān)設(shè)計(jì)所介紹,簽名驗(yàn)證也可以在網(wǎng)關(guān)中統(tǒng)一完成。

2. 根據(jù)支付路由尋找合適的支付服務(wù)

根據(jù)用戶選擇的支付方式確定用來完成該操作的合適的支付渠道。用戶指定的支付方式不一定是最終的執(zhí)行支付的渠道。比如用戶選擇通過工行信用卡來執(zhí)行支付,但是我們沒有實(shí)現(xiàn)和工行的對接,而是可以通過第三方支付,比如支付寶、微信支付、易寶支付,或者銀聯(lián)來完成。那如何選擇合適的支付渠道,就通過支付路由來實(shí)現(xiàn)。支付路由會綜合考慮收費(fèi)、渠道的可用性等因素來選擇最優(yōu)方案。

3. 評估交易風(fēng)險(xiǎn)

檢查本次交易是否有風(fēng)險(xiǎn)。風(fēng)控接口返回三種結(jié)果:阻斷交易、增強(qiáng)驗(yàn)證和放行交易。

1) 阻斷交易,說明該交易是高風(fēng)險(xiǎn)的,需要終止,不執(zhí)行第5個(gè)步驟;

2) 增強(qiáng)驗(yàn)證,說明該交易有一定的風(fēng)險(xiǎn),需要確認(rèn)下是不是用戶本人在操作。這可以通過發(fā)送短信驗(yàn)證碼或者其他可以驗(yàn)證用戶身份的方式來做校驗(yàn),驗(yàn)證通過后,可以繼續(xù)執(zhí)行該交易。

3) 放行交易,即本次交易是安全的,可以繼續(xù)往下走。

4. 生成交易訂單

將訂單信息持久化到數(shù)據(jù)庫中。當(dāng)訪問壓力大的時(shí)候,數(shù)據(jù)庫寫入會成為一個(gè)瓶頸。

5. 調(diào)用支付渠道提供的服務(wù)

所有的支付服務(wù)都需要第三方通道來完成執(zhí)行。一般銀行渠道的調(diào)用比較簡單,可以直接返回結(jié)果。一些第三方支付,支付寶,微信支付等,會通過異步接口來告知支付結(jié)果。

6. 更新訂單

對于同步返回的結(jié)果,需要在主線程中更新訂單的狀態(tài),標(biāo)記是支付成功還是失敗。對于異步返回的渠道,需要在異步程序中處理。

7. 發(fā)送消息

通過消息來通知相關(guān)系統(tǒng)關(guān)于訂單的變更。風(fēng)控,信用BI等,都需要依賴這數(shù)據(jù)做準(zhǔn)實(shí)時(shí)計(jì)算。

8. 異步通知

如上述流程,其中涉及到調(diào)用遠(yuǎn)程接口,其延遲不可控。如果調(diào)用方一直阻塞等待,很容易超時(shí)。引入異步通知機(jī)制,可以讓調(diào)用方在主線程中盡快返回,通過異步線程來得到支付結(jié)果。對于通過異步來獲取支付結(jié)果的渠道接口,也需要對應(yīng)的在異步通知中將結(jié)果返回給調(diào)用方。 異步通知需要調(diào)用方提供一個(gè)回調(diào)地址,一般以http或者h(yuǎn)ttps的方式。這就有技術(shù)風(fēng)險(xiǎn),如果調(diào)用失敗,還需要重試。而重試不能過于頻繁,需要逐步拉大每一次重試的時(shí)間間隔。 在異步處理程序中,訂單根據(jù)處理結(jié)果變更狀態(tài)后,也要發(fā)消息通知相關(guān)系統(tǒng)。

支付系統(tǒng)架構(gòu)整體設(shè)計(jì)

每個(gè)公司根據(jù)其業(yè)務(wù)和公司發(fā)展的不同階段,所設(shè)計(jì)的支付系統(tǒng)也會有所不同。我們先看看互聯(lián)網(wǎng)公司的一些典型的支付系統(tǒng)架構(gòu)。

支付寶

我們先看看業(yè)內(nèi)最強(qiáng)的支付寶系統(tǒng)。架構(gòu)圖如下:

這個(gè)整體架構(gòu)上并沒有與眾不同之處。在模塊劃分上,這個(gè)圖顯示的是最頂層的劃分,也無法告知更多細(xì)節(jié)。 但支付寶架構(gòu)文檔有兩個(gè)搞支付平臺設(shè)計(jì)的人必須仔細(xì)揣摩的要點(diǎn)。 一個(gè)是賬務(wù)處理。在記賬方面,涉及到內(nèi)外兩個(gè)子系統(tǒng),外部子系統(tǒng)是單邊賬,滿足線上性能需求;內(nèi)部子系統(tǒng)走復(fù)式記賬,滿足財(cái)務(wù)需求。在清結(jié)算這個(gè)章節(jié)中也是基于這個(gè)模型來詳細(xì)介紹如何記賬、對賬和平賬。

另一個(gè)亮點(diǎn)是柔性事務(wù)處理,利用消息機(jī)制來實(shí)現(xiàn)跨系統(tǒng)的事務(wù)處理,避免數(shù)據(jù)庫鎖導(dǎo)致的性能問題。

京東金融

來自京東支付平臺總體架構(gòu)設(shè)計(jì) 。如下圖:

京東金融是在網(wǎng)銀在線的基礎(chǔ)上發(fā)展起來的。 網(wǎng)銀在線的原班技術(shù)人員有不少來自易寶公司,在京東收購之后,又引入了支付寶的人才。

因而從架構(gòu)上受這兩個(gè)公司的影響很大。

去哪兒

這是來自去哪兒公司分享的支付產(chǎn)品架構(gòu)。請看下圖:

美團(tuán)的支付平臺架構(gòu)

來自美團(tuán)的支付平臺規(guī)劃架構(gòu) 。這是2015年的文檔。 2016年美團(tuán)才拿到支付牌照。 從這個(gè)架構(gòu),大家也能知道為什么美團(tuán)必須拿到支付牌照。

這些架構(gòu)文檔全部來自互聯(lián)網(wǎng)公開資料。 對于架構(gòu)是否真實(shí)反映實(shí)際系統(tǒng)情況,需要大家自行判斷。 我們以這些文檔為基礎(chǔ),分析支付系統(tǒng)的應(yīng)有的軟件架構(gòu)。

參考架構(gòu)

一般來說,支付系統(tǒng)典型架構(gòu)會包含如下模塊:

支付系統(tǒng)從架構(gòu)上來說,分為三層;

支撐層: 用來支持核心系統(tǒng)的基礎(chǔ)軟件包和基礎(chǔ)設(shè)施, 包括運(yùn)維監(jiān)控系統(tǒng)、日志分析系統(tǒng)等。

核心層: 支付系統(tǒng)的核心模塊,內(nèi)部又分為兩個(gè)部分: 支付核心模塊以及支付服務(wù)模塊。

產(chǎn)品層: 通過核心層提供的服務(wù)組合起來,對最終用戶、商戶、運(yùn)營管理人員提供的系統(tǒng)。

支撐系統(tǒng)

支撐系統(tǒng)是一個(gè)公司提供給支付系統(tǒng)運(yùn)行的基礎(chǔ)設(shè)施。 主要包括如下子系統(tǒng):

運(yùn)維監(jiān)控: 支付系統(tǒng)在下運(yùn)行過程中不可避免的會受到各種內(nèi)部和外部的干擾,光纖被挖斷、黑客攻擊、數(shù)據(jù)庫被誤刪、上線系統(tǒng)中有bug等等,運(yùn)維人員必須在第一時(shí)間內(nèi)對這些意外事件作出響應(yīng),又不能夠一天24小時(shí)盯著。這就需要一個(gè)運(yùn)維監(jiān)控系統(tǒng)來協(xié)助完成。

日志分析: 日志是支付系統(tǒng)統(tǒng)計(jì)分析、運(yùn)維監(jiān)控的重要依據(jù)。公司需要提供基礎(chǔ)設(shè)施來支持日志統(tǒng)一收集和分析。

短信平臺: 短信在支付系統(tǒng)中有重要作用: 身份驗(yàn)證、安全登錄、找回密碼、以及報(bào)警監(jiān)控,都需要短信的支持。

安全機(jī)制: 安全是支付的生命線。 SSL、證書系統(tǒng)、防刷接口等,都是支付的必要設(shè)施。

統(tǒng)計(jì)報(bào)表: 支付數(shù)據(jù)的可視化展示,是公司進(jìn)行決策的基礎(chǔ)。

遠(yuǎn)程連接管理、分布式計(jì)算、消息機(jī)制、全文檢索、文件傳輸、數(shù)據(jù)存儲、機(jī)器學(xué)習(xí)等,都是構(gòu)建大型系統(tǒng)所必須的基礎(chǔ)軟件,這里不再一一詳細(xì)介紹。

支付核心系統(tǒng)

支付核心系統(tǒng)指用戶執(zhí)行支付的核心流程,包括:

用戶從支付應(yīng)用啟動支付流程。

支付應(yīng)用根據(jù)應(yīng)用和用戶選擇的支付工具來調(diào)用對應(yīng)的支付產(chǎn)品來執(zhí)行支付。

支付路由根據(jù)支付工具、渠道費(fèi)率、接口穩(wěn)定性等因素選擇合適的支付渠道來落地支付。

支付渠道調(diào)用銀行、第三方支付等渠道提供的接口來執(zhí)行支付操作,最終落地資金轉(zhuǎn)移。

支付服務(wù)系統(tǒng)

支持支付核心系統(tǒng)所提供的功能。服務(wù)系統(tǒng)又分為基礎(chǔ)服務(wù)系統(tǒng)、資金系統(tǒng)、風(fēng)控和信用系統(tǒng)。

基礎(chǔ)服務(wù)系統(tǒng)提供支撐線上支付系統(tǒng)運(yùn)行的基礎(chǔ)業(yè)務(wù)功能:

客戶信息管理:包括對用戶、商戶的實(shí)名身份、基本信息、協(xié)議的管理;

卡券管理: 對優(yōu)惠券、代金券、折扣券的制作、發(fā)放、使用流程的管理;

支付通道管理: 通道接口、配置參數(shù)、費(fèi)用、限額以及QOS的管理;

賬戶和賬務(wù)系統(tǒng): 管理賬戶信息以及交易流水、記賬憑證等。這里的賬務(wù)一般指對接線上系統(tǒng)的賬務(wù),采用單邊賬的記賬方式。 內(nèi)部賬記錄在會計(jì)核算系統(tǒng)中。

訂單系統(tǒng): 一般訂單系統(tǒng)可以獨(dú)立于業(yè)務(wù)系統(tǒng)來實(shí)現(xiàn)的。這里的訂單,主要指支付訂單。

資金系統(tǒng)指圍繞財(cái)務(wù)會計(jì)而產(chǎn)生的后臺資金核實(shí)、調(diào)度和管理的系統(tǒng),包括:

會計(jì)核算: 提供會計(jì)科目、內(nèi)部賬務(wù)、試算平衡、日切、流水登記、核算和歸檔的功能。

資金管理: 管理公司在各個(gè)支付渠道的頭寸,在余額不足時(shí)進(jìn)行打款。 對第三方支付公司,還需要對備付金進(jìn)行管理。

清算分潤: 對于有分潤需求的業(yè)務(wù),還需要提供清分清算、對賬處理和計(jì)費(fèi)分潤功能。

風(fēng)控系統(tǒng)是支付系統(tǒng)必備的基礎(chǔ)功能,所有的支付行為必須做風(fēng)險(xiǎn)評估并采取對應(yīng)的措施;信用系統(tǒng)是在風(fēng)控基礎(chǔ)上發(fā)展的高級功能,京東的白條,螞蟻花唄等,都是成功的案例。

支付應(yīng)用

支撐系統(tǒng)、核心系統(tǒng)和服務(wù)系統(tǒng),在每個(gè)互聯(lián)網(wǎng)公司的架構(gòu)上都是大同小異的,都是必不可少的模塊。而支付應(yīng)用是每個(gè)公司根據(jù)自己的業(yè)務(wù)來構(gòu)建的,各不相同。

總體來說,可以按照使用對象分為針對最終用戶的應(yīng)用、針對商戶的應(yīng)用、針對運(yùn)營人員的運(yùn)營管理、BI和風(fēng)控后臺。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容