收銀核心和支付引擎是支付系統(tǒng)最核心的兩個子系統(tǒng)之一。本篇主要講清楚收銀核心的設計與實現(xiàn),包括收銀核心如何渲染可用支付方式,如何做可支付檢查,收銀臺核心的系統(tǒng)架構(gòu)、領(lǐng)域模型,常見支付方式等。

今天聊下收銀臺后端服務設計。
收銀臺并不只是我們在電商購物時看到的那一個簡單的頁面,背后有很復雜的業(yè)務邏輯,比如:如何計算出哪些支付方式可以使用?哪些支付方式放前面?如何推進支付?如何在最短的時間內(nèi)拿到最多可用的支付方式?
一、收銀臺與收銀核心
收銀臺是一個很寬的概念,且每個公司的定義都不一樣。比如有標準收銀臺、前置收銀臺、SDK收銀臺、APP收銀臺、PC收銀臺、H5收銀臺等,不一而足。
這些說的都是對客展示形式,顧名思義,標準收銀臺就是收支付平臺提供的收銀臺終端,比如微信支付和支付寶提供的收銀臺,而前置收銀臺是電商自己封裝收銀臺,支付平臺只提供數(shù)據(jù)服務。
在更底層,就是收銀臺核心,負責收銀臺后端服務的實現(xiàn)。每個公司都提供多種收銀臺對客展示形式,但是都只有一個收銀臺核心。
二、收銀核心與支付引擎
很多公司把收銀核心和支付引擎合二為一,統(tǒng)稱為收銀支付,也有一些公司是把這兩塊分開設計。
我個人更傾向于分開。
- 收銀核心:負責支付前的所有工作,比如基礎(chǔ)權(quán)限校驗、可支付檢查、支付方式渲染、調(diào)用風控、支付結(jié)果輪詢等。
- 支付引擎:直接執(zhí)行支付扣款,比如扣余額、扣營銷券、扣外部渠道。
先給一個直觀的協(xié)同作戰(zhàn)的圖,有一個整體的印象。

三、收銀核心在支付系統(tǒng)中的位置

收銀核心是支付系統(tǒng)的門面,負責處理用戶的支付請求,核心能力就兩個:1)支付方式咨詢,告訴用戶本次可以使用哪些支付方式。2)提交支付后的各種校驗,比如訂單是否有效,商戶權(quán)限,用戶身份,風控等。
四、支付咨詢

上面的圖分別是電商(京東)的收銀臺,支付平臺(微信支付)的收銀臺。

支付咨詢階段,需要做以下幾個工作:
- 基礎(chǔ)檢查:可支付檢查(有可能訂單已經(jīng)已經(jīng)被支付),用戶檢查,商戶檢查等。
- 資產(chǎn)咨詢:綁卡數(shù)據(jù),賬戶余額,營銷(比如滿減、紅包等)。
- 渠道咨詢:通過幣種、金額、渠道開關(guān)等。
- 額度咨詢:單筆限額、日累計限額、月累計限額等。
- 支付方式組裝:把上面的資產(chǎn)、渠道等組裝成用戶方便理解的支付方式。
- 支付方式排序:把用戶可用支付方式做好推薦排序(既要考慮用戶體驗,又要考慮營銷策略)。
最后把支付方式返回給用戶,供用戶在支付時選擇。
五、支付受理

用戶選擇支付方式后,點擊“確認支付”,就到了支付受理階段。主要做以下幾個工作:
在支付咨詢階段的工作全部做一遍。因為用戶在支付方式渲染后有可能過了很久才支付,很多數(shù)據(jù)在后臺可能已經(jīng)發(fā)生變化,比如余額變了,或者訂單已經(jīng)過期了等情況。
全部通過后,調(diào)用風控進行風險判斷。
如果是外部渠道的卡支付,還需要調(diào)用渠道路由,選擇出一條最優(yōu)的渠道。
然后是提交支付請求到支付引擎進行真實扣款。
最后是從收單平臺輪詢交易結(jié)果。
特別說明一下:為什么輪詢結(jié)果是以收單平臺為準而不是以支付引擎為準?因為對用戶而言,收單的結(jié)果代表最終的支付結(jié)果。比如用戶支付回來后,支付引擎是成功的,但是收單平臺因為已經(jīng)訂單過期關(guān)閉,就會發(fā)起資金退回操作,這樣收單平臺的訂單實際是沒有支付成功的。就會類似這樣提示用戶:“訂單已關(guān)閉,如果已經(jīng)扣款,支付款項預計在15個工作日內(nèi)原路退回?!?/p>
六、收銀核心系統(tǒng)架構(gòu)

提供給用戶有多種支付方式:卡、余額、網(wǎng)銀等。收單產(chǎn)品主要包括:標準收銀臺,前置收銀臺,掃碼付等。其中標準收銀是由支付平臺提供,需要跳轉(zhuǎn)到支付平臺,而前置收銀臺是直接嵌入到商戶收銀臺里面完成支付。核心服務包括:支付咨詢、支付受理、風控挑戰(zhàn)并支付等。外部依賴主要有:會員、商服、卡中心、風控、渠道網(wǎng)關(guān)、支付引擎等。
七、收銀核心領(lǐng)域模型

有人好奇:為什么收銀臺連數(shù)據(jù)庫都沒有,卻也設計模型?不設計行不行?之所以設計設計模型,就是為了更好地理解和體現(xiàn)業(yè)務的本質(zhì)。不設計也是可以的,簡單實用,但對于一些復雜的場景或新增的能力,就容易修改出問題。模型最大的好處是把各種要素分門別類好,減少雜亂,能快速評估出需要修改模型的哪個點。
八、常見支付方式
快捷支付
通過在支付系統(tǒng)中提前綁定銀行卡信息,快速完成支付交易,不需要每次都填寫完整的卡詳情。
代扣/協(xié)議支付
個人授權(quán)商戶直接去支付平臺或銀行進行扣款,不需要用戶參與支付過程。比如水電煤代扣,滴滴打車代扣。
卡支付
使用信用卡或借記卡支付。
網(wǎng)銀支付
需要跳轉(zhuǎn)到銀行提供的支付頁面,輸入銀行賬戶信息進行支付。
VA支付
Virtual Account。虛擬賬戶是銀行臨時生成的一個賬戶,與用戶和訂單臨時關(guān)聯(lián)。一般在東南亞的支付場景,或者國際收款場景下使用得比較多。東南亞很多人沒有銀行卡,但又要在線買東西,就可以臨時生成一個VA。以支付流程為例:用戶選擇某個銀行的VA支付方式,支付系統(tǒng)調(diào)用銀行接口,先為用戶訂單生成一個VA號,用戶拿著VA去錢下ATM機轉(zhuǎn)賬,銀行收到錢后,通知支付系統(tǒng),支付系統(tǒng)再通知商戶,商戶給用戶發(fā)貨。
OTC支付
Over-the-Counter。柜臺支付。一般指大型連鎖線下零售商提供的支付能力,比如7-11或肯德基提供的支付能力。整體流程和VA很像。區(qū)別在于VA通常指銀行提供的。同樣以支付流程為例:用戶選擇某個OTC服務提供商的OTC支付方式,比如7-11,支付系統(tǒng)調(diào)用7-11接口,先為用戶訂單生成一個OTC碼,用戶拿著OTC碼去錢下7-11柜臺拿現(xiàn)金充值,7-11收到錢后,通知支付系統(tǒng),支付系統(tǒng)再通知商戶,商戶給用戶發(fā)貨。
第三方錢包支付
非銀行機構(gòu)提供的在線支付服務。比如支付寶、微信支付,國外的PayPal等。
余額支付
使用賬戶余額進行支付。
正掃
商戶生成二維碼,用戶掃商戶二維碼。
反掃
消費者生成二維碼,商戶掃消費者的二維碼。
九、結(jié)束語
每個公司對于收銀核心的設計可能各有不同,但無外乎就是如何為用戶計算出可用的支付方式,提交支付后做各種檢查,然后調(diào)用支付引擎去做真正的支付。這里只講了收銀核心,也就是所謂的后端服務。前端或APP端的渲染也是一門大學問。內(nèi)容已收錄“圖解支付系統(tǒng)設計與實現(xiàn)”。
本文由人人都是產(chǎn)品經(jīng)理作者【隱墨星辰】,微信公眾號:【隱墨星辰】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于 CC0 協(xié)議。