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