支付業務的核心流程

1.支付應用根據用戶選擇的支付工具來調用對應的支付產品來執行支付。

2.支付產品通過支付網關根據支付工具、渠道費率、介面穩定性等因素選擇合適的支付渠道來落地支付。3.支付渠道調用銀行、第三方支付等渠道提供的介面來執行支付操作,最終落地資金轉移。

支付系統的典型架構

支付工具

支付工具是由銀行或者其他支付機構發行的,能夠發起支付指令,用於債務清償或者資金轉移的證件,比如支票、匯票、本票、銀行卡等。

在金融機構中,支付工具一般分為三類:

貸記支付工具:資金被劃入銀行應收賬戶

借記支付工具:結算資金轉移反映在銀行賬戶上是債務的減少

通用支付工具:銀行卡、電子支付(例如微信、支付寶)

支付應用

狹義來講是指提供給最終用戶在特定場景下使用的產品。

比如掃碼收銀、二維碼支付、打賞、眾籌、POS支付、生活繳費、信用卡返款、手機充值等。 這些應用是建立在支付產品的基礎之上,直接面向最終的用戶提供服務。

廣義來講,可以按照使用對象分為針對最終用戶的應用、針對商戶的應用、針對運營人員的運營管理、BI和風控後台等。

支付核心系統

設計原則

支付網關、支付產品和支付渠道的職責分工為:

1.按照支付能力來劃分支付產品。

2.同一支付能力的公共支付流程,在支付產品中實現。 支付產品提供的是和支付渠道無關的、和支付能力流程相關的功能。3.支付產品中,和支付能力無關的公共功能,在支付網關上實現。

支付網關

支付網關是對外提供服務的入口,它將支付產品介面中和業務無關的功能提取出來,在這裡統一實現,支付網關本身並不執行任何支付相關的業務邏輯。

在支付網關上實現的主要功能:

API路由。在聚合支付場景下,當有多個支付產品可以提供支持時,使用支付網關可以讓接入方對接時無需考慮支付產品的部署問題。

介面安全: 熔斷、限流與隔離。 這對支付服務來說尤為重要。 這是微服務架構的基本功能,本文不做描述。

支付產品

支付產品模塊是按照支付場景來為業務方提供支付服務,在架構上位於支付網關之後,支付渠道之前。 它根據支付能力將不同的支付渠道封裝成統一的介面,通過支付網關來對外提供服務。所以,從微服務的角度,支付產品本身也是一個代理模式的微服務,它透過支付網關響應業務方請求, 進行一些統一處理後,分發到不同的支付渠道去執行,最後將執行結果做處理後,通過支付網關再回傳給業務方。

支付產品中實現的主要功能:

風控攔截: 風控是和支付產品有關,不同產品的風控措施、處理對策也是不同的,所以風控是在產品層實現。

支付路由: 路由也是和產品有關。不同產品路由策略也不同。參數校驗: 這也是和支付產品相關的,不同的產品介面其參數也不同。支付流程: 生成交易記錄、落地渠道執行支付、同步和非同步通知等操作。

如下功能,可以在產品層也可以在網關層實現:

身份驗證: 確認付款方、收款方、渠道是否有執行當前操作的許可權。 在那一層實現取決於這些信息是否有提煉為公共行為。

驗簽: 對介面參數進行簽名並驗證其簽名。這是為了避免介面被盜刷和篡改的必要手段。如果對各個介面採用統一的簽名規則,則可以在網關層實現。

支付渠道

支付渠道模塊是調用支付渠道介面執行真正的資金操作。

支付核心系統交易請求數據流

1.支付請求被發送到支付網關。網關對這個請求進行一些通用的處理,比如QPS控制、驗簽等,然後根據支付請求的場景(網銀、快捷、外卡等),調用對應的支付產品。

2.支付產品對用戶請求進行預處理,包括執行參數校驗、根據支付路由尋找合適的支付通道、評估交易風險、生成訂單、調用渠道落地執行支付、響應渠道的結果並將交易結果通知到商戶側。3.支付產品調用支付渠道執行支付。這個請求並不是直接落地到渠道上,而是通過支付渠道前置來封裝,由支付渠道前置來完成和渠道的交付。 支付產品是按照可以提供的支付服務來設計的。4.支付渠道前置,負責和支付渠道之間的通訊,調用支付渠道介面完成最終的支付操作。

本文參考「鳳凰牌老熊」、「梁川」、「路楊」、「叉一」等相關支付系統架構設計文章結合自己支付系統設計經驗整理。


推薦閱讀:
相关文章