基于NFC的移动支付系统设计
汤子豪+赵慧
摘要:随着智能手机的普及和电子货币支付系统的日趋完善,小额度电子货币移动支付,成为人们重要的支付手段。结合NFC通信技术的特点,提出了基于NFC的移动支付系统。作为一种小额度电子货币交易方式,该系统操作简单,并具有更高的安全性,适合用于商场、餐厅等服务场所的日常付款,将极大地便利人们的生活。
关键词:Arduino UNO单片机;NFC;PN532;安卓;移动支付
中图分类号:TN929 文献标识码:A 文章编号:1009-3044(2016)12-0306-03
Abstract: With the popularity of Intelligent mobile phone and the rapid development of the electronic currency payment system, payment of small amount of electronic money become an important means of payment. According to the characteristics of NFC communication technology, this paper puts forward the mobile payment system based on NFC. As a payment of small amount of electronic money transactions, the system,with better security, is easy to operate. It is suitable for shopping malls, restaurants and other places of daily payment service, will greatly facilitate people's life.
Key words: Arduino UNO; NFC; PN532; Android;mobile payment
1 概述
当代,手机、IC卡、条形码、二维码等成为人们进行交易的支付方式,由此促进了移动支付方式的研究与发展。作为RFID技术的延伸,NFC技术具有传输距离短的特点,能够更好地保护用户的隐私安全,这也奠定了其在支付领域的重要地位。
在一些发达国家早已广泛应用基于NFC的移动支付方式。例如日本多数大城市都会有支持NFC支付方式的自动售卖机和商场购物。在国内,2011年开始出现了具有NFC功能的手机,有部分发达城市将NFC支付投入到公交、铁路系统上使用,少数高校支持手机消费 [9]。
本系统以NFC中的p2p通信模式作为研究对象,结合现今移动支付系统的相关规则模拟出使用手机NFC功能进行移动支付的过程。
2 NFC技术
NFC,即近距离无线通讯技术(Near Field Communication),是一种非接触式识别和互联技术。NFC的数据交换不需要密码、配对或其他认证步骤,就可以通过简单的触控方式进行信息交换和内容访问。其传输距离短和数据小的特性,也成为支持移动支付的重要因素。
与RFID不同的是,NFC的目标方往往是可编程设备,如移动电话,这样便意味着NFC设备可以生成并发送独特的内容,进行近距离的互相通信。本文将利用此功能完成对目标方反馈唯一的验证码信息。
3 系统组成与设计
3.1 系统的组成和工作原理
本系统主要采用WAP方式架构系统,以移动网络作为系统操作平台,构建以NFC近场通信为基础实现的手机移动支付的交易系统。系统由卖家终端、买家手机终端、服务器处理端三大部分组成,其中卖家终端包括上位机串口传输处理程序和NFC读卡终端。系统组成如图1所示。
基于NFC的移动支付系统将实现以下核心功能:
1) 近场通信功能,使用PN532元件结合Arduino UNO单片机实现智能化近场通信,数据的近距离传输具有良好的保密性。
2) 无线网络通信功能,手机安卓程序与服务端通过无线网络进行通信,使用TCP网络协议传输显示余额信息和支付请求信息。
3) 数据存储功能,服务端统一存储管理卖家买家的余额信息和交易记录信息。
4) 串口传输功能,读卡终端通过串口线与卖家上位机PC端连接,传输交易串口信息。
5) 账单处理功能,服务器端程序根据买家手机发送的请求生成对应的交易支付码,卖家PC端程序对买家的支付码进行进一步处理加入卖家ID的信息,最后又服务器处理最终账单信息。
6) 安全加密功能,在支付码生成阶段由服务器进行加密,加强安全性。
交易开始时,读卡终端开启发送射频场等待目标,手机应用协助开启NFC功能,通过服务器端获取个人支付编码,结合自己的余额和当时的交易时间进行编码,组成一串字符串消息,作为NDEF数据包,通过近场通信传输到读卡终端,而读卡终端将数据包信息通过串口传输到上位机进行进一步处理,生成最终的交易信息字符串通过网络发送到服务器,服务器对卖家PC端传输的账单信息进行处理和存储,扣除买家的存款,增加卖家的存款,完成简单的交易模拟。
根据现有的移动支付系统架构,结合NFC的无线通信原理,本系统将针对硬件和软件两大部分进行实现。
3.2 系统硬件设计
硬件设计主要是基于单片机的读卡器终端,用以完成与目标手机的数据交互与服务器的数据传输,主要包括Arduino UNO单片机、CD4050芯片和PN532。其中,Arduino UNO单片机为主控部分,CD4050芯片负责电平调节,PN532则作为近场通信部分,负责与具有NFC功能的手机进行通信。
硬件设计如图2所示,Arduino UNO的2、3、4输出口分别接CD4050的9、11、14引脚,其中9、11、14号引脚用于对应三个输出口的输入电平;电源接5v,适用于驱动Arduino UNO单片机;PN532的SCK、MISO、MOSI、SSEL分别接CD4050芯片的10、5、12、13引脚,其中10、12、13号引脚用作对应输出,而5号引脚作为唯一对应VCC电压端驱动高电平。
3.3 系统软件设计
软件部分在应用层开发安卓应用,调用手机自带的NFC功能用于和硬件终端的数据交互,在服务层开发服务器服务端程序,使用数据库存储所有用户数据,实现用户信息集中管理和处理。
软件部分使用VS2013开发上位机卖家端程序和服务器端管理程序;使用Eclipse adt开发手机买家安卓端;使用sql server2008存储管理交易数据以及用户数据;使用Arduino开发Arduino UNO单片机底层程序。
系统程序运行时,系统各部分进行初始化,完成手机用户端登录、卖家上位机端打开串口激活读卡器底层电路程序、服务器端运行等待客户端请求等操作。支付流程如图3所示,当初始化完成后,买家端发送请求到服务器,服务器接收请求查询数据库发送动态支付码回用户端,卖家上位机输入商品金额后开启读卡器无线通信功能,用户手机此时贴近读卡终端即可进行通信,动态交易码经过上位机的进一步判断和处理后传到服务器进行处理,处理结果为双方余额的变化,从而完成交易过程。
3.4 数据库设计
本系统的服务器端使用SQL sever 2008数据对交易信息以及用户存款和资料进行存储,其数据库分为6个表,分别是用户登录表、交易记录表、用户存款表、动态支付码表、用户信息表、用户请求表。用户登录表作为最核心的表,主键UserID外链接到动态码表、用户信息表、用户存款表三个表中各自的UserID字段,确保了参照完整性。
用户登录需经过查询用户登录表验证,根据UserID链接在用户信息表查询用户详细信息;在用户存款表查询或修改余额;在动态码表中获取动态交易码。用户请求表和交易记录表作为两个独立的表,用户请求表经过程序处理获取用户的交易请求,经过程序处理后将删除一条记录,并向交易记录存入一条记录作为交易记录,两个表通过程序处理部分具有间接的单向传输关系。
4 总结
基于NFC的移动支付系统,以Arduino UNO单片机为核心,采用结构化设计方法进行设计,实现了近场通信原理下的刷卡式支付。该系统电路简单,操作方便,易于安装。基于NFC短距离和小数据的特性,该系统相对安全,且保密性高,具有一定的实用性。
系统还存在不完善的地方,还值得改进和优化,如手机端的界面和功能不够接近支付宝钱包应用的界面,功能不够完善,PN532的工作开关不够智能控制,只会不断持续的工作,应当设置按钮通电,在需要工作的时候才启动,以免因持续工作而造成损耗。
参考文献:
[1] Tom Igoe,Don Coleman. NFC Arduino、Android与PhoneGap近场通信[M].电子工业出版社,2014.
[2] 维基百科.Arduino UNO简介.http://kb.open.eefocus.com/index.php?title=Arduino_Uno
[3] 王珊,萨师煊.数据库系统概论[M].高等教育出版社,2009.
[4] 李现勇.Visual C++串口通信技术与工程实践[M].人民邮电出版社,2002.
[5] 林瑞仲,吴越.Visual C++.NET类库应用实例[M].电子工业出版社,2003.
[6] 李兴华.Android开发实践经典[M].北京:清华大学出版社,2012.
[7] 朱清慧,张凤蕊,瞿天嵩,王志奎.Proteus教程——电子线路设计、制版与仿真[M].清华大学出版社, 2011.
[8] 董键.物联网与短距离无线通信技术[M].电子工业出版社, 2012.
[9] 叶晓丽.基于NFC技术的移动支付系统硬件设计研究[D].电子工业出版社, 2012.
[10] 张峰,赵壮,肖嗳.移动支付应用和发展研究[J].中国金融电脑, 2005(4).