基于移动支付的POS终端系统软件研究
发布时间:2013-03-20 来源:未知
引言 在信用卡应用不到半个世纪,支付方式又将经历一次历史性的变革——基于无线通信技术上的移动支付方式的出现,使支付形式彻底摆脱空间上的一切束缚,不但广泛而便捷地应用在固定交易场所;而且可以实现移动过程中的支付功能,从而为消费者创造了更灵活、更亲切的消费环境,实现了钱包的电子化、移动化,是一种全新的支付手段。 目前,世界各国都在积极研究这项新兴的移动支付系统,澳大利亚和芬兰已经率先推出了商用模式,广东省也在国内较好的个推出了商用的移动支付系统,移动用户可以通过他们的手机购买地铁票、可乐、零食等商品。据统计,移动终端将在三至五年内将成为广泛使用的支付工具,然而这种新兴的支付方式,还不能提供消费者票据凭证,这不符合中国人目前的消费观念,人们急待一种能够获取票据凭证的方法来完善这一新兴的支付方式,基于这种状况研制开发无线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模块,进行拨号、设置等操作。控制的方法是采用AT命令。在控制GPRS模块拨打移动梦网GGSN的登录号码“*99**1#”之后,GPRS模块就转入在线模式(0n-Line)。此时微控制器向串行口发送的所有数据都透明地传送给了GGSN,同样GGSN的回答也传回单片机的串行口。当数据传送完成后,微控制器需要通知GPRS模块结束会话,并从在线模式转口普通的命令模式,这可以通过置高DTR线完成。同时,如果线路由于异常断开,CD线会回复到平常的低电平,所以处于在线模式下也要不断检测CD线是否处于高电平。根据这些操作,可以编写GPRS驱动函数:初始化GPRS模块函数(GPRSInit)、拨号函数(GPRSDial)、断开连接函数(GPRSHangup)、检测是否处于在线状态函数(GPRS0nline)。 这些底层的驱动函数将会使上层协议的编写很方便,更重要的是,它为我们提供了一个驱动抽象层。当底层硬件做出改动的时候,只需要对底层的驱动函数进行改动,而上层函数的代码不变。 2.2PPP协议的实现 由于移动梦网的GGSN与GPRS模块通信时遵循PPP协议,所以要在微控制器中也实现一部分PPP协议才能与之对话。GPRS模块在拨号后首先要与GPRS网关进行通信链路的协商,即协商点到点的各种链路参数配置。协商过程遵守LCP(LinkControlProtocol)、PAP(PasswordAuthenticationProtocol)和IPCP(InternetProtocolControlProtocol)等协议。其中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首先会返回一个PAPREQ数据帧。我们发送一个空LCPREQ帧,以强迫进行协议协商阶段。随后,GGSN发送LCP设置帧,我们拒绝所有的设置并请求验证模式。GGSN选择CHAP或PAP方式验证,我们只接受PAP方式。然后,进行PAP验证用户名和密码过程,在GPRS中用户名与密码都为空,如果成功,GGSN会返回IPCP报文分配动态IP地址。此时,就完成了与GGSN的协商过程。协商过程的状态转换如图5所示。 协商完成后进入IP数据报通信阶段。此时,微控制器向GGSN发送的所有包含IP报文的PPP报文都会被传送给Internet网中相应的IP地址;而远端所有向微控制器IP地址发送的报文也都会经GPRS网传送到微控制器上,从而完成微控制器与远程主机通过互联网的数据传输。 3TCP/IP在RABBIT3000上的实现 Rabbit3000系列芯片是一种高性能8位器件。由于其C语言友好指令集和快速数字处理功能,因而受到瞩目。Rabbit结构以Zilog公司的原始Z80微处理器为基础,但作了几项改进:不像Z80指令集那样使用16位寻址覆盖存储空间,而用一个20位或1MB的实际存储空间;采取直接与静态存储器件相连接的方式;有3条存储芯片选择线路和2组写入/输出启动线路;片上外设包括4个串行端口、l个子端口、40条p线、7个不同的定时器、精确脉冲发生硬件和电池支持的RTC。 用户只需对应添加相关芯片及辅助设施(如电源、用户所需外设等)即可;而软件的实现,由于Rabbit3000系列芯片得到DynamicC编译器的支持以及实现TCP/IP所需的库文件dcrtcp.lib,因此只要会用C语言就可以进行开发。用户关注的重点也变为网络通信实现以后的代码编制及优化,可以极大提高开发进度。 以下是DynamicC实现TCP/IP协议通信的程序主体框架。程序中起始宏定义为默认IP配置信息;“memmap”句可使程序在芯片里面运行时,如同在扩展代码窗口下被编译;“use”句使编译器按照库文件配置编译代码。 #defineTCPCONFIG1 #memmapxmem #usedcrtcp.lib main(){ sock_init(); for(;;){ tcp_tick(NULL);} } sock_init()和tcp_tick()都是TCP/IP函数库的基本函数,前者为初始化TCP/IP协议栈函数,使协议栈开始处理入栈数据报;后者主要有两个用途:①支持后台处理的还不错新信息;②测试TCP/IP套接字的状态。 利用DynamicC提供的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]BehrouzA.Forouzan.《数据通信与网络》[M].北京:机械工业出版社 [3]ZdravkovicA.wirelesspointofsaleterminalforcreditanddebitpaymentsystems[J].IEEECanadianConferenceonElectricalandcomputerEngineering.Partvol.2,1998,pp.890-3vol.2.NewYork,NY,USA. 4.JeanJLabrose.嵌入式系统构件[M].北京:机械工业出版社,2002.145-167. 5.http://www.globalsources.com/gsol/i/POS-customer/a/9000000059885.htm 作者简介:陈群贤:(1970~)女硕士讲师研究方向:计算机应用和控制技术Authorbriefintroduction:CHENQun-xian(1970-),Female,Lecturer,Master.Major:Computerapplicationandcontrol E-mail:jiang502@126.com 联系地址:上海市闵行区江川路690号上海电机学院信息工程系