支付作為平台最核心的基礎能力,其重要性不言而喻。

對於平台而言,支付功能最簡單粗暴的實現方式是業務系統直接接入支付渠道,支付和業務耦合在一起。流程見下圖。

但隨著業務的多樣性和複雜度的變化以及業務量的提升,需要有獨立的系統來維護支付規則,管理支付渠道,記錄支付信息。因此引入支付系統,業務流程升級為:

在一個消費者付款流程中,支付系統需完成以下任務:

1、接受業務系統的業務訂單;

2、根據業務訂單類型及金額判斷可支持的支付產品並返回給前端頁面,讓用戶選擇;

3、根據用戶選擇的支付產品,選出具體執行扣款的支付渠道;

4、根據選出的支付渠道要求組裝指令,調用渠道執行扣款任務;

5、獲取支付渠道通知的扣款結果或主動查詢通道扣款結果;

6、通知業務系統支付結果;

以上6個任務在具體執行中可以分化出以下幾個單體:

1、支付應用

平台交易每天有無數訂單,支付系統需要將訂單進行分類。不同類型的訂單對支付渠道有著不同的需求,可以將訂單類型對支付渠道的需求規則維護在支付應用層。

支付應用提供給上層業務統一模塊化的調用方式,業務層而不再需要關注支付的實現。一般來說,支付應用可分為:

即時消費(消費類訂單),充值(錢包類業務),轉帳(錢包類業務),提現(錢包類業務),退款(異常情況處理)等。

2、支付核心(支付產品)

支付核心將下游支付渠道自身帶有的原子化功能(鑒權,簽約,扣款等)封裝後提供給上游統一調用。上游通道僅需明確具體支付產品和金額後,由支付核心根據路由選出的渠道的介面要求組裝指令,調用渠道支付介面。

支付核心應封裝渠道包括驗證要素,支付額度,手續費,結算賬戶,查詢方式等屬性。也要能新渠道接入的可擴展性,屏蔽各渠道的差異,將渠道差異統一維護在單個系統中。

3、支付路由

用戶選擇支付產品後,可以有多個支付渠道支持對應支付產品。系統需要根據特定邏輯選出具體的支付通道去執行扣款,而這個特定邏輯就是支付路由。

這裡至少要包括以下幾個邏輯:

1) 指定走某條通道、指定不走某條通道;

2) 選出限額滿足訂單金額的支付通道;

3) 選出手續費較低的通道;

4) 現有的支付要素是否滿足通道要求,是否仍需要用戶參與。

另外,支付應用中支持的具體支付產品,也可在路由中實現。

4、渠道管理

支付路由,和支付核心都需要根據通道特性進行判斷,可以獨立維護一個系統來記錄通道的特性。當通道屬性發生變化時,比如需要參數發生變化,費率發生變化等,通道維護時,可以在渠道管理系統中配置相關信息即可,而不需要重新發版。

基於上面的討論,可以抽象出下面兩張圖。

支付模型:

支付系統:

以上僅是收款環節的設計概述,其中仍有很多單體可以展開來講,快捷產品設計,支付路由,賬戶系統等等,有機會再提。

以上僅是個人在實踐中的總結,如有不對的地方,還請指正。

推薦閱讀:

相关文章