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