產品架構圖
產品層
通過核心層提供的服務組合起來,對最終用戶、商戶、運營系統提供服務的系統。
支付系統的支撐系統、核心系統每家公司的架構都大同小異,而且都是必不可少的模塊。而每家公司的支付業務、運營策略各自不同,所以,上面的應用層各自不同。通常我們可以按照使用對象劃分為:針對最終用戶應用、針對商戶應用、針對運營人員應用、針對分控人員應用...
支付流程圖
資金流處理
核心層
支付系統的核心模塊,內部又分為兩個部分: 支付核心模塊以及支付服務模塊
支付應用
支付核心層通過支付應用對上冊提供服務,用戶從這里啟動支付流程。
支付網關
在支付系統中,支付網關和支付渠道的對接是最核心的功能。其中支付網關是對外提供服務的接口,所有需要渠道支持的資金操作都需要通過網關分發到對應的渠道模塊上。一旦定型,后續就很少,也很難調整。而支付渠道模塊是接收網關的請求,調用渠道接口執行真正的資金操作。每個渠道的接口,傳輸方式都不盡相同,所以在這里,支付網關相對于支付渠道模塊的作用,類似設計模式中的wrapper,封裝各個渠道的差異,對網關呈現統一的接口。而網關的功能是為業務提供通用接口,一些和渠道交互的公共操作,也會放置到網關中
支付網關工作流程:
- 商戶側應用發起支付請求。注意,這個請求一般是從服務器端發起的。比如用戶在手機端提交“立即支付”按鈕后,商戶的服務器端會先生成訂單,然后請求支付網關執行支付
- 支付請求被發送到支付(API)網關上。網關對這個請求進行一些通用的處理,比如QPS控制、驗簽等,然后根據支付請求的場景(網銀、快捷、外卡等),調用對應的支付產品
- 支付產品對用戶請求進行預處理,包括執行參數校驗、根據支付路由尋找合適的支付通道、評估交易風險、生成訂單、調用通道落地執行支付、響應通道的結果并將交易結果通知到商戶側
- 支付產品調用支付通道執行支付。這個請求并不是直接落地到通道上,而是通過支付通道前置來封裝,由支付通道前置來完成和通道的交付。 支付產品是按照可以提供的支付服務來設計的
- 支付通道前置,(以下在不引起混淆的情況下,都簡稱支付通道)負責和支付通道之間的通訊,調用支付通道接口完成最終的支付操作數
設計原則
如上所述,支付網關、支付產品和支付渠道的職責分工為:
- 按照支付能力來劃分支付產品。
- 同一支付能力的公共支付流程,在支付產品中實現。 支付產品提供的是和渠道無關的、和支付能力流程相關的功能。
- 在各支付產品中,其和支付能力無關的公共功能,在支付網關上實現。
按照這個分工,在支付網關上實現的主要功能:
- API路由。在聚合支付場景下,當有多個支付產品可以提供支持時,使用支付網關可以讓接入方對接時無需考慮支付產品的部署問題。
- 接口安全: 熔斷、限流與隔離。 這對支付服務來說尤為重要。 這是微服務架構的基本功能,本文不做描述。
如下功能,是在支付產品中提供:
- 風控攔截: 風控是和支付產品有關,不同產品的風控措施、處理對策也是不同的,所以風控是在產品層實現。
- 支付路由: 路由也是和產品有關。不同產品路由策略也不同。
- 參數校驗: 這也是和支付產品相關的,不同的產品接口其參數也不同。
- 支付流程: 生成交易記錄、落地渠道執行支付、同步和異步通知等操作。
如下功能,可以在產品層或者網關層實現:
- 身份驗證: 確認付款方、收款方、渠道是否有執行當前操作的權限。 在那一層實現取決于這些信息是否有提煉為公共行為。
- 驗簽: 對接口參數進行簽名并驗證其簽名。這是為了避免接口被盜刷和篡改的必要手段。如果對各個接口采用統一的簽名規則,則可以在網關層實現。
支付產品
在不同的公司由于接入渠道和應用的差異,對支付產品分類略有不同。支付產品是由支付系統對支付渠道進行封裝而對業務方提供的支付能力。
快捷支付
用戶在完成綁卡之后,在支付的時候,不需要再輸入卡或者身份信息,僅需要輸入支付密碼就可以完成支付。對于小額度的支付,甚至可以開通小額免密,直接完成支付。 這種支付方式不會打斷用戶的體驗,是目前主要的在線支付方式。一般快捷支付產品是通過封裝銀行或者第三方支付平臺提供的快捷支付接口或者代付接口來實現的。網銀支付
用戶在支付的時候,需要跳轉到銀行網銀頁面來完成支付。在網銀頁面,需要輸入用戶的卡號和身份信息。這種支付方式會中斷用戶當前的體驗,一般僅用于 PC Web 上的支付。 網銀支付是封裝銀行提供的網銀支付來實現。賬戶支付
也稱為余額支付、零錢支付等。 指為用戶建立本地賬戶, 支持充值,之后可以使用這個賬戶來完成支付。
支付路由
用戶在前端選擇一種支付方式,比如使用招行借記卡來支付后,系統不一定就是調用招行的接口來執行支付。支付寶、百付寶等第三方支付平臺以及銀聯等,都支持招行借記卡支付。 這種將支付方式落地到具體的支付接口的模塊,就是支付路由。
支付路由在支付系統中的核心作用,除了本職工作路由外,還承擔如下職責:
- 省錢,省錢,省錢,這是支付路由選擇支付通道的最主要的規則。 哪個通道省錢,基本會優先考慮這個通道。
- 提升支付產品的QOS。這體現在系統的可靠性、穩定性、性能和可用性上。通過屏蔽掉無法連接、不穩定、性能低的通道來提升這些指標。
- 支持營銷。通過優先選擇有優惠活動的通道,可以幫助業務提升付費客戶量。
- 降低運營成本。一個設計良好的支付路由,可以大大降低運營投入。
架構圖
支付渠道
包括銀行渠道和第三方支付(微信、支付寶、通聯、易寶)渠道
用戶管理
包括對用戶、商戶的實名身份、基本信息、協議的管理
資金管理
管理公司在各個支付渠道的頭寸,在余額不足時進行打款。 對第三方支付公司,還需要對備付金進行管理
清算分潤
對于有分潤需求的業務,還需要提供清分清算、對賬處理和計費分潤功能
會計財務
提供會計科目、內部賬務、試算平衡、日切、流水登記、核算和歸檔的功能
核算
賬戶賬務
管理賬戶信息以及交易流水、記賬憑證等。這里的賬務一般指對接線上系統的賬務,采用單邊賬的記賬方式。 內部賬記錄在會計核算系統中
風控
風控包括,賬戶風險、交易風險、資金風險、套現風險、操作風險、合規風險、洗錢風險,每一塊都是一個課題。
基礎層
用來支持核心系統的基礎軟件包和基礎設施, 包括運維監控系統、日志分析系統等
運維監控
支付系統運行的基礎設施受到外界的干擾(壓力、bug、掉電、黑客攻擊...)造成系統不穩定,需要能夠被及時響應,這就需要一個運維監控系統來協助完成。日志分析
日志是支付系統統計分析、運維監控的重要依據。需要提供基礎設施來支持日志統一收集和分析短信平臺
短信在支付系統中有重要作用: 身份驗證、安全登錄、找回密碼、以及報警監控,都需要短信的支持實時計算
全文檢索
數據存儲