張俊文
摘 要:隨著科學(xué)技術(shù)的不斷發(fā)展,移動(dòng)支付已成為人們?nèi)粘Y?gòu)物的主要支付方式。文章采用無(wú)線支付方式實(shí)現(xiàn)自動(dòng)售貨機(jī)的無(wú)線支付系統(tǒng),通過(guò)二維碼的方式完成產(chǎn)品的識(shí)別,介紹了整個(gè)支付流程如何與金融系統(tǒng)對(duì)接,數(shù)據(jù)的處理,并保證信息的安全可靠。
關(guān)鍵詞:移動(dòng)支付;自動(dòng)售貨機(jī);二維碼
1 無(wú)線支付的引入
傳統(tǒng)售貨方式,我們必需要有人來(lái)參與,這是因?yàn)槲覀儽仨氂萌藖?lái)完成商品交易,而伴隨著新的支付方式的產(chǎn)生和電子技術(shù)的發(fā)展,商品交易已經(jīng)可以脫離人的參與,作為無(wú)人售貨機(jī)的革新,也是基于這兩方的進(jìn)步而產(chǎn)生的。無(wú)人售貨機(jī)的設(shè)計(jì)可以說(shuō)也是因?yàn)橄冗M(jìn)的支付方式而產(chǎn)生的變革。了解支付方式及實(shí)現(xiàn)方法也是我們?cè)O(shè)計(jì)的重要基石。
2 無(wú)人值守售貨機(jī)掃碼支付方式
2.1 掃碼支付原理
掃碼支付原理是一種利用二維碼海量存儲(chǔ)信息的能力,同客戶賬戶體系共同構(gòu)建起來(lái)的新一代無(wú)線支付方式。該支付方式可以是商家把賬號(hào)、商品價(jià)格等交易信息匯編成一個(gè)二維碼在客載體上發(fā)布。用戶通過(guò)手機(jī)客戶端掃描二維碼,就可實(shí)現(xiàn)與商家支付寶賬戶的對(duì)應(yīng)、確定[1]。二維碼的前身就是條形碼,簡(jiǎn)單地說(shuō)二維碼就是在條形碼基礎(chǔ)上利用某種特定的幾何圖形按一定規(guī)律在平面上分布的圖形來(lái)表示數(shù)據(jù)符號(hào),一個(gè)二維碼可以包含多種信息,該信息碼構(gòu)造簡(jiǎn)單方便,靈活實(shí)用,讀取可靠性高,不僅能防止錯(cuò)誤產(chǎn)生,同時(shí)有糾正錯(cuò)誤的能力,既讀取數(shù)據(jù)有錯(cuò)誤,也能通過(guò)二維的糾錯(cuò)方法完成正確讀取信息,同時(shí)二維碼中可以進(jìn)行一定的加密處理。正因?yàn)槎S碼的高安全性、高可靠性,才使我們的移動(dòng)支付成為可能,現(xiàn)在目前流行的移動(dòng)支付方式都與二維掃碼有關(guān)。
2.2 二種掃碼支付方式
從二維碼的產(chǎn)生和客戶掃碼方式的不同,我們基本上可以把移動(dòng)掃碼方式分為兩種, 一種是當(dāng)客戶想要購(gòu)買某種商品時(shí),觸發(fā)商家后臺(tái)服務(wù)器連接操作,商家后臺(tái)服務(wù)器通知支付寶支付后臺(tái),由支付寶后臺(tái)產(chǎn)生該商品二維碼返回給無(wú)人售貨機(jī)遠(yuǎn)程服務(wù)器,也就是商家后臺(tái),再由商家后臺(tái)發(fā)送訂單二維碼給遠(yuǎn)程無(wú)人售貨機(jī)顯示輸出。用戶掃碼讀取訂單信息完成支付后,支付寶支付后臺(tái)確定用戶已支付信息發(fā)給客戶,同時(shí)異步通知支付結(jié)果結(jié)商家后臺(tái)服務(wù)器。商家后臺(tái)服務(wù)器完成相應(yīng)開(kāi)關(guān)信息傳送[2]。大致情況如圖1所示。
第二種方式是當(dāng)用戶有商品需求信息后,打開(kāi)支付寶的個(gè)人賬戶二維碼,無(wú)人售貨機(jī)終端通過(guò)掃描器用戶二維碼信息,把信息同商品信息傳遞給商家后臺(tái)服務(wù)器,商家后臺(tái)服務(wù)器讀取商品信息把商品信息傳遞給支付寶后臺(tái)服務(wù)器,支付寶后臺(tái)服務(wù)器把商品信息傳給支付寶客戶,支付寶客戶確定商品后完成支付動(dòng)作,再返回給支付寶后臺(tái)支付結(jié)果,支付寶后臺(tái)即刻把結(jié)果傳給商家后臺(tái)服務(wù)器,商家后臺(tái)服務(wù)器收到支付信息后,立即處理支付動(dòng)作,開(kāi)啟遠(yuǎn)程售貨窗品,完成出貨動(dòng)作。以上兩種方式均可實(shí)現(xiàn)移動(dòng)支付,相對(duì)于第一種而言,由于是用戶最后確定支付,對(duì)于用戶而言適用性更好些,同時(shí)由于是移動(dòng)支付普遍采用動(dòng)態(tài)生成二維碼技術(shù),相對(duì)而言客戶支付安全性更高。但作為商家,后臺(tái)服務(wù)器就要完成商品二維碼的生成工作[3]。
3 二維碼生成規(guī)則
在支付寶二維碼中的內(nèi)容實(shí)際含了商品各種信息,其形式為一連串定義好的字符串,其中XXXXX為開(kāi)發(fā)者所要填寫(xiě)的商戶信息,商戶調(diào)用第三方庫(kù)生成二維碼圖片。
3.1 創(chuàng)建掃碼支付方法
要使我們的無(wú)人售貨機(jī)能通過(guò)支付寶或微信進(jìn)行支付,必然會(huì)使用對(duì)應(yīng)的支付開(kāi)放平臺(tái)所提供的SDK接入支付平臺(tái)。大致過(guò)程如下。
第一步:創(chuàng)建應(yīng)用程序并獲取相應(yīng)平臺(tái)的商家ID標(biāo)識(shí)碼,也就是注冊(cè)分配標(biāo)識(shí)碼。以支付寶為例,要想應(yīng)用程序能使用支付寶移動(dòng)支付,首先需要開(kāi)發(fā)者到支付寶的螞蟻金服開(kāi)放平臺(tái)的開(kāi)發(fā)者中心中實(shí)名認(rèn)證,創(chuàng)建登記應(yīng)用,并提交審核,審核通過(guò)后會(huì)生成應(yīng)用APPID,這時(shí)就可以申請(qǐng)開(kāi)通開(kāi)放產(chǎn)品使用權(quán)限,通過(guò)APPID應(yīng)用能調(diào)用開(kāi)放接口。一般來(lái)說(shuō),只需填寫(xiě)應(yīng)用的基礎(chǔ)信息,如應(yīng)用名稱、應(yīng)用圖標(biāo),這一部分可以在以后的開(kāi)發(fā)中再更改。在開(kāi)發(fā)應(yīng)用中需要先選擇使用場(chǎng)景,也就是使用類型。
第二步:配置應(yīng)用環(huán)境內(nèi)容。在這步,要設(shè)置就用網(wǎng)關(guān),用來(lái)接收支付平臺(tái)異步通知,給出配置支付應(yīng)用環(huán)境。
第三步:配置密鑰。為了保證交易雙方的身份和數(shù)據(jù)安全,需要配置雙方密鑰。首先是商戶對(duì)交易數(shù)據(jù)使用給應(yīng)用私鑰加簽后發(fā)起支付請(qǐng)求給支付寶,支付寶會(huì)用應(yīng)用所提交的應(yīng)用公鑰對(duì)交易數(shù)據(jù)進(jìn)行驗(yàn)簽,以核查交易是否正確。如果正確,返回支付結(jié)果,商家對(duì)支付寶返的支付結(jié)果使用支付寶提供的公鑰驗(yàn)簽,通過(guò)這種密鑰處理方式保證雙方交易信息和數(shù)據(jù)的安全。
3.2 生成RSA密鑰的方法
以支付寶生成密鑰為例,首先根據(jù)開(kāi)發(fā)語(yǔ)言選擇密鑰格式。其次選擇密鑰長(zhǎng)度,一般新建應(yīng)用使用2048位。利用支付寶提供一鍵生成一對(duì)RSA密鑰。再點(diǎn)擊“生成密鑰”,會(huì)自動(dòng)生成商戶應(yīng)用公鑰和應(yīng)用私鑰。如圖2所示。
第一步:處理應(yīng)用公鑰格式。將公鑰文件去除頭尾、換行和空格,轉(zhuǎn)成一行字符串。把該字符串提供給支付寶賬號(hào)管理者,登錄開(kāi)放平臺(tái)上傳應(yīng)用公鑰并獲取支付寶公鑰。
第二步:處理支付寶公鑰。獲取上一步得到支付寶公鑰,用于支付寶返回?cái)?shù)據(jù)的驗(yàn)簽。
每三步:上傳應(yīng)用公鑰并獲取支付寶公鑰。
3.3 后臺(tái)交易信息維護(hù)
本處因?yàn)橹Ц秾氂幸粋€(gè)完整的開(kāi)發(fā)文檔幫助,就不再敘述詳細(xì)過(guò)程,只對(duì)支付關(guān)鍵點(diǎn)做說(shuō)明。
在支付寶的開(kāi)發(fā)平臺(tái)上創(chuàng)建一個(gè)應(yīng)用,簽約后,為保證交易雙方的安全性,需要配置雙方密鑰,在接入設(shè)計(jì)時(shí)有兩種架構(gòu),我們選用商戶/系統(tǒng)商后臺(tái)轉(zhuǎn)發(fā)方式,商家先預(yù)下單到商家后臺(tái),再請(qǐng)求到支付寶。適合商戶有各種自助終端,用戶在自助終端掃碼支付。支付實(shí)現(xiàn)步驟:
用戶登錄支付寶錢包,點(diǎn)擊首頁(yè)“付款”,選擇支付,進(jìn)入支付界面。
用戶在售貨機(jī)上購(gòu)買商品,售貨機(jī)系統(tǒng)生成支付寶訂單,用戶確認(rèn)支付金額。
用戶出示錢包的“聲波付”,對(duì)準(zhǔn)售貨機(jī)的聲波接收的裝置。
售貨機(jī)收到聲波請(qǐng)求后,售貨機(jī)系統(tǒng)向支付寶提交支付請(qǐng)求。
付款成功后商家收銀系統(tǒng)會(huì)拿到支付成功或者失敗的結(jié)果。
3.4 在線驗(yàn)收
在線驗(yàn)收是面向商戶提供的一種驗(yàn)證檢查的能力,可以幫助商戶在接入支付寶產(chǎn)品后,迅速驗(yàn)證接入的規(guī)范情況。它也可以幫助商戶在活動(dòng)上線前,迅速驗(yàn)證優(yōu)惠活動(dòng)的正確性。商戶或系統(tǒng)商在對(duì)接支付寶時(shí),通常有以下兩種形式:
(1)門店直連,即門店收銀終端直接通過(guò)公網(wǎng)請(qǐng)求支付寶。
(2)商戶/系統(tǒng)商后臺(tái)轉(zhuǎn)發(fā),即商戶/系統(tǒng)商開(kāi)發(fā)并部署獨(dú)立的服務(wù)端(支付中臺(tái)),門店收銀終端先請(qǐng)求到商戶服務(wù)端,再由服務(wù)端請(qǐng)求支付寶。
一般采用第二種轉(zhuǎn)發(fā)模式,這樣可以方便日志記錄、問(wèn)題排查,同時(shí)將支付邏輯和原有業(yè)務(wù)邏輯盡量解耦。
3.5 商戶訂單號(hào)生成
當(dāng)同一業(yè)務(wù)訂單需要進(jìn)行多次支付(前幾次失敗或被撤銷)時(shí),需要保證每次調(diào)用接口傳入的商戶訂單號(hào)out_trade_no不重復(fù),因此,不能直接將業(yè)務(wù)訂單號(hào)作為商戶訂單號(hào)使用,而是應(yīng)該為每個(gè)支付請(qǐng)求生成獨(dú)立的流水號(hào),并在商戶服務(wù)端維護(hù)業(yè)務(wù)訂單號(hào)與流水號(hào)。要實(shí)現(xiàn)終端控制節(jié)點(diǎn)自動(dòng)售貨的功能,服務(wù)器不僅要與終端控制節(jié)點(diǎn)建立無(wú)線通信聯(lián)系,而且還要完成于支付寶支付信息的采集,并通過(guò)數(shù)據(jù)的采集進(jìn)行自動(dòng)售貨機(jī)日常數(shù)據(jù)的管理服務(wù)。
4 結(jié)語(yǔ)
本文綜述了整個(gè)無(wú)人售貨交易的全部過(guò)程,實(shí)際上正是由于這種移動(dòng)支付的產(chǎn)生,并且能夠保證交易的安全性,信息交易的可靠傳遞,才是我們進(jìn)行無(wú)人售貨系統(tǒng)升級(jí)的基礎(chǔ)。本章以支付寶為例,介紹了整個(gè)支付流程,以及如何與金融系統(tǒng)對(duì)接,數(shù)據(jù)流如何處理,介紹了數(shù)據(jù)是如何通過(guò)二維碼的處理完成系統(tǒng)交易,并保證交易的安全。
[參考文獻(xiàn)]
[1]姚越.自動(dòng)售貨機(jī)人機(jī)交互設(shè)計(jì)研究[D].天津:天津大學(xué),2014.
[2]徐義釗.復(fù)雜背景下二維碼實(shí)時(shí)識(shí)別技術(shù)的研究與開(kāi)發(fā)[D].無(wú)錫:江南大學(xué),2013.
[3]邢平立,白惠艷.二維碼概述及應(yīng)用[J].網(wǎng)印工業(yè),2013(7):52-55.