當前位置:首頁 >  站長 >  編程技術 >  正文

在線支付系統的流程和概念探討

 2017-04-18 14:58  來源: 互聯網   我來投稿 撤稿糾錯

  阿里云優(yōu)惠券 先領券再下單

我們以收銀臺為例,詳細說明支付的正確打開方式。 當用戶提交訂單后,就會被引導到收銀臺上。 以某東為例,手機上是這樣的:

PC上是這樣的:

從這里我們可以看出,用戶進入收銀臺之后,首先需要選擇默認的支付方式。

支付方式指消費時付款的方式,比如現金支付、貨到付款、信用卡支付、借記卡支付、掃碼支付等。

那么有哪些支付方式適合在收銀臺上展示出來? 這就是支付應用和支付方式的關系。在這里,收銀臺是一類支付應用。

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

每個支付應用可以用的支付方式是不一樣的。比如說,掃碼收銀,可能僅支持微信和支付寶。POS支付,僅支持銀行卡。而信用卡返款,只能從其他的借記卡上去扣款。 支付應用的設計和公司的業(yè)務有關,并需要考慮在公司業(yè)務場景下的用戶支付體驗。目前應用最全的數支付寶,可以參觀下支付寶的應用(截止至2017年2月15日):

在收銀臺這個應用中,在呈現支付方式時,哪些支付方式可以提供給當前場景下的用戶來使用,哪個方式應該排在前面,這在支付系統中,是通過引導路由來實現的。

引導路由是根據支付應用、收款商戶、訂單額度等信息來決定提供給用戶的支付方式列表。

當用戶選擇一種支付方式并提交支付后,支付系統開始執(zhí)行扣款。比如用戶選擇通過招行來支付,系統就會請求招行來扣款嗎? 這不一定,因為系統有可能并沒有接入到招行接口。除了招行自己的接口外,第三方支付公司、銀聯等,也可以從招行卡上扣款。那應該使用哪個通道合適? 這是通過支付路由來決定的。

支付路由指根據用戶選擇的支付方式,結合費率、QOS等因素,選擇合適的銀行或者其他公司提供的支付接口來完成資金轉移操作。

通過支付路由,我們可以定位到一個落地來執(zhí)行的支付接口。

支付接口,指由銀行提供的用來執(zhí)行支付的接口。這里要注意,對于同一家銀行,除了總行可以提供一個接口,各地的分行也可以提供這個接口。 但一般來說,同一家銀行的接口規(guī)范是一樣的,不同的是提供接口的服務器、費率、性能等。

比如,支付公司可以接入工行總行、工行上海分行、工行北京分行的接口。為什么要接入分行呢? 一般來說,不少分行會提供更優(yōu)惠的接入費率,以及經常會舉辦一些活動來吸引用戶接入。

支付通道,這是對支付接口的一個封裝,包含合作銀行以及通道成本、商戶費率、QOS等信息;

銀行和第三方支付等渠道提供給電商公司使用的接口,往往都會封裝成支付產品。

支付產品指將支付通道打包成滿足某特定支付場景需求的商品,比如信用卡快捷、信用卡Moto等。

在這里我們把涉及到的幾個概念都做了定義。 當然,這些定義僅僅是從約定俗成的角度來描述,不具有學術意義。 不同的公司,對這些名稱叫法還不完全一致。 比如支付通道,有些叫渠道,有些公司叫網關。這里統一一下稱呼,避免混淆。 總的來說,支付系統是把支付通道提供的“支付產品” 使用支付路由來封裝成業(yè)務需要的“支付產品”。這就是支付的核心流程。支付路由在其中起著關鍵作用。

參與者

支付系統會涉及到如下參與者。

客戶

客戶指與某個商家有交易關系并且存在未清償的債權和債務關系的一方。 客戶使用自己擁有的支付工具來發(fā)起支付,是支付操作運作的發(fā)起者之一。在交易中,也成為交易主體。

商家

商家是擁有債權的商品出售者,他根據客戶發(fā)起的支付指令向支付系統發(fā)起請求,要求獲取資金。 商家需要獲取和支付系統接入的權限,一般是在服務器端和支付系統交互。

客戶開戶行

也成為發(fā)卡行、發(fā)卡機構等。 指客戶擁有賬戶的支付渠道。 客戶需要使用支付渠道所支持的支付工具來發(fā)起支付。這個工具也意味著一種信用,保證支付工具的兌付。

商戶開戶行

指商家用來接受資金的賬戶的所在銀行。 商戶將客戶指令提交給其開戶行后,由開戶行發(fā)起支付授權的請求進行銀行間清算的工作。 商家開戶行是根據商家提供的賬單工作的,也成為收單機構。

運營人員

支付系統的運營人員除了常規(guī)的業(yè)務拓展外,還負責對支付業(yè)務狀態(tài)進行監(jiān)測,配置和管理渠道的密碼秘鑰、對賬處理等日常工作。

