文/林虎 蘇浩偉 謝振東 李濟(jì)騰 陸永靜
近年來,隨著智能手機(jī)以及移動(dòng)互聯(lián)網(wǎng)的廣泛應(yīng)用,微信支付和支付寶等掃碼支付技術(shù)在各行各業(yè)的應(yīng)用已日漸成熟。以往城市一卡通交通IC卡的銷售或者充值業(yè)務(wù),通常需要在服務(wù)點(diǎn)或商戶配置專職服務(wù)人員,并以現(xiàn)金方式完成支付交易,現(xiàn)金的清點(diǎn)以及押運(yùn)成本非常大,另外,攜帶現(xiàn)金、假鈔、換鈔等同樣給乘客造成諸多煩惱。在城市主要交通站點(diǎn)或者客流量較大的交通樞紐站部署自助售卡充值終端,可以全天候?yàn)槌丝头?wù)。乘客使用微信或支付寶等手機(jī)應(yīng)用,掃描自助終端生成的二維碼,完成在線支付后,即可購買交通IC卡或者對(duì)交通IC卡進(jìn)行充值,大大提高便利性和降低服務(wù)點(diǎn)的成本。
本文使用的掃碼支付技術(shù),是指按照掃碼支付提供商(微信支付和支付寶等)的支付協(xié)議生成支付二維碼,并在自助售卡充值終端展示二維碼,用戶使用手機(jī)APP的“掃一掃”功能完成支付交易的技術(shù)。兩種掃碼支付技術(shù)都提供了完全公開的API開發(fā)接口,開發(fā)者可以自由查看,接口清晰。
微信支付和支付寶支付提供的掃碼支付功能大同小異,在API接口方面,主要接口有,統(tǒng)一下單接口、支付結(jié)果通知接口、查詢接口、下載賬單以及相關(guān)的退款接口等,總體功能和流程基本一樣。不過也有一些細(xì)微差別,比如:
圖1:系統(tǒng)結(jié)構(gòu)圖
(1)在微信支付中叫做掃碼支付,而在支付寶中屬于“當(dāng)面付”下的產(chǎn)品。
(2)微信掃碼支付的商戶平臺(tái)中有三個(gè)賬戶,基本賬戶(存放用戶交易轉(zhuǎn)入的資金)、手續(xù)費(fèi)賬戶和運(yùn)營賬戶(手續(xù)費(fèi)和付款的金額都從運(yùn)營賬戶出),管理更加方便;而支付寶沒有類似的賬戶分類。
(3)在API接口上面也有一些差異,比如微信支付通過“指定支付方式”來限制信用卡支付,而支付寶的方式更加靈活,有“可用渠道”和“禁用渠道”(渠道列表主要包括:借記卡、信用卡、余額寶等)。
開發(fā)者可以選JAVA、.NET C#、PHP任意一種語言開發(fā),快速接入自己的商業(yè)應(yīng)用支付系統(tǒng)。本文以JAVA語言為例進(jìn)行簡單描述。
在開發(fā)掃碼支付之前,首先要成為掃碼支付系統(tǒng)提供商的開發(fā)者,取得APPID(應(yīng)用開發(fā)者ID),然后,與提供商簽訂相關(guān)的商戶協(xié)議,最后生成通信密鑰證書后即可開始軟件開發(fā)。其中,微信支付的通信密鑰證書在微信商戶平臺(tái)下載;支付寶的證書由開發(fā)者自己生成,然后上傳給支付寶平臺(tái)。
為了實(shí)現(xiàn)掃碼支付功能,需要建立自助終端后臺(tái)服務(wù)系統(tǒng),結(jié)構(gòu)圖參見圖1。
用戶在自助售卡充值終端選擇商品或者充值金額后,終端向后臺(tái)系統(tǒng)發(fā)起請(qǐng)求,后臺(tái)服務(wù)系統(tǒng)調(diào)用掃碼支付系統(tǒng)的統(tǒng)一下單API接口,返回二維碼鏈接URL,后臺(tái)服務(wù)系統(tǒng)將該URL下發(fā)給自助終端,自助終端調(diào)用二維碼轉(zhuǎn)換器生成二維碼并展示給用戶,用戶用手機(jī)“掃一掃”二維碼,輸入支付密碼并完成支付,最后掃碼支付系統(tǒng)將支付結(jié)果通知自助終端后臺(tái)服務(wù)系統(tǒng)。支付后,終端通過一卡通充值系統(tǒng)完成對(duì)IC卡的充值。
在系統(tǒng)安全性方面,網(wǎng)絡(luò)間通信采用HTTPS安全套接層傳輸協(xié)議,確保整個(gè)交易通信過程處于安全保護(hù)狀態(tài),通信密鑰證書具有不可抵賴等安全特性。
自助售卡充值終端提供售卡和充值等功能,下面以微信支付為例介紹系統(tǒng)流程以及API接口,具體的支付流程如圖2。
用戶在自助終端上選擇好商品以后,自助終端后臺(tái)系統(tǒng)調(diào)用“統(tǒng)一下單接口”向掃碼支付系統(tǒng)發(fā)起預(yù)支付請(qǐng)求,具體接口API為:
把二維碼數(shù)據(jù)保存成文件code.png文件或者直接在自助終端界面上顯示。
發(fā)起預(yù)支付請(qǐng)求時(shí)設(shè)置了notify_url異步通知地址,當(dāng)用戶支付成功以后,支付系統(tǒng)會(huì)向該地址發(fā)送成功請(qǐng)求,系統(tǒng)需要編程實(shí)現(xiàn)對(duì)請(qǐng)求數(shù)據(jù)的采集,并應(yīng)答成功的信息。系統(tǒng)使用wxpayresult.jsp頁面來接收支付系統(tǒng)發(fā)來的數(shù)據(jù),實(shí)現(xiàn)如下:
圖2:自助終端掃碼支付流程
微信支付或者支付寶等掃碼支付為商戶開發(fā)者提供了功能完善的API接口,商戶結(jié)算對(duì)賬流程也方便快捷,可實(shí)時(shí)查看每筆交易的狀態(tài)以及資金的使用和到帳等情況。通過在自助售卡充值終端中使用掃碼支付服務(wù),可讓乘客體驗(yàn)到更加便捷的城市一卡通服務(wù),也可為城市一卡通公司或者自助服務(wù)運(yùn)營商大大節(jié)約服務(wù)點(diǎn)的人工成本。