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