風控人員

一般風控和運營是分開的。 風控人員負責每天審核被攔截的交易的情況,發(fā)現可能潛在的風險,配置風控規(guī)則,確保支付系統的資金安全。

財務會計

和錢打交道,在任何公司,都跑不掉財務部門。 那財務部門會關注哪些內容? 當然,最重要的是賬務信息。 所有的交易都要記賬,按要求公司都需要定期做審計,每一筆帳都不能出錯。這當然不能等到審計的時候再去核對,而是每天都需要對賬,確保所有的交易支出相抵,也就是所說的把賬給平了。 這就有三種情況: 電商系統和商家對賬;電商系統和支付系統對賬;支付系統和收單機構對賬。在支付系統中,我們僅關注后兩者的情況。運營人員是和“信息流”打交道,而財務會計需要和“資金流”打交道,核實每個渠道的資金情況,對備付金按照運營的要求進行充值調度等。

業(yè)務流程

我們以電商系統的訂單支付為例,看看支付系統中需要提供的基本功能。

1.用戶提交訂單到電商系統,電商系統對訂單進行檢驗,無問題則調起支付接口執(zhí)行支付。注意這里支付接口是在服務器端調起的。一般支付接口很少從客戶端直接調起。為了安全,支付接口一般要求用HTTPS來訪問,并對接口做簽名。

2.支付系統檢查參數有效性,特別是簽名的有效性。

3.根據用戶選擇的支付方式,以及系統支付路由設置,選擇合適的收單機構。這里涉及三個概念,支付方式,支付路由。這又是一個槽點。簡單說,用戶可以選擇各種銀行卡支付,比如寧波銀行卡,但是你的支付系統沒有對接寧波銀行,那對這種卡,可以選擇你接入的,支持這個卡的收單機構來執(zhí)行支付,如用微信或者支付寶等等第三方支付,或者銀聯支付等系統支持的方式來執(zhí)行。這就是支付路由,根據用戶提供的銀行卡來選擇合適的收單機構去執(zhí)行支付。常用支付方式還包括第三方支付,如微信支付寶等,這種情況下就不需要支付路由了。

4.調用收單接口執(zhí)行支付。這是支付系統的核心。每個公司的收單接口都不一樣,接入一兩個收單機構還好,接入的多了,如何統一這些接口,就是一個設計難點。

5.支付成功,收單機構把錢打到商戶的賬戶上了。 商家就準備發(fā)貨了。 怎么發(fā)貨,不是本文的重點。 這里關注的要點是, 商家能收到多少錢? 比如100塊錢的商品,用戶支付了100塊錢(運費、打折等另算),這100塊錢,還要刨去電商系統的傭金、支付通道的手續(xù)費,才能最終落到商家手里。

這是個Happy流程,一切看起來都很美好,但實際上步步都是坑,一旦有地方考慮不周全,輕者掉單頻發(fā),重者接口被盜刷,損失慘重。

  • 如何避免攻擊者修改支付接口參數, 比如100塊錢的東西,改成10塊錢?
  • 調用收單接口來執(zhí)行最終實際支付時,如果支付失敗了,比如卡上沒錢了,怎么辦?
  • 收單接口把賬戶上的錢扣走了,但是通知支付系統的時候出錯了(比如網絡閃斷,或者支付系統重啟了),支付系統不知道這筆交易已經達成了,怎么處理?
  • 還有好多問題….

非功能需求

從軟件開發(fā)角度, 還有一些非功能性需求需要實現:

  • 性能: 特別是秒殺的時候,如何滿足高頻率的支付需求?
  • 可靠性:不用說,系統能達到幾個9,是衡量軟件設計功力的重要指標。 99%是基礎, 99.999%是目標,更多的9哪就是神了。
  • 易用性:支付中多一個步驟,就會流失至少2%的用戶。 產品經理都在削尖腦袋想想怎么讓用戶趕*錢。
  • 可擴展性: 近年來支付業(yè)務創(chuàng)新產品多,一元購、紅包、打賞等,還有各種的支付場景。 怎么能夠快速滿足產品經理的需求,盡快上線來搶占市場,可擴展性對支付系統設計也是一個挑戰(zhàn)。
  • 可伸縮性:為了支持公司業(yè)務,搞一些促銷活動是必須的。 那促銷帶來的爆發(fā)流量,最佳應對方法就是加機器了。 平時流量低,用不了那么多機器,該釋放的就釋放掉了, 給公司省點錢。

這里從流程和概念的角度分析支付系統應該支持的基礎功能。 后續(xù)我們將以此為基礎,探討支付系統的設計。

【本文為51CTO專欄作者“鳳凰牌老熊”的原創(chuàng)稿件,轉載請通過微信公眾號“鳳凰牌老熊”聯系作者本人】

戳這里,看該作者更多好文

 

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關標簽
在線支付

相關文章

熱門排行

信息推薦