2016-06-26 發布 支付系統開發的實踐與思考(一)
通常我們在開發手機 app 或網站時都會涉及到支付相關的業務場景,用戶只需要簡單的點擊下按鈕並輸入密碼,就完成了整個支付過程。那麽今天我們就來簡單聊一下一個完整的支付系統由那些功能組成以及設計時需要考慮的因素。
我們先來看下支付過程:
從上圖中我們可以看出真實的資金流向。首先當用戶產生支付行為時,資金從用戶端流向支付系統,退款時則相反,從支付系統回流至用戶端。因此在整個交易過程中用戶端與支付系統是雙向資金的流動方式。對於支付系統而言,資金有進有出。
從支付系統到商戶端就比較簡單了,在清算完成後支付系統負責將代收的資金結算給商戶,通常結算的操作可以在線上來完成(采用支付公司代付接口或者銀企直連接口來完成),也可以由公司財務通過線下手工轉賬的方式來完成,因此這種資金流動的方式是單向的。出於資金安全考慮,大多數公司通常這部分采用線下方式實現。
真實的資金流由支付公司按照約定期限(通常 T+1 )結算到平臺公司對公賬戶中,然後再由平臺公司再按照交易明細進行二次清算後結算給對應的商戶。
為了能把這件事說清楚,我們先來看個生活中的例子:比如今天我去華堂商場買個 New Balance 的鞋子,我在拿到商家開出的小票後去了收銀臺刷卡交錢,然後再將小票的副聯交給那個出小票的業務員(商戶),這時我就可以拿著鞋子走人了。此時華堂的收銀臺就是我們上面說的支付系統,而 New Balance 就是商戶。當我完成交易時錢首先是由華堂代收了,然後它再按照與商戶約定的固定周期將資金結算給 New Balance 商戶。這樣是不是好理解多了?
到此,支付的業務場景我們已經清楚了,現在我們看看作為一個支付系統需要由哪些功能模塊組成呢?
一個完整的支付系統應包括的功能:
應用管理: 同時支持公司多個業務系統對接。
商戶管理: 支持商戶入駐,商戶需要向平臺方提供相關的資料備案。
渠道管理: 支持微信、支付寶、銀聯、京東支付等多種渠道。
賬戶管理: 渠道賬戶管理,支持共享賬戶(個人商戶)及自有賬戶。
支付下單: 生成預支付訂單、提供退款服務。
通知模塊: 處理第三方支付渠道的異步通知,並將處理結果同步至業務系統。
對賬處理: 實現支付系統的交易數據與第三方支付渠道交易明細的自動核對(通常T+1),確保交易數據的準確性和一致性。
商戶清算: 計算收款交易中商戶的應收與支付系統收益。
商戶結算: 根據清算結果,將資金劃撥至商戶對應的資金帳戶中。
2016-06-26 發布 支付系統開發的實踐與思考(一)