1. 程式人生 > >電商支付系統設計(一)——可行性分析

電商支付系統設計(一)——可行性分析

1    背景

隨著網際網路的發展,主流OTA不再單純賣自己的機票和酒店,都走向多供應商的開放平臺。商旅系統在XX信用卡中心的戰略指導下,也拓展了火車票、簽證、保險等多項業務,旨在為XX銀行持卡人的出行提供全方位產品供應。

商差旅系統早期的設計是支援多供應商和開放平臺,架構上也支援外掛化。但因為業務快速發展的需要,支付和訂單包含了不少的業務邏輯,這些耦合的集中性,影響分散式的擴充套件,也帶來一些業務限制和效能瓶頸。

統一支付和訂單系統計劃對原有公共業務進行重構,將業務差異性從支付剝離,將訂單與支付解耦,構建分佈、易擴充套件的統一支付和統一訂單系統。

2    可行性分析

統一支付系統計劃對商旅原有支付系統進行重構,解開支付、訂單系統的耦合,便於後期業務擴充套件,以及新業務的快速接入。

新的支付架構,致力於涵蓋未來一至三年內的系統發展,在這段期間,業務系統的普通功能增強不需要支付系統隨之變更釋出,並能相容重大功能增強等業務需求。

3    方案設計

3.1 設計策略

統一支付:關注支付組合;支付訂單與業務支付工單對應;與業務解耦,與訂單解耦,不再維護訂單任何狀態。

統一訂單:關注Customer-Order-Product三角關係;大表拆分;由1:1改造成1:n關係,便於新業務擴充套件;解決統一展示問題。

業務產品:通過產品ID與統一訂單關聯,將需要提供給前端渠道、個人中心集中展示的資訊,同步到統一訂單系統中,形成綜合檢視;統一訂單則通過產品ID查詢業務詳情。通過支付工單發起支付,與統一支付系統支付單號進行對應,需自行維護支付業務項以及狀態。

3.2 技術方案

技術方案的關鍵點在於訂單系統和支付系統的解耦,訂單系統與業務關係緊密,支付系統側重交易功能。由於產品的交易多樣性,系統支援現金、禮金、積分等多種交易方式,並支援各種交易的組合支付。經過對需求的分析,對解耦後的實現提出了兩套可行性方案,兩套方案的關鍵比較指標是:產品的可擴充套件性、對現有產品影響的高低、系統自身的複雜性等。兩套方案的劃分原因:組合支付的邏輯相對複雜,並且都是特定業務使用,由訂單系統還是支付系統實現組合支付,直接影響到上述比較指標。

3.2.1 技術方案一

統一支付系統

l  功能說明

將業務要素從支付系統剝離,支付不再記錄業務類別等資訊,關注支付型別的組合。支援訂單多收多退,支援新業務品種隨時接入。

增加支付狀態同步主動推送功能,可定時推送和手工推送,便於業務流程中斷後能再續,增強系統完善性。

l  流程描述


業務與支付關聯: 業務“工單流水”和“支付訂單”多對一關聯(如扣款、退款關聯到同一個支付訂單),可通過“工單流水/支付訂單”查詢 “支付訂單” 和 “交易流水”


業務系統說明: 

1、組合支付的邏輯由支付系統實現,每發起一筆交易流水可支援多個交易型別組合同時扣款。

2、業務支付工單的流水不能重複

3、多次收款時,只需建立新的工單即可

4、多次退款時,每次新建退款工單,退與收的關聯關係需要業務系統自行設計

5、預授權完成、預授權撤銷時,可不新建業務支付工單

支付系統說明:

1、組合支付的邏輯由支付系統實現,需要處理部分成功的異常

2、僅在扣款時建立訂單並關聯扣款工單流水

3、預授權撤銷、完成、退款等操作中,不用建立新的支付訂單,但會建立每次的交易流水,並通過流水關聯撤銷、完成、退款的業務支付工單

l  規則和要素

將所有的列舉改變為INT,以適應跨語言平臺擴充套件

4    方案分析

4.1 技術方案一

4.2 技術方案二

5    意見彙總

5.1 技術方案比較

5.2 實施方案選擇建議