基于移動支付的POS終端系統軟件研究
文章出處:http://5052h112.com 作者:陳群賢,蔣建軍,張鋼 人氣: 發表時間:2011年10月10日
引言
在信用卡應用不到半個世紀,支付方式又將經歷一次歷史性的變革——基于無線通信技術上的移動支付方式的出現,使支付形式徹底擺脫空間上的一切束縛,不但廣泛而便捷地應用在固定交易場所;而且可以實現移動過程中的支付功能,從而為消費者創造了更靈活、更親切的消費環境,實現了錢包的電子化、移動化,是一種全新的支付手段。
目前,世界各國都在積極研究這項新興的移動支付系統,澳大利亞和芬蘭已經率先推出了商用模式,廣東省也在國內第一個推出了商用的移動支付系統,移動用戶可以通過他們的手機購買地鐵票、可樂、零食等商品。據統計,移動終端將在三至五年內將成為廣泛使用的支付工具,然而這種新興的支付方式,還不能提供消費者票據憑證,這不符合中國人目前的消費觀念,人們急待一種能夠獲取票據憑證的方法來完善這一新興的支付方式,基于這種狀況研制開發無線POS 打印終端系統就很有必要。
1 系統總體方案的設計
系統總體框圖如圖 1 所示:
統組成說明:主控CPU 采用Z-WORLD 公司的RABBIT3000,SRAM 采用CYPRESS 公司的CY62128,FLASH 采用SST 公司的SST39VF020,打印機采用GPRINTER 公司的GP-7635,GPRS模塊采用西門子公司的MC35,CPU 內嵌TCP/IP 協議棧。
系統整體框架如下,為了控制整個系統穩定運行,系統需要一個微處理器,為了打印出一張憑證,系統需要一個微型打印機。因為系統需要通過無線的方式接入Internet,所以該系統還需要一個無線通信模塊,該通訊模塊可以接入Internet,選用GPRS 通信模塊或者CDMA 通訊模塊。為了接入Internet,僅僅有一個通訊模塊還不行,還需要遵循Internet 的共有通信協議。這樣改系統有好幾種組合方式,本系統選用內嵌TCP/IP 協議棧的CPU。采用MCU 及固化了TCP/IP 協議的芯片組成應用系統的核心,應用系統可以直接上網,硬件電路相對簡單。該方案具有如下優點;①不依賴PC 機或高檔單片機,真正實現8 位單片機系統直接接入Internet,整個系統完全自給自足;②使用外圍器件少,系統成由低。
2 軟件層次結構
程序中的所有代碼都是由C 語言編寫的,并采用分層的結構,從底到上分別為:串口驅動層、GPRS 模塊驅動層、PPP 協議層、IP 協議層、UDP 協議層與應用層。上層函數的實現需要應用到底層函數,而底層函數的任務就是為上層函數提供服務,最終完成應用層任務——傳送數據。各層的主要函數如圖2 所示:
2.1 驅動程序編寫
首先是串行口驅動層。它實現打開串口(OpenComm)、關閉串口(CloseComm)、讀串口數據(ReadComm)、寫串口數據(WriteComm)等函數。例如 WriteComm 函數向串口發送一個字節的數據,而transmit 函數向串口發送一個字符串的數據。
然后,在這些串口函數的基礎上編寫GPRS 模塊的驅動函數。微控制器通過串行口控制GPRS模塊,進行撥號、設置等操作??刂频姆椒ㄊ遣捎肁T 命令。在控制GPRS 模塊撥打移動夢網GGSN的登錄號碼“*99**1#”之后,GPRS 模塊就轉入在線模式(0n-Line)。此時微控制器向串行口發送的所有數據都透明地傳送給了GGSN ,同樣GGSN 的回答也傳回單片機的串行口。當數據傳送完成后,微控制器需要通知 GPRS 模塊結束會話,并從在線模式轉口普通的命令模式,這可以通過置高DTR 線完成。同時,如果線路由于異常斷開,CD 線會回復到平常的低電平,所以處于在線模式下也要不斷檢測CD 線是否處于高電平。根據這些操作,可以編寫GPRS 驅動函數:初始化GPRS模塊函數(GPRSInit)、撥號函數(GPRSDial)、斷開連接函數(GPRSHangup)、檢測是否處于在線狀態函數(GPRS0nline)。
這些底層的驅動函數將會使上層協議的編寫很方便,更重要的是,它為我們提供了一個驅動抽象層。當底層硬件做出改動的時候,只需要對底層的驅動函數進行改動,而上層函數的代碼不變。
2.2 PPP 協議的實現
由于移動夢網的GGSN 與GPRS 模塊通信時遵循PPP 協議,所以要在微控制器中也實現一部分PPP 協議才能與之對話。GPRS 模塊在撥號后首先要與GPRS 網關進行通信鏈路的協商,即協商點到點的各種鏈路參數配置。協商過程遵守LCP(Link Control Protocol)、PAP (Password AuthenticationProtocol)和IPCP(Internet Protocol Control Protocol)等協議。其中 LCP 協議用于建立、構造、測試鏈路連接;PAP 協議用于處理密碼驗證部分;IPCP 協議用于設置網絡協議環境,并分配IP 地址。
協商機制用有限狀態機的模型來實現。一旦協商完成,鏈路已經創建,IP 地址已經分配就可以按照協商的標準進行IP 報文的傳輸了。根據應用的不同,IP 報文中可以攜帶UDP 報文,也可以是TCP或ICMP 報文。數據傳輸完成之后,微控制器會向GGSN 發送LCP 的斷開連接報文,以終止網絡連接。
PPP 協議的幀結構如圖3 所示。微控制器的串口中斷接收程序首先以包起始和結束符來判斷是否有完整的PPP 包,并對PPP 包的內容進行校驗;以確定數據包的完整性和正確性。然后,在主循環中進入PPP 報文解析模塊,解析過程如圖4 所示。
2.3 登錄GGSN 的過程
系統的一個難點是微控制器登陸 GPRS 網關(GGSN)并與網關通過LCP、PAP、IPCP 協議進行協商的過程。LCP、PAP 與IPCP 協議的幀結構大同小異,最常用的為請求(REQ)、同意(ACK)和拒絕(NAK)三種幀。微控制器與GGSN 各為一方進行協商,任何一方都可以發送REQ 幀請求某方面的配制,另一方覺得配置不能接受會回應NAK 幀,如果可以則回應ACK 幀。為了節省資源,我們只處理這三種數據幀,其它鏈路問題都由微控制器在程序控制下自己重新撥號解決。協商過程大致描述如下:在撥號成功連接后,GGSN 首先會返回一個PAP REQ 數據幀。我們發送一個空 LCP REQ 幀,以強迫進行協議協商階段。隨后,GGSN 發送LCP 設置幀,我們拒絕所有的設置并請求驗證模式。GGSN 選擇CHAP 或PAP 方式驗證,我們只接受PAP 方式。然后,進行PAP 驗證用戶名和密碼過程,在GPRS 中用戶名與密碼都為空,如果成功,GGSN 會返回IPCP報文分配動態IP 地址。此時,就完成了與GGSN 的協商過程。協商過程的狀態轉換如圖5 所示。
協商完成后進入 IP 數據報通信階段。此時,微控制器向GGSN 發送的所有包含IP 報文的PPP 報文都會被傳送給Internet網中相應的IP地址;而遠端所有向微控制器IP地址發送的報文也都會經GPRS網傳送到微控制器上,從而完成微控制器與遠程主機通過互聯網的數據傳輸。
3 TCP/IP 在 RABBIT3000 上的實現
Rabbit 3000 系列芯片是一種高性能8 位器件。由于其C 語言友好指令集和快速數字處理功能,因而受到矚目。Rabbit 結構以Zilog 公司的原始Z80 微處理器為基礎,但作了幾項改進:不像Z80指令集那樣使用16 位尋址覆蓋存儲空間,而用一個20 位或1MB 的實際存儲空間;采取直接與靜態存儲器件相連接的方式;有3 條存儲芯片選擇線路和2 組寫入/輸出啟動線路;片上外設包括4 個串行端口、l 個子端口、40 條p 線、7 個不同的定時器、精確脈沖發生硬件和電池支持的RTC。
用戶只需對應添加相關芯片及輔助設施(如電源、用戶所需外設等)即可;而軟件的實現,由于 Rabbit 3000 系列芯片得到 Dynamic C 編譯器的支持以及實現TCP/IP 所需的庫文件dcrtcp.lib,因此只要會用C 語言就可以進行開發。用戶關注的重點也變為網絡通信實現以后的代碼編制及優化,可以極大提高開發進度。
以下是 Dynamic C 實現 TCP/IP 協議通信的程序主體框架。程序中起始宏定義為默認IP 配置信息;“memmap”句可使程序在芯片里面運行時,如同在擴展代碼窗口下被編譯;“use”句使編譯器按照庫文件配置編譯代碼。
#define TCPCONFIG 1
#memmap xmem
#use dcrtcp.lib
main(){
sock_init();
for(;;) {
tcp_tick(NULL);}
}
sock_init()和 tcp_tick()都是 TCP/IP 函數庫的基本函數,前者為初始化TCP/IP 協議棧函數,使協議棧開始處理入棧數據報;后者主要有兩個用途:①支持后臺處理的最新信息;②測試 TCP/IP套接字的狀態。
利用Dynamic C 提供的TCP/IP 協議包,用戶可以輕松建立起TCP/IP 通信。當通信建立以后,就可以在此基礎上進行后續的進一步功能擴展,開展例如 HTTP、PPP 等應用層的協議實現。
4 系統軟件部分實現
本系統軟件部分主要包括4 個部分,l、GPRS 撥號部分2、TCP/IP 協議棧部分3、打印驅動部分4、存儲部分。
GPRS 撥號部分主要是采用PPP 協議向移動服務中心發出一個使用其網絡的請求,并有服務中心驗證通過,TCP/IP 協議棧是現在網絡傳輸數據所共同遵循的網絡傳輸與控制協議,打印驅動部分主要是控制打印機把需要打印的憑證給打印出來,存儲部分主要是對存儲器的控制以存儲數據等信息。
5 結語
本移動支付系統充分考慮人們“一手交錢,一手交貨”的消費心理,利用無線票據打印終端(無線POS 終端)打印收據,打印終端通過識別短消息的來源進行身份驗證,依據客戶需要,打印客戶電話號碼(或客戶身份驗證代碼)、交易金額、交易時間、交易方打印POS 機器編號以及交易費用等詳細信息,并可實現多層紙的打印。
無線POS 終端采用GPRS 方式通過無線網絡連接到移動局的GGSN,移動局的GGSN 通過Internet 與支付系統連接,這樣無線POS 終端就可以與支付系統進行TCP/IP 通信。 GPRS 無線數據傳輸具有設備成本低、數據傳輸安全可靠、使用靈活方便等特點,非常適合在無線POS 終端上應用,因此無線票據打印終端具有接通速度快、傳輸速率高、配置靈活、建設成本低等優點。雖然目前國內市場上已有移動支付(利用手機支計小面額貨款), 但是用戶在使用的過程中;沒有一個憑證并且在出現問題時(如手機中的錢被多扣除或者其他情況人用戶也沒有憑據與貨主進行核實,也就是說目前移動支付沒有形成一個閉環。這也是移動支付推廣緩慢的一個原因。我們推出基于移動支付的無線POS 打印終端正好解決了這個問題,它將廣泛應用于連鎖便利店、藥店、報亭、自動售貨亭等地方,這將大大地改善人們的生活水平,使人們的生活更加便利。
參考文獻:
[1] 王田苗.《嵌入式系統設計與實例開發》[M]. 北京:清華大學出版社
[2] Behrouz A. Forouzan. 《數據通信與網絡》[M].北京:機械工業出版社
[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.嵌入式系統構件[M].北京:機械工業出版社,2002.145-167.
5.http://www.globalsources.com/gsol/i/POS-customer/a/9000000059885.htm
作者簡介:陳群賢:(1970~)女碩士 講師 研究方向:計算機應用和控制技術Author brief introduction: CHEN Qun-xian(1970-),Female,Lecturer,Master.Major:Computer application and control
E-mail:jiang502@126.com
聯系地址:上海市閔行區江川路690 號上海電機學院信息工程系