我們以收銀臺(tái)為例,詳細(xì)說明支付的正確打開方式。 當(dāng)用戶提交訂單后,就會(huì)被引導(dǎo)到收銀臺(tái)上。 以某東為例,手機(jī)上是這樣的:
PC上是這樣的:
從這里我們可以看出,用戶進(jìn)入收銀臺(tái)之后,首先需要選擇默認(rèn)的支付方式。
支付方式指消費(fèi)時(shí)付款的方式,比如現(xiàn)金支付、貨到付款、信用卡支付、借記卡支付、掃碼支付等。
那么有哪些支付方式適合在收銀臺(tái)上展示出來? 這就是支付應(yīng)用和支付方式的關(guān)系。在這里,收銀臺(tái)是一類支付應(yīng)用。
支付應(yīng)用指提供給最終用戶在特定場景下使用的產(chǎn)品,比如掃碼收銀、二維碼支付、打賞、眾籌、POS支付、生活繳費(fèi)、信用卡返款、手機(jī)充值等。 這些應(yīng)用是建立在支付產(chǎn)品的基礎(chǔ)之上,直接面向最終的用戶提供服務(wù)。
每個(gè)支付應(yīng)用可以用的支付方式是不一樣的。比如說,掃碼收銀,可能僅支持微信和支付寶。POS支付,僅支持銀行卡。而信用卡返款,只能從其他的借記卡上去扣款。 支付應(yīng)用的設(shè)計(jì)和公司的業(yè)務(wù)有關(guān),并需要考慮在公司業(yè)務(wù)場景下的用戶支付體驗(yàn)。目前應(yīng)用最全的數(shù)支付寶,可以參觀下支付寶的應(yīng)用(截止至2017年2月15日):
在收銀臺(tái)這個(gè)應(yīng)用中,在呈現(xiàn)支付方式時(shí),哪些支付方式可以提供給當(dāng)前場景下的用戶來使用,哪個(gè)方式應(yīng)該排在前面,這在支付系統(tǒng)中,是通過引導(dǎo)路由來實(shí)現(xiàn)的。
引導(dǎo)路由是根據(jù)支付應(yīng)用、收款商戶、訂單額度等信息來決定提供給用戶的支付方式列表。
當(dāng)用戶選擇一種支付方式并提交支付后,支付系統(tǒng)開始執(zhí)行扣款。比如用戶選擇通過招行來支付,系統(tǒng)就會(huì)請(qǐng)求招行來扣款嗎? 這不一定,因?yàn)橄到y(tǒng)有可能并沒有接入到招行接口。除了招行自己的接口外,第三方支付公司、銀聯(lián)等,也可以從招行卡上扣款。那應(yīng)該使用哪個(gè)通道合適? 這是通過支付路由來決定的。
支付路由指根據(jù)用戶選擇的支付方式,結(jié)合費(fèi)率、QOS等因素,選擇合適的銀行或者其他公司提供的支付接口來完成資金轉(zhuǎn)移操作。
通過支付路由,我們可以定位到一個(gè)落地來執(zhí)行的支付接口。
支付接口,指由銀行提供的用來執(zhí)行支付的接口。這里要注意,對(duì)于同一家銀行,除了總行可以提供一個(gè)接口,各地的分行也可以提供這個(gè)接口。 但一般來說,同一家銀行的接口規(guī)范是一樣的,不同的是提供接口的服務(wù)器、費(fèi)率、性能等。
比如,支付公司可以接入工行總行、工行上海分行、工行北京分行的接口。為什么要接入分行呢? 一般來說,不少分行會(huì)提供更優(yōu)惠的接入費(fèi)率,以及經(jīng)常會(huì)舉辦一些活動(dòng)來吸引用戶接入。
支付通道,這是對(duì)支付接口的一個(gè)封裝,包含合作銀行以及通道成本、商戶費(fèi)率、QOS等信息;
銀行和第三方支付等渠道提供給電商公司使用的接口,往往都會(huì)封裝成支付產(chǎn)品。
支付產(chǎn)品指將支付通道打包成滿足某特定支付場景需求的商品,比如信用卡快捷、信用卡Moto等。
在這里我們把涉及到的幾個(gè)概念都做了定義。 當(dāng)然,這些定義僅僅是從約定俗成的角度來描述,不具有學(xué)術(shù)意義。 不同的公司,對(duì)這些名稱叫法還不完全一致。 比如支付通道,有些叫渠道,有些公司叫網(wǎng)關(guān)。這里統(tǒng)一一下稱呼,避免混淆。 總的來說,支付系統(tǒng)是把支付通道提供的“支付產(chǎn)品” 使用支付路由來封裝成業(yè)務(wù)需要的“支付產(chǎn)品”。這就是支付的核心流程。支付路由在其中起著關(guān)鍵作用。
參與者
支付系統(tǒng)會(huì)涉及到如下參與者。
客戶
客戶指與某個(gè)商家有交易關(guān)系并且存在未清償?shù)膫鶛?quán)和債務(wù)關(guān)系的一方。 客戶使用自己擁有的支付工具來發(fā)起支付,是支付操作運(yùn)作的發(fā)起者之一。在交易中,也成為交易主體。
商家
商家是擁有債權(quán)的商品出售者,他根據(jù)客戶發(fā)起的支付指令向支付系統(tǒng)發(fā)起請(qǐng)求,要求獲取資金。 商家需要獲取和支付系統(tǒng)接入的權(quán)限,一般是在服務(wù)器端和支付系統(tǒng)交互。
客戶開戶行
也成為發(fā)卡行、發(fā)卡機(jī)構(gòu)等。 指客戶擁有賬戶的支付渠道。 客戶需要使用支付渠道所支持的支付工具來發(fā)起支付。這個(gè)工具也意味著一種信用,保證支付工具的兌付。
商戶開戶行
指商家用來接受資金的賬戶的所在銀行。 商戶將客戶指令提交給其開戶行后,由開戶行發(fā)起支付授權(quán)的請(qǐng)求進(jìn)行銀行間清算的工作。 商家開戶行是根據(jù)商家提供的賬單工作的,也成為收單機(jī)構(gòu)。
運(yùn)營人員
支付系統(tǒng)的運(yùn)營人員除了常規(guī)的業(yè)務(wù)拓展外,還負(fù)責(zé)對(duì)支付業(yè)務(wù)狀態(tài)進(jìn)行監(jiān)測,配置和管理渠道的密碼秘鑰、對(duì)賬處理等日常工作。
風(fēng)控人員
一般風(fēng)控和運(yùn)營是分開的。 風(fēng)控人員負(fù)責(zé)每天審核被攔截的交易的情況,發(fā)現(xiàn)可能潛在的風(fēng)險(xiǎn),配置風(fēng)控規(guī)則,確保支付系統(tǒng)的資金安全。
財(cái)務(wù)會(huì)計(jì)
和錢打交道,在任何公司,都跑不掉財(cái)務(wù)部門。 那財(cái)務(wù)部門會(huì)關(guān)注哪些內(nèi)容? 當(dāng)然,最重要的是賬務(wù)信息。 所有的交易都要記賬,按要求公司都需要定期做審計(jì),每一筆帳都不能出錯(cuò)。這當(dāng)然不能等到審計(jì)的時(shí)候再去核對(duì),而是每天都需要對(duì)賬,確保所有的交易支出相抵,也就是所說的把賬給平了。 這就有三種情況: 電商系統(tǒng)和商家對(duì)賬;電商系統(tǒng)和支付系統(tǒng)對(duì)賬;支付系統(tǒng)和收單機(jī)構(gòu)對(duì)賬。在支付系統(tǒng)中,我們僅關(guān)注后兩者的情況。運(yùn)營人員是和“信息流”打交道,而財(cái)務(wù)會(huì)計(jì)需要和“資金流”打交道,核實(shí)每個(gè)渠道的資金情況,對(duì)備付金按照運(yùn)營的要求進(jìn)行充值調(diào)度等。
業(yè)務(wù)流程
我們以電商系統(tǒng)的訂單支付為例,看看支付系統(tǒng)中需要提供的基本功能。
1.用戶提交訂單到電商系統(tǒng),電商系統(tǒng)對(duì)訂單進(jìn)行檢驗(yàn),無問題則調(diào)起支付接口執(zhí)行支付。注意這里支付接口是在服務(wù)器端調(diào)起的。一般支付接口很少從客戶端直接調(diào)起。為了安全,支付接口一般要求用HTTPS來訪問,并對(duì)接口做簽名。
2.支付系統(tǒng)檢查參數(shù)有效性,特別是簽名的有效性。
3.根據(jù)用戶選擇的支付方式,以及系統(tǒng)支付路由設(shè)置,選擇合適的收單機(jī)構(gòu)。這里涉及三個(gè)概念,支付方式,支付路由。這又是一個(gè)槽點(diǎn)。簡單說,用戶可以選擇各種銀行卡支付,比如寧波銀行卡,但是你的支付系統(tǒng)沒有對(duì)接寧波銀行,那對(duì)這種卡,可以選擇你接入的,支持這個(gè)卡的收單機(jī)構(gòu)來執(zhí)行支付,如用微信或者支付寶等等第三方支付,或者銀聯(lián)支付等系統(tǒng)支持的方式來執(zhí)行。這就是支付路由,根據(jù)用戶提供的銀行卡來選擇合適的收單機(jī)構(gòu)去執(zhí)行支付。常用支付方式還包括第三方支付,如微信支付寶等,這種情況下就不需要支付路由了。
4.調(diào)用收單接口執(zhí)行支付。這是支付系統(tǒng)的核心。每個(gè)公司的收單接口都不一樣,接入一兩個(gè)收單機(jī)構(gòu)還好,接入的多了,如何統(tǒng)一這些接口,就是一個(gè)設(shè)計(jì)難點(diǎn)。
5.支付成功,收單機(jī)構(gòu)把錢打到商戶的賬戶上了。 商家就準(zhǔn)備發(fā)貨了。 怎么發(fā)貨,不是本文的重點(diǎn)。 這里關(guān)注的要點(diǎn)是, 商家能收到多少錢? 比如100塊錢的商品,用戶支付了100塊錢(運(yùn)費(fèi)、打折等另算),這100塊錢,還要刨去電商系統(tǒng)的傭金、支付通道的手續(xù)費(fèi),才能最終落到商家手里。
這是個(gè)Happy流程,一切看起來都很美好,但實(shí)際上步步都是坑,一旦有地方考慮不周全,輕者掉單頻發(fā),重者接口被盜刷,損失慘重。
- 如何避免攻擊者修改支付接口參數(shù), 比如100塊錢的東西,改成10塊錢?
- 調(diào)用收單接口來執(zhí)行最終實(shí)際支付時(shí),如果支付失敗了,比如卡上沒錢了,怎么辦?
- 收單接口把賬戶上的錢扣走了,但是通知支付系統(tǒng)的時(shí)候出錯(cuò)了(比如網(wǎng)絡(luò)閃斷,或者支付系統(tǒng)重啟了),支付系統(tǒng)不知道這筆交易已經(jīng)達(dá)成了,怎么處理?
- 還有好多問題….
非功能需求
從軟件開發(fā)角度, 還有一些非功能性需求需要實(shí)現(xiàn):
- 性能: 特別是秒殺的時(shí)候,如何滿足高頻率的支付需求?
- 可靠性:不用說,系統(tǒng)能達(dá)到幾個(gè)9,是衡量軟件設(shè)計(jì)功力的重要指標(biāo)。 99%是基礎(chǔ), 99.999%是目標(biāo),更多的9哪就是神了。
- 易用性:支付中多一個(gè)步驟,就會(huì)流失至少2%的用戶。 產(chǎn)品經(jīng)理都在削尖腦袋想想怎么讓用戶趕*錢。
- 可擴(kuò)展性: 近年來支付業(yè)務(wù)創(chuàng)新產(chǎn)品多,一元購、紅包、打賞等,還有各種的支付場景。 怎么能夠快速滿足產(chǎn)品經(jīng)理的需求,盡快上線來搶占市場,可擴(kuò)展性對(duì)支付系統(tǒng)設(shè)計(jì)也是一個(gè)挑戰(zhàn)。
- 可伸縮性:為了支持公司業(yè)務(wù),搞一些促銷活動(dòng)是必須的。 那促銷帶來的爆發(fā)流量,最佳應(yīng)對(duì)方法就是加機(jī)器了。 平時(shí)流量低,用不了那么多機(jī)器,該釋放的就釋放掉了, 給公司省點(diǎn)錢。
這里從流程和概念的角度分析支付系統(tǒng)應(yīng)該支持的基礎(chǔ)功能。 后續(xù)我們將以此為基礎(chǔ),探討支付系統(tǒng)的設(shè)計(jì)。
【本文為51CTO專欄作者“鳳凰牌老熊”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過微信公眾號(hào)“鳳凰牌老熊”聯(lián)系作者本人】
戳這里,看該作者更多好文
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!