分析移動(dòng)支付POS終端系統(tǒng)軟件
陳群賢 2011/04/28
摘要:本文介紹了GPRS無線通信網(wǎng)與無線打印終端系統(tǒng)之間的實(shí)時(shí)數(shù)據(jù)通信流程、通信協(xié)議及其軟件設(shè)計(jì)與實(shí)現(xiàn)方法,詳細(xì)地分析了各軟件層次的實(shí)現(xiàn)方法和TCP/IP在RABBIT3000上的實(shí)現(xiàn),達(dá)到了移動(dòng)支付即時(shí)獲取的設(shè)計(jì)目的,取得了良好的經(jīng)濟(jì)效益和社會(huì)效益。
引言
在信用卡應(yīng)用不到半個(gè)世紀(jì),支付方式又將經(jīng)歷一次歷史性的變革——基于無線通信技術(shù)上的移動(dòng)支付方式的出現(xiàn),使支付形式徹底擺脫空間上的一切束縛,不但廣泛而便捷地應(yīng)用在固定交易場(chǎng)所;而且可以實(shí)現(xiàn)移動(dòng)過程中的支付功能,從而為消費(fèi)者創(chuàng)造了更靈活、更親切的消費(fèi)環(huán)境,實(shí)現(xiàn)了錢包的電子化、移動(dòng)化,是一種全新的支付手段。
目前,世界各國都在積極研究這項(xiàng)新興的移動(dòng)支付系統(tǒng),澳大利亞和芬蘭已經(jīng)率先推出了商用模式,廣東省也在國內(nèi)第一個(gè)推出了商用的移動(dòng)支付系統(tǒng),移動(dòng)用戶可以通過他們的手機(jī)購買地鐵票、可樂、零食等商品。據(jù)統(tǒng)計(jì),移動(dòng)終端將在三至五年內(nèi)將成為廣泛使用的支付工具,然而這種新興的支付方式,還不能提供消費(fèi)者票據(jù)憑證,這不符合中國人目前的消費(fèi)觀念,人們急待一種能夠獲取票據(jù)憑證的方法來完善這一新興的支付方式,基于這種狀況研制開發(fā)無線POS 打印終端系統(tǒng)就很有必要。
1、系統(tǒng)總體方案的設(shè)計(jì)
系統(tǒng)總體框圖如圖1所示:
統(tǒng)組成說明:主控CPU 采用Z-WORLD 公司的RABBIT3000,SRAM 采用CYPRESS 公司的CY62128,F(xiàn)LASH 采用SST 公司的SST39VF020,打印機(jī)采用GPRINTER 公司的GP-7635,GPRS模塊采用西門子公司的MC35,CPU 內(nèi)嵌TCP/IP 協(xié)議棧。
系統(tǒng)整體框架如下,為了控制整個(gè)系統(tǒng)穩(wěn)定運(yùn)行,系統(tǒng)需要一個(gè)微處理器,為了打印出一張憑證,系統(tǒng)需要一個(gè)微型打印機(jī)。因?yàn)橄到y(tǒng)需要通過無線的方式接入Internet,所以該系統(tǒng)還需要一個(gè)無線通信模塊,該通訊模塊可以接入Internet,選用GPRS 通信模塊或者CDMA 通訊模塊。為了接入Internet,僅僅有一個(gè)通訊模塊還不行,還需要遵循Internet 的共有通信協(xié)議。這樣改系統(tǒng)有好幾種組合方式,本系統(tǒng)選用內(nèi)嵌TCP/IP 協(xié)議棧的CPU。采用MCU 及固化了TCP/IP 協(xié)議的芯片組成應(yīng)用系統(tǒng)的核心,應(yīng)用系統(tǒng)可以直接上網(wǎng),硬件電路相對(duì)簡單。該方案具有如下優(yōu)點(diǎn);①不依賴PC 機(jī)或高檔單片機(jī),真正實(shí)現(xiàn)8 位單片機(jī)系統(tǒng)直接接入Internet,整個(gè)系統(tǒng)完全自給自足;②使用外圍器件少,系統(tǒng)成由低。
2、軟件層次結(jié)構(gòu)
程序中的所有代碼都是由C 語言編寫的,并采用分層的結(jié)構(gòu),從底到上分別為:串口驅(qū)動(dòng)層、GPRS 模塊驅(qū)動(dòng)層、PPP 協(xié)議層、IP 協(xié)議層、UDP 協(xié)議層與應(yīng)用層。上層函數(shù)的實(shí)現(xiàn)需要應(yīng)用到底層函數(shù),而底層函數(shù)的任務(wù)就是為上層函數(shù)提供服務(wù),最終完成應(yīng)用層任務(wù)——傳送數(shù)據(jù)。各層的主要函數(shù)如圖2 所示:
2.1 驅(qū)動(dòng)程序編寫
首先是串行口驅(qū)動(dòng)層。它實(shí)現(xiàn)打開串口(OpenComm)、關(guān)閉串口(CloseComm)、讀串口數(shù)據(jù)(ReadComm)、寫串口數(shù)據(jù)(WriteComm)等函數(shù)。例如 WriteComm 函數(shù)向串口發(fā)送一個(gè)字節(jié)的數(shù)據(jù),而transmit 函數(shù)向串口發(fā)送一個(gè)字符串的數(shù)據(jù)。
然后,在這些串口函數(shù)的基礎(chǔ)上編寫GPRS 模塊的驅(qū)動(dòng)函數(shù)。微控制器通過串行口控制GPRS模塊,進(jìn)行撥號(hào)、設(shè)置等操作。控制的方法是采用AT 命令。在控制GPRS 模塊撥打移動(dòng)夢(mèng)網(wǎng)GGSN的登錄號(hào)碼“*99**1#”之后,GPRS 模塊就轉(zhuǎn)入在線模式(0n-Line)。此時(shí)微控制器向串行口發(fā)送的所有數(shù)據(jù)都透明地傳送給了GGSN ,同樣GGSN 的回答也傳回單片機(jī)的串行口。當(dāng)數(shù)據(jù)傳送完成后,微控制器需要通知 GPRS 模塊結(jié)束會(huì)話,并從在線模式轉(zhuǎn)口普通的命令模式,這可以通過置高DTR 線完成。同時(shí),如果線路由于異常斷開,CD 線會(huì)回復(fù)到平常的低電平,所以處于在線模式下也要不斷檢測(cè)CD 線是否處于高電平。根據(jù)這些操作,可以編寫GPRS 驅(qū)動(dòng)函數(shù):初始化GPRS模塊函數(shù)(GPRSInit)、撥號(hào)函數(shù)(GPRSDial)、斷開連接函數(shù)(GPRSHangup)、檢測(cè)是否處于在線狀態(tài)函數(shù)(GPRS0nline)。
這些底層的驅(qū)動(dòng)函數(shù)將會(huì)使上層協(xié)議的編寫很方便,更重要的是,它為我們提供了一個(gè)驅(qū)動(dòng)抽象層。當(dāng)?shù)讓佑布龀龈膭?dòng)的時(shí)候,只需要對(duì)底層的驅(qū)動(dòng)函數(shù)進(jìn)行改動(dòng),而上層函數(shù)的代碼不變。
2.2 PPP協(xié)議的實(shí)現(xiàn)
由于移動(dòng)夢(mèng)網(wǎng)的GGSN與GPRS模塊通信時(shí)遵循PPP 協(xié)議,所以要在微控制器中也實(shí)現(xiàn)一部分PPP協(xié)議才能與之對(duì)話。GPRS 模塊在撥號(hào)后首先要與GPRS 網(wǎng)關(guān)進(jìn)行通信鏈路的協(xié)商,即協(xié)商點(diǎn)到點(diǎn)的各種鏈路參數(shù)配置。協(xié)商過程遵守LCP(Link Control Protocol)、PAP(Password AuthenticationProtocol)和IPCP(Internet Protocol Control Protocol)等協(xié)議。其中 LCP 協(xié)議用于建立、構(gòu)造、測(cè)試鏈路連接;PAP 協(xié)議用于處理密碼驗(yàn)證部分;IPCP 協(xié)議用于設(shè)置網(wǎng)絡(luò)協(xié)議環(huán)境,并分配IP 地址。
協(xié)商機(jī)制用有限狀態(tài)機(jī)的模型來實(shí)現(xiàn)。一旦協(xié)商完成,鏈路已經(jīng)創(chuàng)建,IP 地址已經(jīng)分配就可以按照協(xié)商的標(biāo)準(zhǔn)進(jìn)行IP 報(bào)文的傳輸了。根據(jù)應(yīng)用的不同,IP 報(bào)文中可以攜帶UDP 報(bào)文,也可以是TCP或ICMP 報(bào)文。數(shù)據(jù)傳輸完成之后,微控制器會(huì)向GGSN 發(fā)送LCP 的斷開連接報(bào)文,以終止網(wǎng)絡(luò)連接。
微控制器的串口中斷接收程序首先以包起始和結(jié)束符來判斷是否有完整的PPP 包,并對(duì)PPP 包的內(nèi)容進(jìn)行校驗(yàn);以確定數(shù)據(jù)包的完整性和正確性。然后,在主循環(huán)中進(jìn)入PPP 報(bào)文解析模塊,解析過程如圖4 所示。
2.3 登錄GGSN 的過程
系統(tǒng)的一個(gè)難點(diǎn)是微控制器登陸 GPRS 網(wǎng)關(guān)(GGSN)并與網(wǎng)關(guān)通過LCP、PAP、IPCP 協(xié)議進(jìn)行協(xié)商的過程。LCP、PAP 與IPCP 協(xié)議的幀結(jié)構(gòu)大同小異,最常用的為請(qǐng)求(REQ)、同意(ACK)和拒絕(NAK)三種幀。微控制器與GGSN 各為一方進(jìn)行協(xié)商,任何一方都可以發(fā)送REQ 幀請(qǐng)求某方面的配制,另一方覺得配置不能接受會(huì)回應(yīng)NAK 幀,如果可以則回應(yīng)ACK 幀。為了節(jié)省資源,我們只處理這三種數(shù)據(jù)幀,其它鏈路問題都由微控制器在程序控制下自己重新?lián)芴?hào)解決。協(xié)商過程大致描述如下:在撥號(hào)成功連接后,GGSN 首先會(huì)返回一個(gè)PAP REQ 數(shù)據(jù)幀。我們發(fā)送一個(gè)空 LCP REQ 幀,以強(qiáng)迫進(jìn)行協(xié)議協(xié)商階段。隨后,GGSN 發(fā)送LCP 設(shè)置幀,我們拒絕所有的設(shè)置并請(qǐng)求驗(yàn)證模式。GGSN 選擇CHAP 或PAP 方式驗(yàn)證,我們只接受PAP 方式。然后,進(jìn)行PAP 驗(yàn)證用戶名和密碼過程,在GPRS 中用戶名與密碼都為空,如果成功,GGSN 會(huì)返回IPCP報(bào)文分配動(dòng)態(tài)IP 地址。此時(shí),就完成了與GGSN 的協(xié)商過程。協(xié)商過程的狀態(tài)轉(zhuǎn)換如圖5 所示。
協(xié)商完成后進(jìn)入 IP 數(shù)據(jù)報(bào)通信階段。此時(shí),微控制器向GGSN 發(fā)送的所有包含IP 報(bào)文的PPP 報(bào)文都會(huì)被傳送給Internet網(wǎng)中相應(yīng)的IP地址;而遠(yuǎn)端所有向微控制器IP地址發(fā)送的報(bào)文也都會(huì)經(jīng)GPRS網(wǎng)傳送到微控制器上,從而完成微控制器與遠(yuǎn)程主機(jī)通過互聯(lián)網(wǎng)的數(shù)據(jù)傳輸。
3、TCP/IP 在 RABBIT3000 上的實(shí)現(xiàn)
Rabbit 3000 系列芯片是一種高性能8 位器件。由于其C 語言友好指令集和快速數(shù)字處理功能,因而受到矚目。Rabbit 結(jié)構(gòu)以Zilog 公司的原始Z80 微處理器為基礎(chǔ),但作了幾項(xiàng)改進(jìn):不像Z80指令集那樣使用16 位尋址覆蓋存儲(chǔ)空間,而用一個(gè)20 位或1MB 的實(shí)際存儲(chǔ)空間;采取直接與靜態(tài)存儲(chǔ)器件相連接的方式;有3 條存儲(chǔ)芯片選擇線路和2 組寫入/輸出啟動(dòng)線路;片上外設(shè)包括4 個(gè)串行端口、l 個(gè)子端口、40 條p 線、7 個(gè)不同的定時(shí)器、精確脈沖發(fā)生硬件和電池支持的RTC。
用戶只需對(duì)應(yīng)添加相關(guān)芯片及輔助設(shè)施(如電源、用戶所需外設(shè)等)即可;而軟件的實(shí)現(xiàn),由于 Rabbit 3000 系列芯片得到 Dynamic C 編譯器的支持以及實(shí)現(xiàn)TCP/IP 所需的庫文件dcrtcp.lib,因此只要會(huì)用C 語言就可以進(jìn)行開發(fā)。用戶關(guān)注的重點(diǎn)也變?yōu)榫W(wǎng)絡(luò)通信實(shí)現(xiàn)以后的代碼編制及優(yōu)化,可以極大提高開發(fā)進(jìn)度。
以下是 Dynamic C 實(shí)現(xiàn) TCP/IP 協(xié)議通信的程序主體框架。程序中起始宏定義為默認(rèn)IP 配置信息;“memmap”句可使程序在芯片里面運(yùn)行時(shí),如同在擴(kuò)展代碼窗口下被編譯;“use”句使編譯器按照庫文件配置編譯代碼。
。efine TCPCONFIG 1
。emmap xmem
。se dcrtcp.lib
main(){
sock_init();
for(;;) {
tcp_tick(NULL);}
。
sock_init()和 tcp_tick()都是 TCP/IP 函數(shù)庫的基本函數(shù),前者為初始化TCP/IP 協(xié)議棧函數(shù),使協(xié)議棧開始處理入棧數(shù)據(jù)報(bào);后者主要有兩個(gè)用途:①支持后臺(tái)處理的最新信息;②測(cè)試 TCP/IP套接字的狀態(tài)。
利用Dynamic C 提供的TCP/IP 協(xié)議包,用戶可以輕松建立起TCP/IP 通信。當(dāng)通信建立以后,就可以在此基礎(chǔ)上進(jìn)行后續(xù)的進(jìn)一步功能擴(kuò)展,開展例如 HTTP、PPP 等應(yīng)用層的協(xié)議實(shí)現(xiàn)。
4、系統(tǒng)軟件部分實(shí)現(xiàn)
本系統(tǒng)軟件部分主要包括4 個(gè)部分,l、GPRS 撥號(hào)部分2、TCP/IP 協(xié)議棧部分3、打印驅(qū)動(dòng)部分4、存儲(chǔ)部分。
GPRS 撥號(hào)部分主要是采用PPP 協(xié)議向移動(dòng)服務(wù)中心發(fā)出一個(gè)使用其網(wǎng)絡(luò)的請(qǐng)求,并有服務(wù)中心驗(yàn)證通過,TCP/IP 協(xié)議棧是現(xiàn)在網(wǎng)絡(luò)傳輸數(shù)據(jù)所共同遵循的網(wǎng)絡(luò)傳輸與控制協(xié)議,打印驅(qū)動(dòng)部分主要是控制打印機(jī)把需要打印的憑證給打印出來,存儲(chǔ)部分主要是對(duì)存儲(chǔ)器的控制以存儲(chǔ)數(shù)據(jù)等信息。
5、結(jié)語
本移動(dòng)支付系統(tǒng)充分考慮人們“一手交錢,一手交貨”的消費(fèi)心理,利用無線票據(jù)打印終端(無線POS 終端)打印收據(jù),打印終端通過識(shí)別短消息的來源進(jìn)行身份驗(yàn)證,依據(jù)客戶需要,打印客戶電話號(hào)碼(或客戶身份驗(yàn)證代碼)、交易金額、交易時(shí)間、交易方打印POS 機(jī)器編號(hào)以及交易費(fèi)用等詳細(xì)信息,并可實(shí)現(xiàn)多層紙的打印。
無線POS 終端采用GPRS 方式通過無線網(wǎng)絡(luò)連接到移動(dòng)局的GGSN,移動(dòng)局的GGSN 通過Internet 與支付系統(tǒng)連接,這樣無線POS 終端就可以與支付系統(tǒng)進(jìn)行TCP/IP 通信。 GPRS 無線數(shù)據(jù)傳輸具有設(shè)備成本低、數(shù)據(jù)傳輸安全可靠、使用靈活方便等特點(diǎn),非常適合在無線POS 終端上應(yīng)用,因此無線票據(jù)打印終端具有接通速度快、傳輸速率高、配置靈活、建設(shè)成本低等優(yōu)點(diǎn)。雖然目前國內(nèi)市場(chǎng)上已有移動(dòng)支付(利用手機(jī)支計(jì)小面額貨款), 但是用戶在使用的過程中;沒有一個(gè)憑證并且在出現(xiàn)問題時(shí)(如手機(jī)中的錢被多扣除或者其他情況人用戶也沒有憑據(jù)與貨主進(jìn)行核實(shí),也就是說目前移動(dòng)支付沒有形成一個(gè)閉環(huán)。這也是移動(dòng)支付推廣緩慢的一個(gè)原因。我們推出基于移動(dòng)支付的無線POS 打印終端正好解決了這個(gè)問題,它將廣泛應(yīng)用于連鎖便利店、藥店、報(bào)亭、自動(dòng)售貨亭等地方,這將大大地改善人們的生活水平,使人們的生活更加便利。
參考文獻(xiàn):
[1] 王田苗.《嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)》[M]. 北京:清華大學(xué)出版社
[2] Behrouz A. Forouzan. 《數(shù)據(jù)通信與網(wǎng)絡(luò)》[M].北京:機(jī)械工業(yè)出版社
[3] Zdravkovic A. wireless point of sale terminal for credit and debit paymentsystems[J].IEEE Canadian Conference on Electrical and computer Engineering.Partvol.2,1998,pp.890-3 vol.2.New York ,NY,USA.
4.Jean J Labrose.嵌入式系統(tǒng)構(gòu)件[M].北京:機(jī)械工業(yè)出版社,2002.145-167.
5.http://www.globalsources.com/gsol/i/POS-customer/a/9000000059885.htm
中國一卡通網(wǎng)
相關(guān)閱讀: