“支付通道”接入和管理
如今,支付通道已經(jīng)是日常生活和商業(yè)交易中不可或缺的部分,也是各種支付業(yè)務(wù)的基礎(chǔ)。本文作者對(duì)如何接入支付通道及規(guī)劃通道管理系統(tǒng)相關(guān)功能進(jìn)行了分析,一起來(lái)看一下吧。
從最初的現(xiàn)金支付到當(dāng)下的電子支付,支付通道已然是日常生活和商業(yè)交易中不可或缺的部分,也是各種支付業(yè)務(wù)的基礎(chǔ)。本文將詳細(xì)解析如何接入支付通道及規(guī)劃通道管理系統(tǒng)相關(guān)功能。
01 什么是支付通道
以運(yùn)輸貨物為例,要將一批貨從A地運(yùn)到B地,可實(shí)現(xiàn)的運(yùn)輸方式有路運(yùn)、海運(yùn)、鐵運(yùn)、空運(yùn)。相同的目的地,不同的運(yùn)輸方式,往往還有許多不同的航道、鐵道和公路可供選擇,只不過(guò)過(guò)程中耗費(fèi)的時(shí)間、承擔(dān)的風(fēng)險(xiǎn)、金錢(qián)成本不同而已。
1. 支付通道概念
類(lèi)似于運(yùn)輸,支付通道的本質(zhì)是通過(guò)構(gòu)建一個(gè)個(gè)信息交換的環(huán)境,用于支持交易過(guò)程中多方之間的信息的傳遞和驗(yàn)證,以實(shí)現(xiàn)交易資金的流動(dòng),最終促進(jìn)交易的完成。
狹義上支付通道是指交易時(shí)連接消費(fèi)者、商家和銀行各方錢(qián)包賬戶的網(wǎng)絡(luò)通路,而從廣義上來(lái)看,只要能需滿足支付的需求,并將信息、資金成功安全地轉(zhuǎn)移給對(duì)應(yīng)的收款方的路徑,即使是企業(yè)的用積分去支付、利用虛擬卡、利用虛擬賬戶等內(nèi)部的資產(chǎn)形式來(lái)支付,與這些管理資產(chǎn)的系統(tǒng)對(duì)接接入,我們可以說(shuō)接入了“內(nèi)部的虛擬支付通道”。
2. 支付通道的分類(lèi)
隨著支付行業(yè)的發(fā)展,不同支付場(chǎng)景催生出多種多樣的支付通道,不同的通道細(xì)分出了不同的特點(diǎn),我們可以從多個(gè)不同的維度進(jìn)行分類(lèi),來(lái)更好地感知支付通道的差異。例如:
- 支持不同卡類(lèi)型的通道:僅支持借記卡的通道、僅支持貸記卡的通道、借貸卡都支持的通道;
- 扣款交互模式不同的通道:扣款前需要簽約、鑒權(quán)的快捷通道、可建立預(yù)付授權(quán)關(guān)系,用于信用卡還款和水電煤繳費(fèi)的代扣通道、需跳轉(zhuǎn)銀行頁(yè)面進(jìn)行付款的網(wǎng)銀通道、通常被用于手機(jī)話費(fèi)支付和流量充值等業(yè)務(wù)的手機(jī)運(yùn)營(yíng)商鑒權(quán)通道、支付時(shí)使用微信、支付寶等第三方支付平臺(tái)輸入支付密碼或者進(jìn)行指紋識(shí)別等進(jìn)行認(rèn)證的身份認(rèn)證通道;
- 交易支持不同發(fā)起方的通道:持卡人(用戶)發(fā)起、商戶(平臺(tái))發(fā)起;
- 有不同行業(yè)限制的通道:微信代扣就僅限符合周期扣費(fèi)和先享后付場(chǎng)景的行業(yè)使用,會(huì)員續(xù)費(fèi)、水電煤民生類(lèi)行業(yè)、打車(chē)、酒店類(lèi)行業(yè)、停車(chē)場(chǎng)或高速公路無(wú)人繳費(fèi);
- 扣款要素不同的通道:如網(wǎng)銀需要卡號(hào)和密碼二要素、快捷則需要驗(yàn)證卡號(hào)/賬號(hào)、戶名、證件號(hào)、手機(jī)號(hào)四要素;
- 支付標(biāo)的物不同的通道:比如用積分來(lái)支付、銀行卡支付、代幣支付、虛擬幣支付、銀行卡支付等。
1)根據(jù)通道的用途
通道的用途,顧名思義就是通道的功能,直白一點(diǎn)就是用來(lái)干嘛的,分為收款、付款、認(rèn)證、跨境等。
- 收款通道:常說(shuō)做支付要先做收單,收款通道就是實(shí)現(xiàn)讓別人的“資產(chǎn)”付給自己的通道,打比方有早餐店“掃碼支付”收錢(qián)立牌、線下商超的POS機(jī)支付、各類(lèi)公交地鐵卡和乘車(chē)碼。
- 出款通道:“出來(lái)混總是要還的”,出款通道能夠?qū)崿F(xiàn)把自己的錢(qián)付給別人,好比公司給我們發(fā)工資的代付通道、靈活用工通道、銀企直連通道。
- 鑒權(quán)通道:鑒權(quán)通道可以被想象成一條連接交易雙方之間的安全通道,要先經(jīng)過(guò)驗(yàn)證,才能通往支付之門(mén)。常見(jiàn)有銀行卡簽約驗(yàn)證;身份信息認(rèn)證(四要素等),像賬戶的一些實(shí)名認(rèn)證以及銀行卡的綁定都需要用到;3D-Secure(3DS),一種用于網(wǎng)上支付的安全協(xié)議;指紋識(shí)別、面部識(shí)別等生物識(shí)別技術(shù),通過(guò)授權(quán)人的生物特征來(lái)進(jìn)行鑒權(quán)。
2)根據(jù)通道支持的對(duì)象
通道支持的對(duì)象,指的是支付交易的雙方是誰(shuí),可以是個(gè)人、企業(yè)、組織等,通常我們區(qū)分為對(duì)公和對(duì)私。
- 對(duì)公通道:用于企業(yè)賬戶支付,包括企業(yè)網(wǎng)銀,企業(yè)賬戶代扣,企業(yè)轉(zhuǎn)賬等等。
- 對(duì)私通道:用于個(gè)人賬戶支付,包括銀行卡支付,微信、支付寶等三方個(gè)人賬戶支付。
3)按渠道提供方分類(lèi)
其實(shí)支付通道是分層次的,下層為上層服務(wù)。不同的角色(按有無(wú)支付牌照、金融資質(zhì)區(qū)分)對(duì)應(yīng)所需的通道提供方是不同的。
- 對(duì)于普通企業(yè):通道的提供方是具有支付牌照的三方公司如支付寶、微信支付;各個(gè)銀行;或者是企業(yè)自己內(nèi)部搭建的虛擬賬戶支付通道、卡券支付通道、積分支付通道等。
- 對(duì)于三方支付機(jī)構(gòu):那些有支付牌照,能對(duì)外提供支付能力的三方機(jī)構(gòu),他們需要的通道則是金融機(jī)構(gòu)(銀行、網(wǎng)聯(lián)、銀聯(lián))的核心系統(tǒng)。
- 對(duì)于銀行:銀行所需的通道就是央行(也就是人行)的大小額系統(tǒng)、超級(jí)網(wǎng)銀系統(tǒng),這幾個(gè)通道也是金融活動(dòng)的根基。
4)其他分類(lèi)
根據(jù)支付方式:就是用戶在平臺(tái)下單后調(diào)起收銀臺(tái)看到各種各樣支付方式,包括云閃付、支付寶、微信支付、Apple Pay等。如京東PC收銀臺(tái)就有2個(gè)支付品牌,京東支付和微信支付;3個(gè)支付方式,白條、小金庫(kù)、微信掃碼支付。
- 根據(jù)支付場(chǎng)景:包括線上支付、線下支付、跨境支付等。假設(shè)你深夜餓了,通過(guò)餓了么點(diǎn)外賣(mài)之后支付寶線上支付,或者出去樓下實(shí)體店面吃一碗隆江豬腳飯用二維碼線下支付,然后早上醒來(lái)后像梁朝偉一樣去倫敦喂鴿子,想喝一杯咖啡就需要用到跨境支付了。
- 根據(jù)支付保障機(jī)制:包括擔(dān)保交易(拍賣(mài)網(wǎng)站的拍賣(mài)交易就是一種擔(dān)保交易方式)、中介支付(像電商支付平臺(tái),買(mǎi)家付款后會(huì)將資金凍結(jié),待確認(rèn)收貨后才會(huì)把錢(qián)付給賣(mài)家)、風(fēng)控評(píng)估(例如,貸款公司對(duì)借款人進(jìn)行風(fēng)險(xiǎn)評(píng)估,判斷其還款能力和信用水平)等。
對(duì)支付通道有了初步的認(rèn)識(shí)之后,我們來(lái)假定以下這樣一個(gè)場(chǎng)景。假如你的公司要上線一個(gè)新業(yè)務(wù),涉及到線上交易,需要你來(lái)負(fù)責(zé)接入支付,你會(huì)怎么處理。
3. 支付通道的結(jié)構(gòu)關(guān)系
要深如了解支付通道,我們還需要知道一個(gè)通道在支付體系中所存在的結(jié)構(gòu)關(guān)系,這也是很多人容易混淆的,特別是支付方式、支付通道、支付品牌、支付產(chǎn)品、支付合作方之間的關(guān)系。
支付方式、通道和品牌上文已經(jīng)釋義過(guò),而什么是支付產(chǎn)品呢,我們借用微信支付的定義,支付產(chǎn)品其實(shí)就是支付機(jī)構(gòu)針對(duì)某個(gè)支付場(chǎng)景,提供給外放使用的一套“解決方案”,其最基礎(chǔ)也是最核心需要包含“支付通道”和“賬戶”兩個(gè)服務(wù),然后才能結(jié)合不同的場(chǎng)景包裝出不同的產(chǎn)品。
1)支付通道-支付方式的關(guān)系
同一個(gè)支付方式,除了自身的官方通道,往往也會(huì)授權(quán)其他機(jī)構(gòu)合作封裝出對(duì)應(yīng)通道,所以一個(gè)支付方式是由多個(gè)支付通道可以選擇。
2)支付通道-支付合作方的關(guān)系
支付通道跟不同的合作方,又是處于什么關(guān)系呢。假設(shè)“光企業(yè)”要通過(guò)易票聯(lián)接入微信支付的通道,那這條通道跟各個(gè)機(jī)構(gòu)的關(guān)系如下。
3)支付通道-收付賬戶的關(guān)系
文章開(kāi)頭咱們也講過(guò),通道最終目的就算將不同收付賬戶之間的資金進(jìn)行轉(zhuǎn)移。以微信支付通道舉例,可以看到通道和賬戶之間的關(guān)系和資金的轉(zhuǎn)移。
4)普通商戶的支付通道結(jié)構(gòu)關(guān)系
作為一個(gè)普通的企業(yè),是有可能同時(shí)接入多個(gè)支付方式,因此也會(huì)有多條支付通道,那么這之間整體的關(guān)系又是怎么樣的呢。
5)普通商戶與金融機(jī)構(gòu)的支付通道結(jié)構(gòu)關(guān)系
再往下走就涉及到支付機(jī)構(gòu)和清結(jié)算機(jī)構(gòu)了。
通過(guò)上面的結(jié)構(gòu)關(guān)系分析,我們可以初步看出一個(gè)從用戶支付方式到各層支付支付組織之間的關(guān)系。
02 選擇支付通道
尋找合適的通道之前,我們來(lái)看下應(yīng)該怎么選。
假設(shè)你是光企業(yè)的物流運(yùn)輸部,你需要采購(gòu)一輛貨車(chē),那你肯定需要關(guān)注對(duì)應(yīng)貨車(chē)的屬性有哪些對(duì)吧?車(chē)型是普通貨車(chē)還是牽引車(chē)、載重總量是多少、要燃油車(chē)還是新能源等。
選通道也是,要知道通道都有哪些屬性,這些屬性就是我們?cè)谶x擇時(shí)要思考的維度,這些屬性也是后續(xù)路由去判斷的維度依據(jù)。
了解了通道的屬性,就對(duì)通道有了更直觀的認(rèn)識(shí),那么就可以基于需求區(qū)選擇所需要的通道了。
1. 基于業(yè)務(wù)和交易場(chǎng)景做選擇
要選擇什么通道,要先了解業(yè)務(wù)的場(chǎng)景,不同的業(yè)務(wù)模式需要不同的支付方式。例如,傳統(tǒng)的線下零售業(yè)務(wù)可以選擇POS機(jī)、微信支付寶的主掃、掃臉等,而線上平臺(tái)則需要根據(jù)不同的平臺(tái)進(jìn)行選擇。
打比方公司準(zhǔn)備依托微信小程序開(kāi)發(fā)一款“針對(duì)園區(qū)等高密度打工人區(qū)域的午餐外賣(mài)”產(chǎn)品,則肯定是需要選擇接入“微信小程序支付”方式的通道,而不可能選擇支付寶。當(dāng)產(chǎn)品成熟了有余力了再考慮拓展其他平臺(tái)或者接入其他支付方式的通道。
2. 多維度指標(biāo)評(píng)估預(yù)選通道
選定好合作機(jī)構(gòu)之后,可以根據(jù)下表,評(píng)估該通道是否符合公司業(yè)務(wù)需求,評(píng)估滿足需求的話,就可以著手接入了。
3. 通道的接入流程
1)參與的團(tuán)隊(duì)成員及分工
2)對(duì)接準(zhǔn)備
步驟一:明確自身需求
對(duì)接之前,先確定自己的功能需求,比如我們是做演唱會(huì)票務(wù),用戶搶票之后是不允許退款的,那此時(shí)沒(méi)有退款功能也不影響第一期上線。另外如果咱們是租賃場(chǎng)景比如租房,需要向用戶收押金,但是退款往往有時(shí)限,這個(gè)時(shí)候就需要思考其他退款辦法了,比如接入打款通道。
步驟二:明確接口文檔
一般的支付公司為了方便廣大用戶使用,提供各種不同的接口,相同的功能也進(jìn)行多變的實(shí)現(xiàn)。所以我們跟對(duì)方講清需求后,對(duì)方開(kāi)發(fā)人員通常比你更熟悉接口的使用和效果,他們很可以幫助我們快速找到最優(yōu)的接口方案。
另外,很多合作方的文檔都可能存在更新不及時(shí)問(wèn)題,可以跟對(duì)方確定清楚用哪個(gè)板本的文檔。
步驟三:研讀接口文檔
必須弄清你需要哪些接口后,我們要看清楚接口字段值怎么傳、是否必傳,以及有什么響應(yīng)碼。另外注意要和對(duì)方確定好返回結(jié)果是以碼為準(zhǔn),還是以描述為準(zhǔn)。
步驟四:輸出需求文檔
包含接入的背景,羅列功能點(diǎn),第一期做哪些。
這里先強(qiáng)調(diào)一個(gè)支付中和退款中的問(wèn)題,一定要牢記設(shè)計(jì)支付狀態(tài)要考慮中間狀態(tài),以免產(chǎn)生線上問(wèn)題。
此外安全類(lèi)對(duì)接準(zhǔn)備也需要提前溝通清楚,如IP地址白名單是否配置,怎么配置;公私鑰加簽驗(yàn)簽;接口加密解密;是否需要專(zhuān)網(wǎng)、前置機(jī)堡壘機(jī)等,作為普通企業(yè),如果不是對(duì)接銀行核心系統(tǒng)的話,一般是不需要前置機(jī)堡壘機(jī)。這個(gè)環(huán)節(jié)你也可以拉上開(kāi)發(fā)大哥協(xié)助評(píng)估。
03 通道管理系統(tǒng)設(shè)計(jì)
選擇好要接入的之后,我們就需要規(guī)劃我們的通道管理模塊,以避免后續(xù)支付業(yè)務(wù)壯大了,最基礎(chǔ)的模塊卻一團(tuán)糟,因?yàn)楹芏嗳硕际菆D快,先干上線,等到發(fā)現(xiàn)好亂了的時(shí)候,已經(jīng)為時(shí)已晚。
規(guī)劃通道管理模塊之前,我們先看下通道管理在整個(gè)業(yè)務(wù)系統(tǒng)中是在哪里發(fā)揮作用的。
上游系統(tǒng)選擇完通道,就可以拉起對(duì)應(yīng)的支付、退款、打款請(qǐng)求了。
接著我們就來(lái)分析,我需要為通道管理規(guī)劃什么樣的功能。管理管理,首先咱們肯定得知道有什么通道,才能管理吧,因此肯定需要有一個(gè)通道管理列表。
1. 通道管理列表
這里以入金通道舉例子,接入通道之后,每一條通道都有唯一的通道名稱和編碼,這個(gè)好理解,就像每個(gè)人都有身份證和名稱一樣。然后再把通道關(guān)聯(lián)上支付方式和狀態(tài),沒(méi)有其他追求的話,這個(gè)通道管理也就能用起來(lái)了。
不過(guò)咱們還是要為以后打好基礎(chǔ),站在企業(yè)的角度,咱們是不是需要核算每一次支付產(chǎn)生,企業(yè)所要付出的成本,也就是通道手續(xù)費(fèi),此時(shí)我們就需要為該通道關(guān)聯(lián)對(duì)應(yīng)的“成本規(guī)則”;比如站在運(yùn)營(yíng)/維護(hù)通道人員的角度,通道的一些商戶號(hào)、回調(diào)地址有時(shí)候也需要變更,我們是不是做成配置化會(huì)顯得更人性化;假設(shè)我們財(cái)務(wù)要知道每一筆支付是去到哪個(gè)賬戶,好去核對(duì)每天的賬目,那我們是不是需要在通道關(guān)聯(lián)“入賬賬戶”會(huì)讓后續(xù)的對(duì)賬更方便(注意這里不是指定真實(shí)的資金流渠道哪個(gè)賬戶,而是純粹的記錄,方便后續(xù)核賬)。
至于“映射通道代碼編碼”和“權(quán)重”,沒(méi)有也行?!皺?quán)重”主要是為了方便路由去兜底一個(gè)支付通道。而“映射通道代碼編碼”作用是讓運(yùn)營(yíng)和后續(xù)接手的開(kāi)發(fā)知道,這一條我們“定義的通道”對(duì)應(yīng)是走那一套真實(shí)的通道代碼。闡述一個(gè)具體情況,當(dāng)我們公司接入某家公司同一條通道,但是出于商務(wù)等原因開(kāi)通了幾個(gè)商戶號(hào),這幾個(gè)商戶號(hào)要參與路由切換,而背后對(duì)應(yīng)的代碼,則是同一套。
所以一開(kāi)始設(shè)計(jì)的時(shí)候,個(gè)人建議把我“不同真實(shí)通道+不同商戶號(hào)”為最小顆粒度,定義我們通道管理里的唯一通道。
2. 通道成本規(guī)則
通道成本規(guī)則我們?cè)O(shè)計(jì)成單獨(dú)配置規(guī)則,然后再?gòu)耐ǖ狸P(guān)聯(lián)對(duì)應(yīng)的成本規(guī)則,這樣就不用新增通道的時(shí)候反復(fù)配置同樣的成本規(guī)則。
遇到銀行卡通道的時(shí)候,不同的銀行收的費(fèi)用可能會(huì)不一樣,所以可以根據(jù)自身需求定義一個(gè)特殊銀行特殊配置,如果特殊銀行多的話,建議用導(dǎo)入配置文件的交互形式。
至于通道成本怎么用呢,其實(shí)就是在我們發(fā)起交易和退款的時(shí)候,讀取對(duì)應(yīng)通道的成本規(guī)則,計(jì)算出這一筆交易所產(chǎn)生的成本,并記錄在每一筆支付記錄里面,以后統(tǒng)計(jì)就可以很方便拉。
3. 通道參數(shù)配置
通道參數(shù)配置,一般是配置比較敏感的內(nèi)容,商戶號(hào)、請(qǐng)求地址等,記得做好菜單或者功能權(quán)限,專(zhuān)人專(zhuān)用。
04 銀行卡代扣通道接入實(shí)戰(zhàn)
1. 接入背景
為給客戶提供更快捷、更優(yōu)秀的支付體驗(yàn),我們團(tuán)隊(duì)決定開(kāi)發(fā)上線一個(gè)銀行卡代扣支付功能,讓用戶實(shí)現(xiàn)賬單的自動(dòng)代扣支付,免去繁瑣的操作。
經(jīng)過(guò)公司領(lǐng)導(dǎo)層商議,決定接入PAF協(xié)議支付這條通道。
2. 研讀接口文檔
1)接口調(diào)用流程
通過(guò)接口調(diào)用流程,我們可以看出要銀行卡代扣通道,要完成支付之前,還需要進(jìn)行簽約兩步。
第一步調(diào)用協(xié)議簽約接口進(jìn)行簽約請(qǐng)求,下發(fā)短信給用戶,用戶輸入短信后調(diào)用協(xié)議簽約短信驗(yàn)證接口驗(yàn)證驗(yàn)證碼,完成簽約;
第二步通過(guò)協(xié)議簽約返回的信息(簽約號(hào))進(jìn)行協(xié)議扣款,并同步返回交易狀態(tài)。
弄清楚流程之后,我們繼續(xù)細(xì)看接口文檔。
2)簽約環(huán)節(jié)
①協(xié)議簽約接口
就是發(fā)起協(xié)議簽約申請(qǐng),發(fā)起成功后會(huì)給持卡人下發(fā)一條短信。
可以看到這條通道申請(qǐng)協(xié)議簽約的時(shí)候,需要上送一個(gè)銀行編碼,并且這個(gè)編碼是要根據(jù)這條通道的定義來(lái),看到這里我們就要聯(lián)想起兩個(gè)問(wèn)題。
第一點(diǎn),卡簽約的時(shí)候需要知道這張卡是什么銀行卡,這個(gè)后續(xù)跟大家介紹卡bin模塊。第二點(diǎn)是,不同無(wú)卡通道有可能存在的特殊標(biāo)準(zhǔn),使用的銀行編碼標(biāo)準(zhǔn)與其他不相同,這時(shí)可以回想我們的通道屬性和特征,就存在通道銀行編碼的對(duì)應(yīng)維護(hù)了。
這里再說(shuō)一個(gè)點(diǎn),有一些通道簽約信用卡的時(shí)候,需要上送CCV和有效期,而剛好這條通道不需要,因此前端簽約頁(yè)面也需要根據(jù)不同的通道進(jìn)行路由,從這里又印證了咱們通道管理和維護(hù)還是蠻重要的。
調(diào)用簽約申請(qǐng)之后,合作方會(huì)給持卡人手機(jī)發(fā)送短信,并接口返回一個(gè)令牌號(hào)。
②短信驗(yàn)證接口
用戶輸入短信驗(yàn)證碼后,接口上送驗(yàn)證碼和令牌號(hào),就可以完成短信驗(yàn)證,驗(yàn)證通過(guò)就可以簽約成功,獲取對(duì)應(yīng)的協(xié)議號(hào)。
3)扣款和退款環(huán)節(jié)
①扣款接口
拿到簽約協(xié)議號(hào),則可以根據(jù)該協(xié)議號(hào)進(jìn)行發(fā)起扣款,咱們看接口說(shuō)明,需要特別注意交易金額這個(gè)字段,單位是分,千萬(wàn)要搞清楚交易金額的單位,別擺大烏龍。
另外咱們看到有一個(gè)后臺(tái)通知地址,他是我們發(fā)起扣款交易時(shí),指定一個(gè)交易結(jié)果的通知地址,當(dāng)交易有結(jié)果后,通道方會(huì)將結(jié)果告訴我們,按照上述地址。像更嚴(yán)密的通道方還會(huì)要求接入方進(jìn)行結(jié)果響應(yīng),并且有一套完整的通知策略。
發(fā)起扣款之后,我們就需要關(guān)注扣款是否成功,可以看到響應(yīng)信息已經(jīng)說(shuō)明這個(gè)操作成功僅代表請(qǐng)求成功,不代表交易成功。
因此這里重點(diǎn)說(shuō)一聲,支付狀態(tài)一定要有支付中這個(gè)中間狀態(tài),以及要對(duì)支付中這個(gè)狀態(tài)有對(duì)應(yīng)的補(bǔ)償機(jī)制,不然很容易發(fā)生線上交易事故。當(dāng)你發(fā)起一筆交易的時(shí)候,還沒(méi)收到通道方的結(jié)果之前這一筆交易就是支付中,等到有回調(diào)結(jié)果或者主動(dòng)查詢,再根據(jù)結(jié)果更改狀態(tài)。
另外我們也要關(guān)注,單筆交易有無(wú)最低金額限制,以及并發(fā)量最多是多少,能不能多線程。
順便再提一嘴,最好建議開(kāi)發(fā)大哥在封裝支付和退款接口的時(shí)候,即使接入了很多不同的通道,建議也盡量封裝成一個(gè)統(tǒng)一的下單接口和回調(diào)接口給業(yè)務(wù)層用,可以避免很多麻煩。
以及一定要讓前后端大哥們記得做防抖!
②退款接口
退款也可以看到,金額單位是分,以及退款也需要加退款中狀態(tài),同扣款一樣就不贅述。
這種退款是原路退回,通道方會(huì)做好校驗(yàn),一般不太可能一筆支付多退了錢(qián),倒是要考慮退款時(shí)效是多長(zhǎng)(有的合作方限制交易半年或一年后就不能退款)、能不能部分退款、退款次數(shù)有沒(méi)有限制、同一筆支付能不能同時(shí)發(fā)起2次退款。
4)響應(yīng)碼
一般響應(yīng)碼有公共響應(yīng)碼和不同接口對(duì)應(yīng)的業(yè)務(wù)響應(yīng)碼,這里建議前期梳理出一些常見(jiàn)通用的響應(yīng)碼,并“翻譯”出用戶可讀懂的文字,以供展示。以及可以在報(bào)錯(cuò)類(lèi)的提示前面加上通道合作方英文,以方便定位是我們系統(tǒng)報(bào)錯(cuò),還是哪個(gè)通道方報(bào)錯(cuò)。
如我們公司定義為DM,某通道方定義為PAF,則報(bào)錯(cuò)內(nèi)容展示為PAF:XXXXX,就可以很快速定位到是通道方的報(bào)錯(cuò)。
3. 功能規(guī)劃
1)用戶端簽約
考慮到用戶體驗(yàn)問(wèn)題,用戶綁卡簽約的時(shí)候最好就是不用自己輸入卡號(hào)和選擇所屬銀行。因此我們就要接入銀行卡OCR功能,以及需要根據(jù)OCR識(shí)別出來(lái)的卡號(hào)匹配到銀行卡所屬的銀行以及銀行卡的類(lèi)型,才能根據(jù)通道方的要求來(lái)上送銀行編碼和卡類(lèi)型,這個(gè)時(shí)候卡bin模塊就可以派上用場(chǎng)。
具體用戶端交互大家可以去參考支付寶、微信等大產(chǎn)品。
此外建議保留讓用戶手動(dòng)選擇更改銀行卡所屬銀行的功能,避免卡號(hào)識(shí)別錯(cuò)誤導(dǎo)致無(wú)法進(jìn)行簽約。
2)卡bin管理
卡BIN是一種標(biāo)識(shí)銀行卡的編碼方式,又稱為銀行識(shí)別碼。它通常由6到9個(gè)數(shù)字組成,前幾位數(shù)字可以表明銀行卡所屬的銀行、卡的種類(lèi)以及卡的國(guó)際標(biāo)準(zhǔn)組織(ISO)代碼等信息??˙IN在銀行卡的處理流程中非常重要,可以用來(lái)驗(yàn)證卡的有效性、確定卡的類(lèi)型及所屬銀行等信息。
國(guó)內(nèi)的卡表信息如下圖,一般跟通道方拿一下都會(huì)有。
經(jīng)過(guò)數(shù)據(jù)清洗之后,提取我們所需的信息,銀行卡中心的卡BIN管理就出來(lái)了。更加專(zhuān)業(yè)一點(diǎn)的公司甚至?xí)⒖˙IN圖標(biāo)配置進(jìn)來(lái),以及將通道和卡BIN進(jìn)行匹配關(guān)聯(lián)維護(hù),做到更加精細(xì)化管理通道所支持的能力。
有了卡BIN之后,我們就能根據(jù)用戶輸入的銀行卡號(hào)匹配該卡所屬銀行。
匹配邏輯可以如下:
首先用銀行卡驗(yàn)證luhn算法校驗(yàn)卡號(hào)的正確性,如不正確可以提示用戶檢查修改卡號(hào)。其原理是將銀行卡號(hào)逐位相加,然后將結(jié)果與校驗(yàn)碼比較。具體步驟如下:
- 從銀行卡號(hào)的最后一位數(shù)字開(kāi)始,逆向?qū)⒚總€(gè)數(shù)字和它的位數(shù)做乘積。
- 將這些乘積相加,得到一個(gè)和值。
- 將和值除以模數(shù)(10)取余,得到校驗(yàn)碼。
- 如果校驗(yàn)碼與銀行卡號(hào)的最后一位數(shù)字相同,則銀行卡號(hào)有效,否則銀行卡號(hào)無(wú)效。
以中國(guó)銀行卡為例,luha算法的模數(shù)為10,校驗(yàn)碼為銀行卡號(hào)末位數(shù)字。
實(shí)際操作中,可以先將銀行卡號(hào)轉(zhuǎn)換為int類(lèi)型,再進(jìn)行計(jì)算和比較。例如,以下代碼可以驗(yàn)證一個(gè)銀行卡號(hào)是否有效:
“`python
def check_luhn(card_num):
num_list= list(map(int, str(card_num)))
fori in range(len(num_list)-2, -1, -2):
num_list[i]<<= 1
ifnum_list[i] > 9:
num_list[i]-= 9
ifsum(num_list) % 10 == 0:
returnTrue
else:
returnFalse
“`
其中,str(card_num)將card_num轉(zhuǎn)換為字符串,map(int, str(card_num))將字符串轉(zhuǎn)換為由每位數(shù)字組成的列表,然后進(jìn)行逆向乘積求和,并進(jìn)行校驗(yàn)。
代碼來(lái)源:chatGPT,僅供參考。
目前銀聯(lián)卡幾乎都支持校驗(yàn)碼算法,但是也不排除極個(gè)別不支持此算法的,如杭州銀行早期發(fā)行的西湖卡和浙江民泰商業(yè)銀行。
銀行卡號(hào)檢測(cè)正確之后,就從10位開(kāi)始遍歷卡bin表,依次遞減至6位,直到找到唯一卡bin為止,并返回該卡bin對(duì)應(yīng)的銀行卡信息和所屬銀行。(目前國(guó)內(nèi)銀聯(lián)卡,因銀行眾多,特別是村鎮(zhèn)銀行的存在,BIN長(zhǎng)度以6位占絕大部分,另外還存在7、8、9、10等位數(shù)卡BIN)。
如果要更嚴(yán)謹(jǐn),還可以匹配銀行卡長(zhǎng)度對(duì)應(yīng)得上不。
3)銀行管理
銀行管理用于維護(hù)企業(yè)自己系統(tǒng)的標(biāo)準(zhǔn)銀行及編碼,為什么要加自己內(nèi)部的標(biāo)準(zhǔn)?
還記得上文說(shuō)過(guò)的不同通道可能有不同的銀行編碼標(biāo)準(zhǔn)嗎?如果我們接了多個(gè)通道都有不同標(biāo)準(zhǔn)的銀行編碼,那么我們要根據(jù)我們自己的卡BIN,匹配我們標(biāo)準(zhǔn)的銀行編碼,再去映射不同的通道編碼。
再者當(dāng)我們沒(méi)有接入多個(gè)通道的時(shí)候,不用復(fù)雜的路由的時(shí)候,哪些銀行的儲(chǔ)蓄卡、信用卡是否支持簽約代扣,也可以放在此處去維護(hù)管理,當(dāng)前端識(shí)別到不支持的銀行的時(shí)候,則直接提示用戶換卡即可。
4)簽約記錄
簽約記錄,方便運(yùn)營(yíng)/客服人員核實(shí)某個(gè)用戶某張卡的簽約狀態(tài),以應(yīng)對(duì)用戶的進(jìn)件咨詢和對(duì)外合作。
簽約數(shù)據(jù)結(jié)構(gòu)大家可以根據(jù)實(shí)際場(chǎng)景來(lái)設(shè)計(jì),一種是卡號(hào)+商戶、一種是用戶+卡號(hào)+商戶。兩者靈活度不一樣,舉個(gè)場(chǎng)景,一個(gè)車(chē)隊(duì)老板名下掛靠了很多太車(chē),分別不同司機(jī)在管理,但是都用老板或者公司的賬戶簽約代扣ETC通行費(fèi),如果某臺(tái)車(chē)離職了,如果簽約結(jié)構(gòu)是卡號(hào)+商戶,那把離職的司機(jī)的簽約關(guān)系解綁了,那老板名下所有簽約關(guān)系都解綁了。
然后關(guān)于簽約數(shù)據(jù),建議一開(kāi)始就讓開(kāi)發(fā)大哥們維護(hù)一份獨(dú)立的、統(tǒng)一的通道簽約數(shù)據(jù)層,用于記錄卡/賬戶信息在不同通道上的簽約或者驗(yàn)證結(jié)果,以便路由層及其他業(yè)務(wù)場(chǎng)景可以據(jù)此來(lái)進(jìn)行重新簽約或者支付路由。
如果部維護(hù)統(tǒng)一的簽約數(shù)據(jù),而是業(yè)務(wù)各自去維護(hù),就會(huì)出現(xiàn)一個(gè)比較尷尬的現(xiàn)象,以我司舉例子,我們有客車(chē)和貨車(chē)業(yè)務(wù)線,但是同一個(gè)用戶同一張卡可能同時(shí)辦理了客車(chē)和貨車(chē),簽約數(shù)據(jù)如果各自維護(hù),存在先后的簽約關(guān)系,在通道方舊的簽約號(hào)就會(huì)失效,失效的那一條業(yè)務(wù)線對(duì)應(yīng)的用戶就會(huì)扣款失敗。
同一張卡的簽約策略也是值得考究的,比如通道方是否允許重復(fù)簽約,重復(fù)簽約會(huì)返回什么樣的結(jié)果,這些都是要搞清楚的。
然后基于企業(yè)自身,重復(fù)簽約的時(shí)候是自己內(nèi)部走個(gè)驗(yàn)證即可,還是重新上送通道方進(jìn)行簽約,這些也都要考慮好。如果通道方?jīng)]有限制,個(gè)人傾向重新上送通道方去做簽約,這樣可以及時(shí)更新已過(guò)期的簽約號(hào)。
有了統(tǒng)一的簽約數(shù)據(jù)的話,同一張卡我甚至可以根據(jù)業(yè)務(wù)需求,在用戶不同綁卡場(chǎng)景下判斷是否走另外的通道進(jìn)行簽約,為同一張卡增加多一個(gè)扣款通道。
5)通道異常應(yīng)急處理機(jī)制
最后再建議大家,可以在前期就考慮規(guī)劃下異常預(yù)警機(jī)制,比如某個(gè)通道連續(xù)簽約、扣款失敗,就要及時(shí)發(fā)出通知。
我們可以秉承下列3個(gè)原則設(shè)定處理機(jī)制,在通道出了異常之后快速響應(yīng),確保交易正常、規(guī)避損失、維護(hù)用戶體驗(yàn)。
專(zhuān)業(yè):應(yīng)急規(guī)范及角色分工清晰;有序:應(yīng)急流程清楚簡(jiǎn)單、為可執(zhí)行的標(biāo)準(zhǔn)化流程;快速:優(yōu)先恢復(fù)通道交易穩(wěn)定性,其次定位問(wèn)題和提出解決方案。
萬(wàn)丈高樓平地起,對(duì)于支付而言,支付通道管理是不可或缺的一環(huán),其他第三方底層服務(wù)也可沿用該思路進(jìn)行管理,希望本文能對(duì)大家?guī)?lái)幫助。
專(zhuān)欄作家
陳天宇宙,微信公眾號(hào):陳天宇宙,人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家。多平臺(tái)支付領(lǐng)域?qū)谧髡?,十年資深產(chǎn)品;專(zhuān)注為10萬(wàn)支付產(chǎn)品經(jīng)理和支付機(jī)構(gòu)以及企業(yè)提供深度支付內(nèi)容和服務(wù)!
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
學(xué)習(xí)了