李燕波,郝雅清,甘人才
(中國鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京100081)
隨著人們支付需求的變化及智能移動終端的快速普及,第三方支付行業(yè)迎來了爆發(fā)性增長態(tài)勢[1-3],電子錢包正成為當(dāng)下流行的移動支付產(chǎn)品。
目前,電子錢包在我國已有許多成熟案例[4],如當(dāng)下流行的支付寶和微信,這兩個(gè)產(chǎn)品幾乎顛覆了國人的交易方式,是大眾平時(shí)使用最多的支付類錢包產(chǎn)品。
在各行各業(yè)也都產(chǎn)生了行業(yè)專屬的電子錢包,如國家電網(wǎng)錢包、南航錢包等,都得到了使用者的喜歡和支持,這也加速了錢包類產(chǎn)品的推廣。
作為對社會有著巨大影響力的行業(yè),鐵路目前還沒有自己的錢包類移動支付產(chǎn)品。鑒于此,鐵路電子支付平臺進(jìn)行了支付升級,對鐵路行業(yè)場景下的電子錢包進(jìn)行了研究和設(shè)計(jì)。
目前,鐵路電子錢包按業(yè)務(wù)劃分,其后臺應(yīng)用主要提供賬戶管理接口服務(wù)和交易接口服務(wù)。
兩個(gè)接口和第三方系統(tǒng)的所有交互采用Https協(xié)議進(jìn)行,接口訪問方式符合RestfulAPI 規(guī)范,且交互信息都經(jīng)過證書的加解密及簽名驗(yàn)簽過程,以防止信息泄露及篡改。
1.1.1 鐵路電子錢包開戶
(1)首次使用鐵路錢包時(shí),旅客需要在開戶銀行進(jìn)行身份信息校驗(yàn)。旅客在身份校驗(yàn)界面上傳身份證圖片并輸入相關(guān)信息后提交,遠(yuǎn)程錢包賬戶管理接口對收到的信息進(jìn)行解密及驗(yàn)簽操作后,按照和銀行約定的報(bào)文格式封裝身份校驗(yàn)信息,以符合Restful API 規(guī)范的方式通過Https協(xié)議發(fā)送銀行處理。
銀行同步返回身份校驗(yàn)結(jié)果,校驗(yàn)失敗后錢包賬戶接口轉(zhuǎn)接前臺應(yīng)用失敗頁面,校驗(yàn)成功則轉(zhuǎn)入下一步開戶操作。
(2)身份校驗(yàn)成功后,則需進(jìn)行綁定銀行卡操作。旅客在下一步頁面輸入要綁定的銀行卡、手機(jī)號等信息后提交,錢包賬戶接口服務(wù)對收到的請求信息進(jìn)行校驗(yàn)保存,并加密簽名后按照約定報(bào)文格式通過Https協(xié)議發(fā)送給銀行進(jìn)行開戶操作,鐵路電子錢包開戶流程,如圖1所示。
圖1 鐵路電子錢包開戶流程
為將來能推出如積分、紅包等個(gè)人權(quán)益類產(chǎn)品[5-7],錢包利用旅客開戶時(shí)提交的信息,在內(nèi)部為旅客建立了自己的賬戶管理體系,以便對旅客進(jìn)行管理。
(3)由于開戶操作在銀行端比較復(fù)雜,通常耗時(shí)較長。為避免旅客等待,錢包和銀行采用異步及同步相結(jié)合的方式進(jìn)行2次交互響應(yīng),定時(shí)對未有開戶結(jié)果的請求進(jìn)行批量輪詢。
收到開戶命令后,銀行僅校驗(yàn)報(bào)文格式的正確性并進(jìn)行基本的業(yè)務(wù)邏輯判斷,校驗(yàn)無誤后則同步返回“開戶中”響應(yīng)信息。
(4)當(dāng)在某個(gè)時(shí)間點(diǎn),銀行開戶有結(jié)果后,將觸發(fā)對鐵路電子錢包的異步響應(yīng)。此時(shí)銀行把開戶結(jié)果按照約定報(bào)文格式加密簽名后,主動推送到錢包賬戶接口服務(wù),錢包將依據(jù)開戶結(jié)果來更新自己的賬戶狀態(tài)。
(5)針對超過一定期限且銀行也未異步推送處理結(jié)果的開戶請求,錢包賬戶接口將按照一定的配置規(guī)則,定時(shí)把此類開戶請求批量發(fā)送銀行輪詢處理,并依據(jù)輪詢結(jié)果同步更新錢包內(nèi)部賬戶狀態(tài),以防止旅客開戶結(jié)果有遺漏。
1.1.2 鐵路電子錢包綁定其它銀行卡
(1)旅客可再綁定其它銀行卡,通過在頁面輸入銀行卡號、手機(jī)號和支付密碼等信息并提交。
(2)錢包賬戶管理接口將對收到的綁定其它銀行卡請求進(jìn)行處理,并按要求封裝報(bào)文后提交到銀行,銀行同步返回綁卡結(jié)果。
(3)當(dāng)綁定其它銀行卡成功后,錢包賬戶接口將同步更新內(nèi)部賬戶體系,保存旅客所綁定其它銀行卡的詳細(xì)信息。
1.1.3 鐵路電子錢包充值
開戶成功后,旅客將在開戶行擁有一個(gè)專用于鐵路電子錢包交易的二類戶,此時(shí)旅客可通過綁定銀行卡對該二類戶進(jìn)行充值操作。
(1)旅客在充值頁面選擇一個(gè)已綁定銀行卡,并輸入金額、支付密碼后提交到錢包賬戶接口。錢包賬戶接口對收到的信息處理后將封裝報(bào)文并發(fā)送銀行,銀行處理后同步返回充值結(jié)果,鐵路電子錢包充值流程,如圖2 所示。
圖2 鐵路電子錢包充值流程
(2)為提高錢包余額查詢速度及金額校驗(yàn)效率,錢包賬戶接口在收到銀行充值響應(yīng)后,會同步更新錢包的內(nèi)部旅客賬戶數(shù)據(jù),保留旅客錢包對應(yīng)二類戶的余額、凍結(jié)款等金額信息[8]。
1.1.4 鐵路電子錢包提現(xiàn)
(1)旅客可在提現(xiàn)操作頁面從已綁銀行卡中選擇要提現(xiàn)的銀行卡,輸入金額及支付密碼,提交到錢包賬戶服務(wù)接口。
(2)錢包賬戶接口對提現(xiàn)請求校驗(yàn)無誤,將按照和銀行約定格式封裝報(bào)文并發(fā)送銀行處理,其處理方式和充值流程相似。
同樣,在錢包賬戶接口收到銀行提現(xiàn)響應(yīng)報(bào)文,會同步更新旅客錢包賬戶金額類數(shù)據(jù)。
1.2.1 鐵路電子錢包支付
旅客在中國鐵路12306互聯(lián)網(wǎng)售票系統(tǒng)(簡稱:12306)支付時(shí)提交支付請求到鐵路電子支付平臺,支付平臺對收到的請求處理,返回收銀臺頁面,該頁面包含鐵路支持的所有銀行卡及第三方支付渠道。
(1)旅客可在收銀臺頁面選中并點(diǎn)擊鐵路電子錢包進(jìn)行一鍵支付,此時(shí)錢包交易接口將按照和銀行約定報(bào)文格式封裝報(bào)文,加密簽名后通過Https協(xié)議提交銀行處理。
(2)銀行處理支付請求,同步返回支付響應(yīng),錢包交易接口對收到的響應(yīng)處理,通過頁面跳轉(zhuǎn)方式同步通知鐵路電子支付平臺,在后臺通過Https協(xié)議在間隔一定時(shí)間后異步把支付結(jié)果通知到鐵路電子支付平臺。
(3)鐵路電子支付平臺同樣也按照同步和異步2種方式把旅客支付結(jié)果通知到12306,12306收到最終支付響應(yīng),即可決定是否出票,鐵路電子錢包支付流程,如圖3所示。
圖3 鐵路電子錢包支付流程
1.2.2 鐵路電子錢包退款
(1)當(dāng)旅客對購票訂單進(jìn)行退款時(shí),12306將按照和鐵路電子支付平臺約定格式封裝報(bào)文,在后臺把退款請求發(fā)送到鐵路電子支付平臺。
(2)鐵路電子支付平臺按照同樣的流程提交到鐵路電子錢包交易接口,鐵路電子錢包交易接口再提交到銀行端。
(3)銀行同步處理后把退款響應(yīng)按原路返回,最終響應(yīng)會到達(dá)12306。
鐵路電子錢包系統(tǒng)采用多層應(yīng)用體系作為軟件的結(jié)構(gòu)模式,包括數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器、Web服務(wù)器、客戶端、日志組件等。并與銀行間通過專線網(wǎng)絡(luò)連接,還建立了與鐵路內(nèi)部各業(yè)務(wù)系統(tǒng)間的連接,從而實(shí)現(xiàn)與銀行、鐵路業(yè)務(wù)系統(tǒng)之間的數(shù)據(jù)交換,鐵路電子錢包系統(tǒng)框架結(jié)構(gòu),如圖4所示。
圖4 鐵路電子錢包系統(tǒng)架構(gòu)
鐵路電子錢包系統(tǒng)按照業(yè)務(wù)功能所屬職責(zé)范圍,劃分為以下4 個(gè)主要部分:
(1)用戶表現(xiàn)層:通過App 端、PC端等把所有功能通過不同方式和渠道展現(xiàn)出來,滿足客戶的多樣化需求。
(2)核心應(yīng)用系統(tǒng):核心模塊分為2 個(gè)子層次,分別是對外的應(yīng)用接口層及內(nèi)部的處理支撐層,主要包括賬戶中心、交易系統(tǒng)、產(chǎn)品系統(tǒng),應(yīng)用中心等,是整個(gè)支付體系的核心功能。
(3)數(shù)據(jù)層:主要包括用到的Oracle、Redis及Hbase等數(shù)據(jù)存儲資源。
(4)系統(tǒng)資源層:應(yīng)用部署后所使用到的軟硬件資源,主要包括負(fù)載均衡、存儲系統(tǒng)、防篡改系統(tǒng)等軟硬件資源。
鐵路電子錢包系統(tǒng)從邏輯上包括渠道接入、交易處理、銀行接入等幾部分,鐵路電子錢包邏輯結(jié)構(gòu),如圖5所示。
圖5 鐵路電子錢包邏輯架構(gòu)
鐵路電子錢包按照業(yè)務(wù)模塊進(jìn)行應(yīng)用分離,并提供底層數(shù)據(jù)訪問、數(shù)據(jù)封裝、數(shù)據(jù)傳輸?shù)募夹g(shù)支撐能力,從而實(shí)現(xiàn)各業(yè)務(wù)層都通過接口訪問,避免每層業(yè)務(wù)改變對其它層次的影響,鐵路電子錢包邏輯結(jié)構(gòu),如圖6所示。
(1)訪問層:使用Vue+layui 開源組件開發(fā)移動端和PC 門戶頁面,通過前后臺分離技術(shù)進(jìn)行單獨(dú)部署。
(2)通信層:各層交互數(shù)據(jù)都需經(jīng)過證書驗(yàn)證,并使用Https或Socket 協(xié)議完成前臺應(yīng)用與后臺服務(wù)的數(shù)據(jù)交互。
(3)控制層:控制層組件為遠(yuǎn)程訪問提供符合Restful 規(guī)范的服務(wù)接口,從而完成前臺應(yīng)用對后臺服務(wù)的接口調(diào)用。
(4)業(yè)務(wù)邏輯層:按功能進(jìn)行模塊劃分,各模塊保持相對較高的獨(dú)立性,從而減少功能的耦合度。
(5)數(shù)據(jù)操作層:主要使用開源對象關(guān)系映射(ORM)框架,鐵路電子錢包通過使用Mybatis框架對實(shí)體類和數(shù)據(jù)操作類進(jìn)行調(diào)用執(zhí)行。
(6)數(shù)據(jù)層:數(shù)據(jù)層主要采用Oracle 數(shù)據(jù)庫及Redis內(nèi)存數(shù)據(jù)庫,其中,Redis主要用于存儲個(gè)人熱點(diǎn)信息[9],如賬戶類信息。
(7)支撐平臺:主要包含各種應(yīng)用中間件、內(nèi)存數(shù)據(jù)集群、消息集群等,如在日志系統(tǒng)中使用了高吞吐量的分布式消息系統(tǒng)Kafka[10]。
(8)數(shù)據(jù)共享層:通過該數(shù)據(jù)共享平臺,對外提供查詢訪問接口,實(shí)現(xiàn)鐵路電子錢包與其他系統(tǒng)的信息共享。
圖6 鐵路電子錢包技術(shù)架構(gòu)
鐵路電子錢包當(dāng)前原型主要包括移動App 端及PC門戶端,兩個(gè)原型分別模擬嵌入在12306App及12306PC門戶網(wǎng)頁中。
無論是在App端還是PC端,當(dāng)客戶提交購票訂單后,都會跳轉(zhuǎn)至鐵路電子支付平臺收銀臺頁面,旅客在該頁面中選擇錢包進(jìn)行支付操作。
3.2.1 使用體驗(yàn)更友好
旅客在12306進(jìn)行支付時(shí),若選擇的是銀行,則一般都會跳轉(zhuǎn)至銀行卡及密碼輸入頁面,旅客輸入信息較多,操作繁瑣。
若旅客選擇第三方支付如支付寶、微信等,雖會錄入信息較少,但需要提前安裝軟件。
與上面兩種支付方式相比,鐵路電子錢包由于是嵌入在12306 購票端,故而不用另外下載其它軟件,甚至在支付時(shí)無需錄入任何信息便可一鍵支付,用戶體驗(yàn)更好。
3.2.2 支付耗時(shí)少
相對于其它外部支付渠道來說,鐵路電子錢包由于是模擬嵌入在12306中,可以做到信息共享。旅客支付時(shí)可做到一鍵支付,最短可在2s內(nèi)完成整個(gè)支付,而一般銀行類支付需要耗時(shí)15 s,第三方支付則需要耗時(shí)8s左右。
3.2.3 支付更安全
相比銀行和第三方這類外部支付渠道來說,鐵路電子錢包和12306聯(lián)系更為緊密,同屬鐵路業(yè)務(wù)系統(tǒng)產(chǎn)品,無論從技術(shù)角度還是業(yè)務(wù)對接來看,具有更高的支付安全性,可控度比外部支付更高,且手段更為靈活,能最大程度地保證旅客的資金安全。
作為鐵路電子支付平臺的升級產(chǎn)品,鐵路電子錢包可以打破鐵路行業(yè)現(xiàn)有的支付模式,也能彌補(bǔ)鐵路沒有自己的電子錢包類產(chǎn)品的缺陷。但同時(shí)我們也看到了,目前鐵路電子錢包主要提供的都是基礎(chǔ)功能,業(yè)務(wù)類型比較單一。未來,鐵路電子錢包可以和銀行進(jìn)行更深度的合作,推出如分期支付,基金理財(cái)?shù)雀迂S富的業(yè)務(wù)功能。