深入淺出支付業(yè)務(wù)設(shè)計(jì)二三事
本文主要以2B2B平臺(tái)為例對(duì)嘗試著對(duì)支付綁定、支付解綁、在線支付、退款等業(yè)務(wù)流程及設(shè)計(jì)方式進(jìn)行說(shuō)明、梳理。
背景
在線支付業(yè)務(wù)是所有電商平臺(tái)的核心業(yè)務(wù),我在人人都是產(chǎn)品經(jīng)理的網(wǎng)站上使用關(guān)鍵字“支付”檢索了下,發(fā)現(xiàn)關(guān)于支付業(yè)務(wù)的設(shè)計(jì)少之又少,不光是支付,關(guān)于商品、產(chǎn)品、購(gòu)物車等等領(lǐng)域模型的設(shè)計(jì)也很少,大家都集中討論在產(chǎn)品外在設(shè)計(jì)上,告訴你這個(gè)事情是怎么回事,但是沒(méi)有告訴設(shè)計(jì)應(yīng)該如何落地,個(gè)人認(rèn)為一個(gè)合格的產(chǎn)品經(jīng)理是一個(gè)既能進(jìn)行需求分析、業(yè)務(wù)設(shè)計(jì)、同時(shí)也能做數(shù)據(jù)設(shè)計(jì)、分析的。
本文主要以2B2B平臺(tái)為例對(duì)嘗試著對(duì)支付綁定、支付解綁、在線支付、退款等業(yè)務(wù)流程及設(shè)計(jì)方式進(jìn)行說(shuō)明、梳理。如果您覺(jué)得有些幫助或者覺(jué)得哪里不對(duì),希望小伙伴留言進(jìn)行交流或者點(diǎn)個(gè)贊。
設(shè)計(jì)策略
在做支付業(yè)務(wù)設(shè)計(jì)的時(shí)候,產(chǎn)品經(jīng)理不光要分析業(yè)務(wù)流程還要考慮設(shè)計(jì)策略,關(guān)于支付業(yè)務(wù)的設(shè)計(jì)策略主要體現(xiàn)在數(shù)據(jù)安全性和擴(kuò)展性。
1、數(shù)據(jù)安全性
采用銀聯(lián)簽名機(jī)制、加密機(jī)制確保支付過(guò)程中支付的安全性。
報(bào)文簽名與驗(yàn)簽機(jī)制的共同點(diǎn):首先都需要對(duì)報(bào)文中出現(xiàn)簽名域(signature)之外的所有數(shù)據(jù)元采用key=value的形式按照名稱排序,然后以&作為連接符拼接成待簽名串。其次,對(duì)待簽名串使用SHA-1算法做摘要。
報(bào)文簽名機(jī)制與驗(yàn)簽機(jī)制不同點(diǎn):
- 報(bào)文的簽名處理機(jī)制如下:使用銀聯(lián)頒發(fā)給商戶的商戶RSA私鑰證書對(duì)摘要做簽名。最后,對(duì)簽名做Base64編碼,將編碼后的簽名串放在簽名(signature)表單域里和其他表單域一起通過(guò)HTTP Post的方式傳輸給銀聯(lián)在線支付平臺(tái)。
- 報(bào)文的驗(yàn)簽處理機(jī)制如下:使用商戶入網(wǎng)時(shí)銀聯(lián)提供的銀聯(lián)在線支付通訊RSA公鑰證書對(duì)摘要做簽名。最后,對(duì)簽名做Base64編碼,與返回報(bào)文表單中的簽名(signature)域簽名串做比較,如一致則驗(yàn)簽成功,否則驗(yàn)簽失敗。
加密機(jī)制:對(duì)于持卡人密碼銀聯(lián)在線支付平臺(tái)使用RSA公鑰證書對(duì)ANSI X9.8帶主帳號(hào)格式的PIN加密并做Base64編碼后傳輸,以保障密碼的安全性。依據(jù)商戶可選配置,對(duì)于CVN2、有效期、卡號(hào)使用RSA公鑰證書分別做加密并Base64處理。對(duì)于敏感信息銀行卡驗(yàn)證信息及身份信息部分內(nèi)容,采用Base64編碼后傳輸,以做數(shù)據(jù)屏蔽。對(duì)于文件內(nèi)容,使用DEFLATE壓縮算法壓縮后,Base64編碼的方式傳輸,壓縮編碼后的內(nèi)容參與簽名摘要運(yùn)算。
2、程序擴(kuò)展性
在支付業(yè)務(wù)分析設(shè)計(jì)后,其相關(guān)數(shù)據(jù)庫(kù)表包括支付記錄表 支付記錄表支付銀行表 支付綁定表 支付異常表、支付訂單表;以后再有類似的在線銀聯(lián)支付業(yè)務(wù)可以直接進(jìn)行復(fù)用,不用新建表。此外以下業(yè)務(wù)流程設(shè)計(jì)也可以進(jìn)行擴(kuò)展使用。
支付業(yè)務(wù)流程設(shè)計(jì)
首先介紹整個(gè)業(yè)務(wù)的整體業(yè)務(wù)流程、資金流業(yè)務(wù)流程。其次分別介紹支付綁定、解綁、支付、退款等業(yè)務(wù)流程的設(shè)計(jì)。
1、支付業(yè)務(wù)整體流程圖
2、支付業(yè)務(wù)資金流順序圖
3、銀行卡綁定業(yè)務(wù)順序圖
綁定業(yè)務(wù):首先要建立綁定關(guān)系
建立綁定關(guān)系,指商戶/收單機(jī)構(gòu)的用戶號(hào)(即報(bào)文中的綁定標(biāo)識(shí)號(hào))與用戶的銀聯(lián)卡信息進(jìn)行關(guān)聯(lián),關(guān)聯(lián)信息留存在銀聯(lián)系統(tǒng)中。建立綁定關(guān)系可分為前臺(tái)模式和后臺(tái)模式,前臺(tái)模式時(shí),用戶在銀聯(lián)頁(yè)面輸入相關(guān)銀行卡信息;后臺(tái)模式由商戶采集銀行卡信息發(fā)送至銀聯(lián)進(jìn)行綁定。下面以前臺(tái)模式為例進(jìn)行說(shuō)明,業(yè)務(wù)流程圖如下所示:
流程說(shuō)明:
- 如果采購(gòu)方?jīng)]有綁定過(guò)銀行卡,會(huì)提示“請(qǐng)先綁定銀行開再支付”;如果綁定過(guò)銀行卡,會(huì)跳轉(zhuǎn)至支付頁(yè)面;
- 在綁定銀行卡頁(yè)面,如果第一次綁定銀行卡,綁定信息中會(huì)進(jìn)行“交易平臺(tái)支付密碼”新增操作,否則無(wú)此操作,一個(gè)采購(gòu)方只能有一個(gè)“交易平臺(tái)支付密碼”,可在會(huì)員中心修改此支付密碼;
- 在銀聯(lián)綁定卡頁(yè)面,可選擇儲(chǔ)蓄卡和信用卡,點(diǎn)擊“綁定”,跳轉(zhuǎn)至銀聯(lián)綁定頁(yè)面,輸入卡號(hào)等綁定信息,綁定成功后會(huì)跳轉(zhuǎn)到平臺(tái)頁(yè)面,綁定成功的卡可進(jìn)行解綁。
- 綁定卡以后,可進(jìn)行支付,在支付頁(yè)面,選擇一張綁定銀行卡,輸入手機(jī)驗(yàn)證碼和“交易平臺(tái)支付密碼”,支付點(diǎn)擊“支付”,支付成功會(huì)跳轉(zhuǎn)至支付成功頁(yè)面,訂單列表中可看到支付成功后訂單信息。
- 在已付款訂單列表頁(yè),可對(duì)當(dāng)天清算前訂單進(jìn)行退款,點(diǎn)擊“退款”,會(huì)返回退款結(jié)果;如果訂單支付成功,配送商(銷售)可進(jìn)行接單;采購(gòu)方在配送商(銷售)接單后可進(jìn)行“確認(rèn)收貨”操作;
確認(rèn)收貨后,在第二天配送商(銷售)可收到相應(yīng)款項(xiàng),如果訂單開具發(fā)票,則款項(xiàng)打至對(duì)公賬號(hào),如果不開具發(fā)票,則款項(xiàng)打至對(duì)私賬號(hào)
4、銀行卡解綁業(yè)務(wù)流程圖
銀行卡解綁業(yè)務(wù)實(shí)際上是與銀行卡綁定業(yè)務(wù)相對(duì)的業(yè)務(wù),其業(yè)務(wù)流程非常相似。
5、銀行卡在線支付業(yè)務(wù)流程圖
一般交易平臺(tái)支付有四個(gè)觸發(fā)場(chǎng)景:購(gòu)物車支付、直接購(gòu)買支付、快速購(gòu)買支付、訂單列表支付。
觸發(fā)支付操作后,根據(jù)是否開具發(fā)票來(lái)判斷調(diào)用哪種類型的支付接口,如果開具發(fā)票且是增值稅發(fā)票,調(diào)用B2B支付接口(前臺(tái)交易),如果未開具發(fā)票或開具普通發(fā)票,調(diào)用綁定支付接口,支付之前必須先綁定銀行卡,如果是借記卡,調(diào)用借記卡綁定接口,之后調(diào)用綁定代收接口,如果是貸記卡,則調(diào)用貸記卡綁定接口,之后調(diào)用綁定消費(fèi)接口。
從技術(shù)實(shí)現(xiàn)方式上交易大致可劃分為前臺(tái)類交易、后臺(tái)類交易
前臺(tái)類交易是指交易請(qǐng)求方(如商戶、收單機(jī)構(gòu))與銀聯(lián)在線支付系統(tǒng)之間的交易信息通過(guò)用戶瀏覽器進(jìn)行傳遞的交易,是一種異步的、需要持卡人參與完成的交易類型。對(duì)于涉及金額的前臺(tái)類交易(即交易請(qǐng)求中有金額字段)銀聯(lián)在線支付系統(tǒng)系統(tǒng)均會(huì)給請(qǐng)求方后臺(tái)通知(后臺(tái)通知報(bào)文要素同前臺(tái)應(yīng)答的要素),請(qǐng)求方也必須實(shí)現(xiàn)接收后臺(tái)通知。對(duì)于交易狀態(tài)未知的交易請(qǐng)求方必須發(fā)起交易狀態(tài)查詢交易。
后臺(tái)類交易是指交易請(qǐng)求方(如商戶、收單機(jī)構(gòu))將交易信息直接通過(guò)請(qǐng)求方服務(wù)器發(fā)送至銀聯(lián)在線支付系統(tǒng)服務(wù)器的交易方式。后臺(tái)交易均為同步短連接方式,不需要持卡人參與完成的交易類型。對(duì)于涉及金額的后臺(tái)類交易,若通訊超時(shí),則交易請(qǐng)求方必須發(fā)起交易狀態(tài)查詢交易。
6、銀行卡退款業(yè)務(wù)流程圖
銀行在線退款業(yè)務(wù)根據(jù)業(yè)務(wù)需求設(shè)計(jì)如下業(yè)務(wù)規(guī)則:
- 整單整退(子訂單不能單獨(dú)退款,只能大訂單進(jìn)行退款)
- 當(dāng)天晚上11點(diǎn)前的訂單,在11點(diǎn)后不可以進(jìn)行線上退款。其他情況請(qǐng)撥打400-0116-666人工處理退款)
已發(fā)貨訂單和交易完成訂單不能線上退款,只能線下退款
7、整體接口設(shè)計(jì)
8、支付開發(fā)設(shè)計(jì)
8.1前臺(tái)交易開發(fā)步驟
- 以表單的方式組裝要發(fā)送給銀聯(lián)在線支付的數(shù)據(jù)對(duì)象(包括訂單號(hào)、商戶號(hào)、交易類型、交易金額、交易時(shí)間等各域)。每個(gè)域填寫方法可參考文檔《中國(guó)銀聯(lián)在線支付平臺(tái)-商戶接入接口規(guī)范》。
- 將組裝好的數(shù)據(jù)排序好并用&連接后簽名,生成signature字段,可使用插件包提供的方法“sign(未簽名報(bào)文, 報(bào)文字符集);”??赏ㄟ^(guò)調(diào)用插件包提供的簽名方法來(lái)完成簽名。
- 把所有要發(fā)送給銀聯(lián)在線支付的域包括signature和signMethod,組成表單以POST方式送給銀聯(lián)在線支付前臺(tái)交易的地址。
- 交易完成后,銀聯(lián)在線支付系統(tǒng)將把交易結(jié)果分別返回通知到商戶通的前臺(tái)應(yīng)答地址和后臺(tái)應(yīng)答地址上,商戶接收到交易通知后可分別調(diào)用“coverResultString2Map(應(yīng)答報(bào)文);”方法進(jìn)行應(yīng)答報(bào)文解析,和“MpiUtil.validate(應(yīng)答報(bào)文, 報(bào)文字符集)”方法進(jìn)行簽名驗(yàn)證。
8.2后臺(tái)類交易接口開發(fā)步驟
- 商戶按照不同的交易組裝報(bào)文,交易報(bào)文請(qǐng)參考《中國(guó)銀聯(lián)在線支付平臺(tái)-商戶接入接口規(guī)范》把組裝好的數(shù)據(jù)排序好并用&連接后簽名,生成signature字段,可使用插件包提供的方法“sign(未簽名報(bào)文, 報(bào)文字符集);”。
- 把所有數(shù)據(jù),包括signature和signMethod用key=value并用&符號(hào)鏈接的方式組裝成字符串,通過(guò)插件包提供的方法進(jìn)行發(fā)送。接收到返回報(bào)文后,通過(guò)插件包提供的方法進(jìn)行驗(yàn)證簽名,調(diào)用“coverResultString2Map(應(yīng)答報(bào)文);”方法進(jìn)行應(yīng)答報(bào)文解析,和“MpiUtil.validate(應(yīng)答報(bào)文, 報(bào)文字符集)”方法進(jìn)行簽名驗(yàn)證。
8.3合并付款交易接口
- 功能說(shuō)明:合并付款是指當(dāng)支付訂單中包含多個(gè)商戶的商品信息的時(shí)候,能一次進(jìn)行合并付款,避免一單一付的情況。
- 報(bào)文傳送格式:報(bào)文信息采用JSON格式進(jìn)行http傳輸,將會(huì)提供實(shí)體與JSON的相互轉(zhuǎn)換方法。
- 請(qǐng)求報(bào)文:
合并訂單報(bào)文:
合并訂單包含一個(gè)或多個(gè)子訂單,一個(gè)子訂單包含一個(gè)或多個(gè)商品。
子訂單報(bào)文:
商品報(bào)文:
應(yīng)答報(bào)文:
8.4退款交易
- 合并退款交易是指付款人在付款后因?yàn)槟承┰蛳胪嘶匾迅犊铐?xiàng)而觸發(fā)的操作,銀聯(lián)交易完成后,需要向銀聯(lián)商務(wù)發(fā)送合并退款報(bào)文。
- 報(bào)文傳送格式:報(bào)文信息采用JSON格式進(jìn)行http傳輸,將會(huì)提供實(shí)體與JSON的相互轉(zhuǎn)換方法。
- 請(qǐng)求報(bào)文
合并訂單報(bào)文:合并訂單包含一個(gè)或多個(gè)子訂單,一個(gè)子訂單包含一個(gè)或多個(gè)商品。
子訂單報(bào)文:
商品報(bào)文:
應(yīng)答報(bào)文:
8.5當(dāng)日確認(rèn)收貨及需要?jiǎng)澑?/strong>
當(dāng)日2B2B平臺(tái)收到的確認(rèn)收貨或已經(jīng)超過(guò)確認(rèn)收貨時(shí)間節(jié)點(diǎn)的待劃付訂單。銀商根據(jù)收到的報(bào)文數(shù)據(jù),按子訂單中的商戶編號(hào),對(duì)此商戶做資金劃付; 報(bào)文傳送格式:報(bào)文信息采用txt文件形式上傳至FTP,文件中數(shù)據(jù)結(jié)構(gòu)是一行一個(gè)大訂單具體信息(包含小訂單)。此外請(qǐng)求報(bào)文:該報(bào)文包含多個(gè)合并訂單實(shí)體。 ??? 合并訂單報(bào)文:合并訂單包含一個(gè)或多個(gè)子訂單,一個(gè)子訂單包含一個(gè)或多個(gè)商品。
子訂單報(bào)文:
商品報(bào)文:
關(guān)于數(shù)據(jù)設(shè)計(jì)有需要的朋友,可以留言私信,我在分享給大家,有一點(diǎn)需要特別強(qiáng)調(diào)!因?yàn)槊總€(gè)平臺(tái)可能都有自己特定的業(yè)務(wù),所以上述只是希望給大家點(diǎn)設(shè)計(jì)思路。希望大家能了解下支付業(yè)務(wù)設(shè)計(jì)到底是怎么回事。
本文由 @洲伯通 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
感覺(jué)圖片的清晰度都不高,不知道是網(wǎng)站處理的問(wèn)題還是上傳圖片素材本身問(wèn)題 ,好多干貨資料。
如何寫支付平臺(tái)的產(chǎn)品能力的?不只是收單,還包括所有的商戶及用戶能力
LZ可以私聊嗎,文章中有一些不懂和疑問(wèn),想要咨詢您。O(∩_∩)O謝謝 ?
業(yè)內(nèi)良心 真的很不錯(cuò) 很需要這樣的文章
能加個(gè)微信嗎?文章有幾個(gè)地方不太明白
您說(shuō) 我盡力回答,即使不懂我也會(huì)咨詢其它高人幫解釋.
在2.程序擴(kuò)展性中 出現(xiàn)了兩個(gè)支付記錄表
對(duì)于小白來(lái)說(shuō)有點(diǎn)難理解 對(duì)不起 我盡量在看了
最近正在找這類文章,感謝您的分享!
您好,看到文章最后提到數(shù)據(jù)設(shè)計(jì)的,希望有機(jī)會(huì)可以學(xué)習(xí)學(xué)習(xí)。
OK 沒(méi)有問(wèn)題 我陸續(xù)會(huì)更新
可以啊,歡迎~~ 有任何問(wèn)題可以私聊
親,私聊啊,想學(xué)習(xí)