最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

AndroidNFC手机支付的实现与应用

IT圈 admin 32浏览 0评论

2023年12月7日发(作者:娄绿)

摘要

近年来随着现代通讯技术的进步,手机的功能与普及度高速的成长,手机的广泛使用使手机电子钱包功能被大量应用。NFC就是其应用之一, NFC 提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容从而实现支付。

近场通信技术是一种以磁场感应为基础的短距离无线通讯技术, Android NFC手机支付不但需要智能手机提供硬件支持,还需要强大稳定的软件平台支持。Google的Android v2.3软件平台系统为NFC手机支付所需的软件系统的开发提供有益帮助,将新兴的NFC通信技术与日渐成熟的谷歌Android软件开发平台相结合,设计、开发出一种高效、便捷、易于推广的手机操作系统与手机支付模式,对NFC手机支付项目是至关重要的。其中,确保手机支付安全性所需的加密软件可以在目前相对成熟的WPKI技术的基础上开发。

NFC手机支付项目采用多客户端和单服务器端的框架。客户端和服务器端之间的通讯是在建立握手协议的基础上,利用Android平台开发tag的发布、读写软件,服务端对客户端的请求进行密码核实,在客户端作再次确认后,完成一个完整的手机支付流程。整个项目的实现过程中,程序测试工作也同步进行,力求减少修复所需的时间和技术成本,确保项目满足设计需求。Android NFC手机支付的应用体现在多方面,在票务和付款使用较多。

关键词:Android; NFC;手机支付;实现;应用

I 目录

Abstract

In recent years,with the modern advance communication technology,mobile phone

features and the high speed growth for popularity,making promotion opportunities for early

e-wallet. NFC is one of its applications, NFC provides a simple,touch-sensitive solution,lets

consumers straightforward exchange of information, access to content and services.

Near-field communication technology is a form of short-distance wireless

communication technology based on the magnetic field induction, Android provides hardware

support NFC mobile payment needs not only a smart phone, also need to be strong and stable

software platform support. Google Android v2.3 software necessary for the NFC mobile

payment platform system software system developed to provide useful help, maturing and

emerging NFC communication technology combined with the Google Android software

development platform, design, developing an efficient, convenient, easy to promote mobile

phone operating system and mobile phone payments, NFC mobile payments is crucial.

Among them, the encryption software required to ensure the security of mobile payment can

now relatively mature based on WPKI technology development.

NFC mobile payment project uses a client-side and server-side framework.

Communication between a client and a server-side is based on handshake agreements, using

tag publishing, reading and writing software for Android platform, server password to

authenticate requests on the client, the client again after confirmation, finish a complete

mobile payment process. In the process of realization of the entire project, synchronized

program, seeks to reduce the time and costs required to repair, ensure that the project meets

the design requirements. Android NFC mobile payment applications are reflected in various

aspects, in ticketing and payment using more.

Key words: Android; NFC; mobile payments; implementation; applicationsII

目录

摘要 ........................................................................................................................................... II

Abstract ..................................................................................................................................... II

第一章 绪论 .............................................................................................................................. 1

1.1研究背景和意义 ........................................................................................................... 1

1.1.1研究背景 ............................................................................................................. 1

1.1.2 研究意义 ............................................................................................................ 2

1.2国内外的研究现状 ....................................................................................................... 2

1.2.1国外的研究现状 ................................................................................................. 2

1.2.2国内研究现状 ..................................................................................................... 3

1.3论文的主要工作 ........................................................................................................... 4

1.4论文的内容组织安排 ................................................................................................... 4

第二章 Android NFC支付的相关理论基础 ........................................................................... 5

2.1 Android NFC支付的理论基础 .................................................................................... 5

2.1.1什么是NFC支付 ............................................................................................... 5

2.1.2 NFC芯片结构图 ................................................................................................ 5

2.1.3 Android 系统属性 .............................................................................................. 6

2.1.4 Android应用原理 ............................................................................................... 7

2.1.5 Android NFC支付工作原理 .............................................................................. 9

2.1.6 Android NFC支付实现机制 ............................................................................ 10

2.1.7 NFC支付优势 .................................................................................................. 11

2.2 本章小结 .................................................................................................................... 12

第三章 NFC手机支付分析和改进 ....................................................................................... 13

3.1 手机支付需求分析 .................................................................................................... 13

3.2手机支付的改进 ......................................................................................................... 16

3.2.1传统手机支付 ................................................................................................... 16

3.2.2新型的手机支付 ............................................................................................... 17

3.3 NFC手机支付安全技术 ............................................................................................ 18

3.3.1 WPKI安全技术 ................................................................................................ 18

III 目录

3.3.2 WPKI技术的改进 ............................................................................................ 20

3.4 本章小结 .................................................................................................................... 21

第四章Android NFC手机支付实现 ...................................................................................... 22

4.1 NFC手机支付设计目标 ............................................................................................ 22

4.2 NFC在Android系统中的调用 ................................................................................. 23

4.2.1 Android NFC代码类 ........................................................................................ 24

4.2.2 NFC功能实现 .................................................................................................. 25

4.3 NFC手机支付界面的实现 ........................................................................................ 28

4.4 Android 元素的声明 ............................................................................ 30

4.5 Tag 的发布 ................................................................................................................. 31

4.5.1 Intent发布系统 ................................................................................................. 32

4.5.2使用前台发布系统 ........................................................................................... 33

4.5.3 NFC tag数据的使用 ........................................................................................ 34

4.5.4点对点数据交换 ............................................................................................... 36

4.6 测试与结论 ................................................................................................................ 37

第五章 NFC手机支付应用 ................................................................................................... 38

5.1 NFC应用 .................................................................................................................... 38

5.2本章小结 ..................................................................................................................... 39

总结与展望 .............................................................................................................................. 40

本文完成的主要工作 ....................................................................................................... 40

本文的创新点 ................................................................................................................... 40

手机支付项目的不足之处 ............................................................................................... 40

参考文献: .............................................................................................................................. 42

致 谢 ...................................................................................................................................... 44

IV 第一章 绪论

第一章 绪论

1.1研究背景和意义

1.1.1研究背景

NFC近场通信技术最近炒得火热,很多新出的智能手机、甚至平板电脑都会搭配NFC功能。据市场调查机构Berg Insight(瑞典)最新的全球NFC设备年度销量报告,2011年搭载NFC的手机出货量翻了10倍,达到3000万部,这个数字在接下来几年中还会翻番。如图1-1所示

图1-1 NFC手机销量图

当前,金融服务已渗入国民经济与人们日常生活的方方面面,金融交易与支付的频率随着之呈飞跃式增长,将金融支付与移动互联网融合无疑是巨大的商机,手机支付的普遍应用还将在金融服务业引起革命性的变革,它将在很大程度上改变人们使用许多电子设备的方式,甚至改变使用信用卡、钥匙和现金的方式。

在手机支付众多的技术方案中,基于近场通信技术(NFC)的手机支付方案具有明显的竞争力,使用带NFC芯片的手机,人们可以在任何时间、任何地点,通过识别的设备,与他们希望得到的服务与交易联系在一起,完成付款并获得相关信息。一些研究机构预测,2011年全球基于移动电话的非接触式支付额将超过360亿美元,NFC手机支付也因此而备受关注。

基于NFC技术的手机支付需要强有力的软件支持,Google公司于2007年推出的Android软件开发平台,允许开发者开发出丰富的移动应用程序,为NFC手机支付技术1 华南理工大学工程硕士学位论文

的开发和推广提供了良好的条件。Android平台是由Linux Java构成的。它的架构和工作原理决定了Android平台下的软件具有良好的可移植性,Android是开源系统,能够有效降低软件的成本,让每个用户能够自由的获取信息。Android提供了一个从操作系统到应用程序的完整的层次结构,同时又允许人们定制差异性软件,以便形成自己独特的竞争优势。作为开源软件,Android的另一个优点是允许厂商自主解决问题。这就为不同厂商在开发其Android产品时加入NFC技术提供了前提条件。

1.1.2 研究意义

NFC手机支付实现旨在模拟实际手机支付场景,通过Android系统与智能手机所自带的NFC模块的结合,实现点对点,端到端的手机支付模式。实现设计通过拟引入双卡模式,手机SIM卡与NFC支付卡单独成卡,靠系统层调用,实现NFC支付。项目的整体架构以现有的支付结构为基础,结合NFC模块的自身特性作相应的调整,并通过Android软件平台进行推广,目前这一方案已受到国内外市场的普遍关注。

手机支付对经济、社会的益处是多方面的:对于银行,手机支付丰富了其交易渠道,还能增加银行的中间业务收入,实现本身利益的最大化。对于移动运营商,手机支付是增加ARPU值的有效方法,通过网络资源增值效益。对于商家,手机支付意味着高效率和低成本。对于最终用户,手机支付最主要价值便是生活的便利,手机便是信用卡,交通卡,同时又兼具电子标签阅读器的功能。手机支付是金融行业信息化的全新的银行业务支付手段,可以刺激用户产生消费需求,并为移动运营商带来数据流量,促进其他移动互联网业务的发展。NFC手机支付的带来了如此的经济效益,这强劲的增长势头也催生了移动信用卡读卡器的迅猛发展,支付市场潜力十分巨大,其产业链包括芯片企业、设备制造商、银行、移动运营商、服务提供商等,其中核心问题是安全性及支付相关技术。一旦支付技术和安全性技术问题能够得到很好的解决,将推动这个新兴行业快速发展,实现金融行业的移动信息化,产生巨大的经济和社会效益。

1.2国内外的研究现状

1.2.1国外的研究现状

NFC在2004年3月18日开始发展,已在北美、欧洲、亚洲的日本、韩国等都有测试点,而在日本,NFC已成手机支付主流标准,其NF C手机支付产业处于国际领先水平。日本是NFC手机支付的领头羊,运营商通过收购银行的方式解决了”两虎斗”的局面,并主导整个产业的发展。韩国的手机支付运营较为成功,韩国S K电信、 KTF、2 第一章 绪论

LG电信等运营商的手机支付服务由韩国最大的手机支付提供商和移动内容提供商DANAL提供。无线结算服务已是 S K 电信、KT F、L G电信这3家最大的移动运营商的重要业务之一【1】。把手机当作信用卡、公共交通工具车票在韩国已颇为流行。欧洲NF C手机支付2006年起步,2007年开始实验 型 推广。Orange和Cofinoga在法国是先行者:JCB、Rabobank、Orange等在荷兰是主导方。在德国诺基亚、飞利浦、 沃达丰是主要推动者。NFC技术在德国哈瑙市最先投入商用,如Nokia3220手机被用作电子车票。2008年2月德国联邦铁路、沃达丰和德国电信联合发起的 “轻松旅游”项目使旅游者能通过手机支付代替传统的车票来乘坐公共交通工具。上下车时,用户使用具备

NF C功能的手机在车载读卡器前刷一下,后台处理器即会根据用户登记的 资料来计算行程的价格,并显示在用户的手机上。在该项目中,电子票务方案以NF C技术 为基础,电子装置在几厘米距离内进行数据的无线传输,票务信息在手机的SIM卡中被安全存储。

1.2.2国内研究现状

2006年6月,诺基亚和中国移动、飞利浦、易通卡公司在厦门启动了中国首个NFC手机支付试验,用户使用内嵌NFC模块的诺基亚3220手机,可在厦门市任何一个易通卡覆盖的营业网点(公交汽车、轮渡、电影院、快餐店)进行手机支付。2007年NFC在中国大陆可谓是”应用启动”之年,从8月开始,内置NFC芯片的诺基亚6131i在包括北京、厦门、广州在内的数个城市公开发售。这款手机预下载了一项可以在市政交通系统2007年NFC在中国大陆可谓是”应用启动”之年,从8月开始,内置NFC芯片的诺基亚6131i在包括北京、厦门、广州在内的数个城市公开发售。这款手机预下载了一项可以在市政交通系统。而中国目前还没设置测试点。而目前中国的手机的NFC功能还不是很普及,挺多市民甚至还不知道手机的手机支付功能。本文研究对安卓平台下的NFC手机在中国的手机支付应用进行分析,推广NFC功能的应用。而在国内NFC手机支付发展缓慢,以移动运营商和银联为主的手机支付标准之争以及国内的金融环境让NFC手机支付难以推行。

智能型手机的蓬勃发展,让各式各样的应用得以在手机上实现。而众所期盼的行动付款应用,在Google将NFC功能内建于Android 2-3版作业平台后,也快速引爆市场商机,并吸引生态系统内的相关业者倾力展开布局,让智能型手机变身电子货币包的梦想越来越近。在长达4年多的推广后,手机行动付款应用终于将开枝散叶。尤其在Google3 华南理工大学工程硕士学位论文

于最新一代Android平台中原生支持近距离无线通信(NFC)功能,与北美三大移动电话营运商将合资建立行动付款服务系统,以及诺基亚(Nokia)等手机制造商全力支持下,手机内建NFC行动付款功能那已成为2011年智能型手机发展的热门趋势。

1.3论文的主要工作

本文首先分析了Android NFC 手机支付的研究背景、意义以及对该课题的研究现状。再次介绍了Android NFC支付的相关理论基础,把传统支付方式和新型的支付方式进行比较,找出目前手机支付存在的问题,并针对安全问题引进了WPKI加密技术。其次就Android NFC手机支付的实现做出一个设计方案,最后就Android NFC手机支付的应用进行了阐述。

1.4论文的内容组织安排

首先介绍了Android平台NFC手机支付的实现与应用研究的意义。从经济角度出发,这将是支付方式进入更加快捷的另一个时代。手机支付对经济、社会的益处是多方面:对于银行,手机支付是增加ARPU值的有效方法,获得网络资源增值效益;对于商家,手机支付意味着高效率和低成本;对于最终用户,手机支付最主要价值是为人们生活带来的便利。

再次介绍了Android平台NFC支付的相关理论基础。主要对Android NFC支付工作原理和实现机制进行了详细的介绍和说明,并对NFC技术优势进行了相关的阐述,为后续的Android NFC支付系统设计方案的提出扫除技术障碍。

其次对NFC手机支付的分析,把传统的手机支付和新型手机支付即NFC支付进行比较,找出目前手机支付的存在的问题,对存在的问题手机支付进行了改进。接着针对手机支付最重要的问题-安全问题进行了设计,使用改进的WPKI加加密技术确保支付的安全进行。

第四章,具体描述NFC手机支付设计的实现过程,首先提出总体设计方案,包括设计目标、支付界面的设计实现、手机支付的客户端与服务器端的通讯,并对NFC在Android系统中的分布与使用进行初步设计。

第五章,根据Android智能手机的各项功能,实现 NFC手机支付应用。以及对其应用进行了总结。

最后,本章对本文的总结与未来的展望的阐述。 说明了本文的创新点和手机支付项目的不足之处4 第二章 Android NFC支付的相关理论基础

第二章 Android NFC支付的相关理论基础

2.1 Android NFC支付的理论基础

2.1.1 什么是NFC支付

NFC全称Near Field Communication,近距离无线通信。是由飞利浦公司发起,由诺基亚、索尼等著名厂商联合主推的一项无线技术。由多家公司、大学和用户共同成立了泛欧联盟,旨在开发NFC的开放式架构,并推动其在手机中的应用。

NFC由非接触式射频识别(RFID)及互联互通技术整合演变而来的,在单一芯片上结合了感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换[2]。这项技术最初只是RFID和网络技术的简单合并,现在已经演变成一种短距离无线通信技术,发展态势相当迅速。

NFC支付就是根据NFC的技术原理,能在短距离内与兼容设备进行识别和数据交换,NFC手机能够使用NFC技术与兼容NFC支付设备进行数字支付。使用带NFC芯片的手机同时使用专用的SIM卡,你就可以把手机当成公交卡、银行卡或者网上银行终端来使用。

2.1.2 NFC芯片结构图

如图2-1-1是NFC硬件架构图。NFC功能的实现由两部分组成:NFC 模拟前端(NFC

图2-1NFC硬件结构图

5 华南理工大学工程硕士学位论文

Controller 与天线)和安全单元[3]。NFC模拟前端是由NFC控制器和NFC天线组成,二者通过接收NFC进场通信信号和对接收到的信号进行控制处理,实现数据的传输和交换。而安全单元则根据应用需求的不同,安全单元可以是SIM、SD、SAM或其它芯片。实际应用,根据手机支付对系统安全级别的要求采取相应的安全芯片连接。

2.1.3 Android 系统属性

Android是一种以Linux为基础的开放源代码操作系统,大达地降低软件的成本,主要使用于便携设备。Android操作系统最初由Andy Rubin开发,最初主要支持手机。Android中文名安卓、安致,是由Google开放手持设备联盟开发的,由Google于2008年9月23日正式发行,采用的C/C++底层编程语言开放源码,软件类型APK,主要支持ARM、MIPS、x86等平台。采用整块性核心(Linux)内核类型。该平台由操作系统、中间件、用户界面和应用软件组成。Android平台的特点:

Android平台具有两大特点,第一:它的开源形态和应用程序接口(API)开源形态决定了Android平台的可移植性。对手机而言,Android平台的可移植性是非常重要的。Android平台没有继承传统的模式,而是从操作系统做起独立研发了一整套新的平台,虽然Android选择采用了Linux内核,但其库群采用软件却和Linux完全不同,这主要是考虑到免费开放的需要,为此集中了所有可以自由使用的软件应用程序接口(API)影响应用软件的开发难度与普及性,尽管开发者单凭现成的经验难以熟练掌握Android平台,但其编程方式对初学者而言还是容易上手的。

2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年7月数据,Android占据全球智能手机操作系统市场59%的份额,中国市场占有率为76-7%,Android占据了如此大的市场份额,也促使了安卓应用的快速发展。

Android系统的开源性能为用户提供很多便利,系统的拓展性能好,只要有能力可以自己开发各种软件,还能提供一种市场盈利的有效途径,最震撼人心之处的是Android手机系统的开放性和服务免费。Android系统的开源和免费是它俘获众多厂商的法宝之一,获得厂商即获得市场份额。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有非常大的自由度,突破了iPhone等只能添加不多数的固定软件的6 第二章 Android NFC支付的相关理论基础

枷锁;同时与Windows Mobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近30%的成本。

2.1.4 Android应用原理

Android系统的目的是为了开发与创建性能优异的移动设备应用程序,以充分发挥手持设备能够提供的全部优点。Android有另一优点就是允许开发者创造出丰富的移动应用程序,而使用者只需要根据自己的喜好对所需的应用软件进行安装,就可以直接使用该应用。那么下面我们看看Android应用的使用原理:Android系统架构。

Android系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层【4】,图2-2所示。

图2-2 Android 系统结构图

1. 应用程序框架

开发人员也可以访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

2. Android API

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又7 华南理工大学工程硕士学位论文

无需访问源码,或理解内部工作机制的细节。API除了有应用”应用程序接口”的意思外,还特指 API的说明文档,也称为帮助文档。API 分为四种类型: 远程过程调用(RPC);标准查询语言(SQL);文件传输;信息交付。Android适用于各种各样的手机,从最低端直到最高端的智能手机。核心的Android API在每部手机上都可使用,但仍然有一些API接口有一些特别的适用范围:这就是所谓的“可选API”。

这些API之所以是“可选的”,主要是因为一个手持设备并不一定要完全支持这类API,甚至于完全不支持。例如,一个手持设备可能没有GPS或WI-FI的硬件。在这个条件下,这类功能的API还存在,但不会以相同的方式来工作。

3. 应用包(apk)运行原理

Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。Android应用程序会通过一个工具将应用所有的CLASS文件转换成一个DEX文件,而后Dalvik虚拟机会从其中读取指令和数据。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行,这个系统发布后非常方便用户的需求。每一个Android 应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。这样Android平台能实现资源利用最大化。

Android应用程序使用系统API,是完全的Java程序,它包含了代码、工程、文件以及各种资源,应用程序都被编译成Android系统的应用程序包,就是apk文件,一般情况下,Android系统中的应用程序分为以下四个部分:

(1)活动(Activity)

活动是Android应用程序中最基本的组件,通常每个用户界面都是一个活动,每个活动作为一个独立类,从活动基类(Activity)继承,它显示由视图空间组成的用户接口,并对相应的事件做出响应,大部分程序会有多个应用程序界面,多个对应的活动。

(2)广播接收器(Broadcast Receivers)

广播接收器主要是让应用程序响应来自外部的事件,可能是系统发的事件,也可能是其他应用程序发的事件。

(3)服务(Service)

服务是具有较长生命周期却没有用户界面的程序,举个例子,在后台播放的音乐。

(4)内容提供者(Content provider)

8 第二章 Android NFC支付的相关理论基础

应用程序可以将它们在运行过程中的数据保存到数据库或者文件中,当其他程序需要访问该程序的数据时,内容提供者就发挥作用了。它实现了一组方法可以让其他应用读取和保存该内容提供者处理的各种各样数据类型。

Android应用程序包含在一个单一的文件夹,有如下文件:

,自动化编译文件,系统开发时用到。

,工程配置文件,里面定义了程序的各个组件,经过打包工具aaPt打包成二进制格式的,内容不变。

java源代码,使用SUNJDK将Java源代码编译成Java字节码(许多的后缀名为class的文件),接着通过Android的工具软件dex把class文件变成dex文件。

资源文件,包含图片文件、xml文件、字符串文件等,经过aaPt处理成二进制文件,其中图片等文件内容不变,最后将这些组成部分打包成一个apk包,再进行签名就可以使用。

Android系统平台对智能手机应用程序和第三方应用程序不加区分,对所有其他应用程序也一视同仁所有应用程序都可以平等地共享资源,共同向用户提供形式多样。内容广泛的应用和服务项目使用基于Android系统平台的移动设备,用户可以按照自己的兴趣与意愿而设定手机,他们也可以随意的更换自己的手机屏幕与按键风格,甚至可以让手机使用特定的图片浏览程序、用特定的方式浏览图片。

2.1.5 Android NFC支付工作原理

NFC将芯片直接安装在Android平台的手机上,这样的Android智能化手机就具备了进行小额电子支付和读取其他NFC设备的标签信息的功能【5】。

在Android的应用设计中,采用的是恩智浦半导体(NXP Semiconductors) 推出的PN544芯片,该芯片是符合业界标准的NFC控制器,同时符合欧洲电信标准协会(ETSI)

制定的最新NFC规范,能够为手机制造商和电信营运商提供完全兼容的平台,用以推广NFC设备和服务。PN544芯片可应用于手机,为用户提供一系列崭新的非接触式应用, 如手机支付、交通和大型活动票务以及直接从手机SIM (用户识别模块) 卡进行资料共享等,进而改善用户的使用体验。PN544的其他主要优势包括:物理面积小,易于实现尺寸设计优化;低功耗优化;可选断电和低电压工作模式;主机基带MIFARE

1K/4K读写功能;可选模块化通用软件堆栈,不受平台限制;优化天线设计,实现最佳9 华南理工大学工程硕士学位论文

射频性能。因此,Android平台采用该芯片作为NFC控制器从而实现NFC支付是最佳选择。

Android平台NFC支付就是通过Android智能手机中的近场通讯模块实现端到端的NFC手机支付,NFC手机支付采用双卡模式,依靠系统层调用手机中相互独立的SIM卡与NFC卡,实现NFC的手机支付。

2.1.6 Android NFC支付实现机制

Android NFC支付实现机制主要通过NFC的两种工作模式来实现的,Android 平台NFC的设备可以在主动或被动模式下交换数据。在被动模式下,启动NFC通信的设备,也称为NFC发起设备(主设备),在整个通信过程中提供射频场(RF-field),它可以选择106kbps、212kbps或424kbps其中一种传输速度【6】,将数据发送到另一台设备。另一台设备称为NFC目标设备(从设备),不必产生射频场,而使用负载调制(load modulation)技术,即可以相同的速度将数据传回发起设备。此通信机制与基于ISO14443A、MIFARE和FELICA的非接触式智能卡兼容,因此,NFC发起设备在被动模式下,可以用相同的连接和初始化过程检测非接触式智能卡或NFC目标设备,并与之建立联系。

图2-3 NFC主动模式

在主动模式下,每台设备要向另一台设备发送数据时,都必须产生自己的射频场。如图2-3所示,发起设备和目标设备都要产生自己的射频场,以便进行通信。这是对等网络通信的标准模式,可以获得非常快速的连接设置。如图2-4所示,移动设备主要以被动10 第二章 Android NFC支付的相关理论基础

模式操作,可以大幅降低功耗,并延长电池寿命。在一个应用会话过程中,NFC设备可以在发起设备和目标设备之间切换自己的角色。利用这项功能,电池电量较低的设备可以要求以被动模式充当目标设备,而不是发起设备。

图2-4 NFC被动模式

2.1.7 NFC支付优势

NFC 优势与RFID不同的是,NFC具有双向连接和识别的特点,工作在13.56MHz频率范围,作用距离10厘米左右。可实现传输速率106kbit/s、212kbit/s、424kbit/s,并自动在106kbit/s、212kbit/s、424kbit/s三个传输速度之间切换。理想速率可以达到1Mbit/s(目前为424kbit/s)。NFC技术在ISO18092、ECMA 340和ETSITS102和190框架下推动标准化,同时也兼容应用广泛的ISO14443Type—A、B以及FELICA标准非接触式智能卡的基础架构。NFC手机支付所具有的明显优势主要表现在以下方面::

1. NFC手机支付综合了遥控识别技术和网络技术的精华,通过移动终端将本地网和移动网络连接【7】。与传统识别方式相比,NFC的遥控识别技术在不需要直接接触,不要求光学可视及人工干预的情况下,即可完成信息输入和处理的全过程,具有操作简易、方便、快捷的特点。

2. NFC能够快速、自动地建立无线网络,可以为蜂窝设备,蓝牙设备,WIFI设备等提供一个虚拟连接,在无需特别配置的情况下,使这些电子设备能在巧厘米的距离内相互链接。因此具备较高的冷安全性,由于NFC技术实现了手机和信11 华南理工大学工程硕士学位论文

用卡之间近距离的点对点连接,当支付行为发生时,信用卡密码等绝密数据无需长距离传输,避免了开放式系统中可能出现的安全隐患,使手机支付更加安全可靠。

3. 具有NFC芯片的智能手机,在防盗功能方面比目前使用的一卡通更加安全,用户可以在需要刷卡时开启刷卡功能并设定密码,而在使用结束后关闭刷卡功能。万一手机丢失,只要有设定密码,卡内的余额就不会被窃取,从而保证了个人账户的安全【8】。

4. 不仅如此,用户还可以用手机完成查询余额、账户充值、读取交易记录等操作,并通过手机内的WAP站点,查询相关的商户信息和商品信息等。

目前,手机支付业务所需的功能基本都能够实现,在新兴的移动应用项目中,手机支付是最受用户欢迎的项目之一,据称有八成以上的消费者希望将公交卡、银行卡等支付工具集成到手机上。随着手机支付业务的推广普及,它将成为手机应用服务的另一个快速增长点。

2.2 本章小结

本章对Android平台NFC支付的相关理论进行了介绍和说明,主要介绍了NFC支付的概念,NFC芯片结构图,Android系统属性,Android的应用原理,并对Android NFC支付工作原理和支付实现机制进行详细的说明,最后,针对NFC支付对NFC支付技术优势进行了介绍。

12 第三章 NFC手机支付分析和改进

第三章 NFC手机支付分析和改进

3.1 手机支付需求分析

手机支付是指通过将银行卡信息存储至手机中的芯片(可以为SD卡、贴膜卡或SIM卡等方式),利用手机的无线通信技术和射频技术实现支付的新型支付产品。

3G网络和智能手机的日益普及,为以移动互联网为基础的电子支付创造了有利条件,手机支付在电子支付体系中占据的市场份额越来越大。随着移动互联网的不断扩张,人们正逐步将其在互联网上的行为习惯转移到移动互联网,这就为手机支付提供了源源不断的需求。手机比PC机更贴近个人用户、移动互联网的接入比互联网更加随时随地,因此移动互联网可以承载不同于互联网的新的应用,从而为手机支付创造的更大的发展空间。

根据手机支付所涉及的交易额度,可以将手机支付分为微支付和宏支付,简称微付和宏付。但是两者之间并没有统一的规定界限。微付包含游戏、视频下载等网络内容服务以及交停车费等近距离支付所涉及的小额支付业务;宏付则主要指在线购物、在线缴费等涉及金额较大的近距离支付业务。由于所涉及的交易额度不同, 微付和宏付所要求安全级别不同: 宏付必须通过可靠的金融机构进行交易权鉴定以确保交易安全;而微付使用移动网络本身的SIM卡交易权鉴定机制就可以确保交易安全。欧盟将手机支付划分为【9】:

 微付:支付金额低于2欧元;

 小额支付:支付金额介于2—25欧元之间;

 大额(宏)支付:支付金额在25欧元以上。

目前,手机支付业务在发达国家,特别是日本、韩国获得了大规模应用,而在我国尚处于起步阶段。由于各国的实际情况不同,产业链主导者也不同,因此,存在着不同的商业运营模式【10】。

(1)运营商为主体模式。该模式主要通过运营商来推动整个手机支付产业链的发展。移动运营商以用户的手机话费账户或专门的小额账户作为手机支付账户,用户所发生的手机支付交易费用全部从用户账户中扣减。如日本移动运营商NTT DOCOMO推广的I-mode FELICA手机电子钱包服务,用户将IC卡插入手机就可以进行购物。I-mode

FELICA使用的IC卡中安装了电子交易软件,用户拥有一个账户,可以购买电子货币充值。进行交易时费用直接从用户的电子账户中扣,整个支付过程无需金融机构参与。

13 华南理工大学工程硕士学位论文

这种模式的特点是移动运营商直接与用户联系,不需要银行参与,技术成本较低。问题在于移动运营商参与金融交易,需要承担部分金融机构的责任和风险,如果没有3/4经营资质,将与国家的金融政策发生抵触。

(2)银行为主体的模式。在这种模式中,各银行通过与移动运营商建立专线等通信线路,自建计费与认证系统,为用户手机换置STK卡。 银行需要为用户手机将SIM卡换为STK卡,用户在手机上直接登录所在银行的账户,进行手机支付交易。该模式产生的费用主要有三部分:一是数据流量的费用,是由移动运营商收取;二是账户业务的费用,是由银行收取;三是支付业务的服务费用,由银行、运营商、支付平台分成。

这种模式的典型案例是中国工商银行推出的手机银行业务。工商银行的用户使用手机直接登录或发送特定格式的短信到银行的特服号码,银行按照客户的指令可以为客户办理查询、转账以及缴费等业务。

该模式的特点是各个银行只可以为本行的用户提供手机银行服务,不同银行之间不能互通;特定的手机终端和STK卡换置也会造成用户成本的上升;移动运营商只负责提供信息通道,不参与支付过程。

(3)第三方支付服务提供商为主体的模式。该模式中,第三方支付服务提供商是独立于银行和移动运营商之外的经济实体,通过自己拓展用户,与银行及移动运营商合作,手机提供支付业务。目前,该模式最成功的案例有瑞典的Pay Box公司在欧洲推出的手机支付系统。用户如果想使用该服务,需要去服务提供商处注册账号,并与自己的手机绑定。在购买商品后进行费用支付时,给商家提供用户的手机号码。商家向Pay Box提出询问,在用户确认后完成支付。第三方支付服务提供商的收益主要来自两个部分:一是向运营商、银行和商户收取设备和技术使用许可费用;二是与移动运营商以及银行就用户业务使用费进行分成。

这种模式的特点是:第三方支付服务提供商可以平衡移动运营商和银行之间的关系;不同银行之间的手机支付业务得到了互联互通;银行、移动运营商、支付服务提供商以及SP之间的责、权、利明确,关系简单;对第三方支付服务提供商的技术能力、市场能力、资金运作能力要求很高。

通过对目前手机支付的现状比较,各自为营的支付运营模式都有各自的特点。以第三方交易平台为支撑的手机支付业务具有分工明确、责任到位特点,在银行、移动运营商、平台运营商以及用户之间建立了紧密的联系,将多对多的关系转化为多对一的关系,有效地协调了各利益群体之间的关系,从而大大提高了手机支付的效率。

14 第三章 NFC手机支付分析和改进

第三方交易平台为用户提供了跨银行、跨移动运营商的多种选择,从而大大拓展了手机支付的应用范围,平台运营模式简化了个相关环节之间的关系,把处理各种错综复杂的关系的任务交由自己承担。在手机支付的产业链中,平台的价值日益凸显,平台之间的竞争将成为手机支付行业角逐的焦点。因此,手机支付服务提供商需要在市场推广能力、技术研发能力、资金运作能力等方面做出不懈的努力;在手机支付业务的产业链中,移动运营商、银行、手机支付服务提供商和商家等各环节都拥有各自的独特资源与核心利益,只有通过彼此协调才能建立起科学合理的运作模式才能推动手机支付业务各相关方之间实现和谐共赢。

不容置疑,在手机支付业务的三种运营模式中,以第三方手机支付服务提供商为运营主体的模式无疑是最具生命力的。它很可能最终成为手机支付业务的主要发展方向。眼下,第三方手机支付市场的竞争日趋激烈,各企业竞相与银行、移动运营商达成战略合作,扩大自身的资源优势。另一方面,整个市场仿佛成了大型支付企业比拼技术的竞技场,各种具有新的微支付功能的快捷支付产品不断推出。激烈的竞争加速推动着手机支付产业链的形成,这个新兴产业即将进入快速发展阶段。

15 华南理工大学工程硕士学位论文

3.2手机支付的改进

3.2.1传统手机支付

传统的手机支付大都是采用短信方式、WAP方式等进行,其注册流程如图3-1示

图 3-1 传统手机支付注册流程

16 第三章 NFC手机支付分析和改进

首先,用户需到官方网站注册,填写用户名和设定密码,通过邮箱或手机来验证账户信息是否正确,若用户更改手机的话,就重新填写手机号码信息,重新发送验证码来验证用户是否正确。

而传统手机进行小额支付时,需要通过频繁地发送短信来验证用户信息是否正确,通过验证后才能进行交易。如果用户需要频繁的进行小额支付时,传统的支付将会显得非常繁琐。

3.2.2新型的手机支付

如果进行小额支付,传统的支付方式必将被用户遗弃,但采用新型的NFC手机支付将会受到广大用户的欢迎,NFC手机支付技术相对于短信方式和WAP方式具有明显的优势。传统的支付以短信方式需要来回多次发送短信以确认交易,WAP方式需要在菜单上进行多次选择;而近场通讯(NFC)技术只需用手机靠近读卡设备就可以完成支付。其交易微支付时,NFC手机支付所具有的省时、省力、便捷的优势是短信方式和WAP方式无法匹及的,其发展前景是不可估量。流程如图3-2所示,在频繁进行微付时,才NFC支付无非是最便捷的交易方式。使用NFC设备支付时,只需把NFC手机靠近识别NFC的终端设备,通过握手交互【11】,

图3-2 NFC支付流程图

17 华南理工大学工程硕士学位论文

建立连接后只需身份验证就可以执行交易。

总之,不管是传统的手机支付方式还是新型的NFC支付方式,那种支付方式更适合消费用户的口味,就决定了那种支付方式的未来。

3.3 NFC手机支付安全技术

使用手机支付,首先用户最关心的是支付的安全性。任何手机支付的设计首先必需确保手机支付的安全性,手机支付与互联网银行一样,需要提供本人的银行账户并输入密码。这些私密信息显然绝对不能像目前移动运营商提供的手机短信那样全部用明码传输,必须首先加密。因此,安全可靠的加密系统就成为手机支付的安全风险的关键。

用户选择手机支付的前提是解除用户对账户安全的疑虑,任何差错都将导致整个手机支付系统的崩溃。

因此,手机支付必须建立在绝对可靠的加密技术的基础之上。目前国际上有关安全加密的研究主要是针对互联网的,针对移动互联网的安全技术与加密技术的研究与应用目前尚处于探索阶段,这就为NFC手机支付项目的顺利实施造成一定难度。

与互联网一样,移动互联网的安全性取决于四个相互交织的要素:保密、鉴别、抗否认和完整性控制。保密即保证受保护信息在存储和传输的过程中的机密性,杜绝未经授权者的入侵;鉴别是指在接触并处理敏感信息前必须先确认对方的身份;抗否认性要求能够保证信息发送方不能否认已发送的信息,从而确保电子签名有效性;完整性控制要求确保收到的信息是正确无误的原始数据,而非被第三者篡改或伪造过的虚假信息。满足这四大要素,才能确保手机支付的安全性,解除用户对账户安全的疑虑。

3.3.1 WPKI安全技术

WPKI(即无线公开密钥系统)将互联网中公开密钥系统(PKI)引入到移动互联网环境。为了满足在移动互联网进行手机支付过程中出现认证和加密的需求,WPKI技术即无线公开密钥体系应运而生,并逐渐在手机支付业务中得到实际应用。鉴于WPKI对于NFC手机支付重要性,以下先分析WPKI加密技术。

首先从公开密钥系统(PKI)说起,PKI是建立所谓公钥理论之上的信息安全服务系统,是国际公认的互联网电子商务的安全认证机制。它将现代密码学中的公钥密码理论用于在开放的互联网环境,提供数据加密以及电子签名服务,在保证互联网的安全性方面起了重要作用。在公开密钥系统(PKI)中,加密密钥与解密密钥是完全不同的。信息的发送者用接收者的公钥发出加密信息,接收者用自己的私钥解密。这种信息收发模式能18 第三章 NFC手机支付分析和改进

同时确保信息的机密性与身份认证的不可抵赖性。WPKI并不引入新的标准,而是沿用了PKI系统的标准密钥与证书管理平台。它采用了优化的ECC椭圆曲线加密技术和经过压缩的X.509数字证书,通过可以信任的第三方机构认证中心(CA)对用户的身份进行验证,以达到确保移动互联网信息安全的目的。

无线公开密钥系统(WPKI)的系统架构图如下:

图3-3 WPKI系统框架图

移动终端用户先在注册机构注册,然后向证书中心申请数字证书,证书中心在审核用户身份后,将证书与私钥输入用户的UIM卡,用户的数字证书与私钥用于保证端对端手机支付的安全,服务提供商则通过验证证书确定用户身份,完整的无线公开密钥系统(WPKI)【12】必须配备数字证书签发机关(CA)和数字证书库,必须具备密钥备份及恢复功能和证书作废功能,还应拥有相应的应用接口。其中,证书签发机关(CA)和数字证书库用于签发并存储的数字证书及公钥【13】,密钥备份及恢复功能在用户丢失密钥时用于提供备份与恢复密钥,证书作废功能用于用户身份变更,作为数字证书的签发机关应具有权威性,因为数字证书包含有证书持有者的相关信息。

当前无线公开密钥系统(WPKI)的主流体系有:由APFORUM开发的WAPPKI系统、日本NTT开发的MODE安全体系和美国PALM公司的安全体系。这些WPKI系统都具备自己独立的协议并已用于移动互联网的数据业务。国内对WPKI技术的研发也取得长足的进步。

19 华南理工大学工程硕士学位论文

由于WPKI加密技术在手机支付技术方面被广泛应用,但改加密技术还存在以下各方面的问题:

与互联网相比,移动互联网的处理能力弱、存储容量小。

适用于移动互联网的WPKI证书是互联网PKI证书的一个分支,二者缺乏互通。

移动互联网带宽成本高,时间延迟长,网络连接的可靠性比互联网低。

为了进一步扩大WPKI加密系统的应用范围,移动终端设计还不够完善。

由于数字签名还没有正式颁布的相关法律的保护,降低了人们对WPKI系统的信任度,不利于WPKI加密技术的推广和普及。

总之,WPKI正处于产品开发和市场培育的阶段,对WPK工加密技术及其应用的研究探索方兴未艾。虽然离真正的普及一段距离,但随着移动互联网的拓展,智能手机的普及和移动商务服务的多样化,WPKI加密系统的作为手机支付的保护神,会有更大的发展空间,其市场分额也会随着技术的进一步完善而不断拓展。

3.3.2 WPKI技术的改进

针对WPKI加密技术存在以上的一些问题,对WPKI做了进一步的改进。其改进如以下:

要求WPKI加密系统尽量少占用资源,降低处理难度。

需要加强WPKI标准与PKI标准的互通性。

针对网络连接可靠性低,因此WPKI加密系统的各项操作要求有较快的速度。

加强移动终端的设计,提供功能更强、更方便可靠的移动设备。

尽快推出数字签名相关法律,提高用户对WPKI系统的信任度。也有利于加密技术的推广和普及。

若对以上存在的问题进行了改进,则WPKI未来的发展趋向明朗。

标准化:为了更好地为手机支付用户服务,要求不同厂商、不同国家和不同地区的WPKI产品能够互连互通,并且能够进行互操作,因此它们应该支持相同的标准。使用相同的证书格式与接口规范等。

商业化:以认证是一种契约,更适合于商业化运作,以认证中心应逐步从政府中剥离出来,采用商业化的模式运作。

社会化:简单重复的小规模CA认证中心不可能满足社会化服务的要求。需要尽快建立实力雄厚、运作规范、具有权威性的的大型以中心。

国际化:要求国内的以中心与国际性的CA公司进行交叉认证,以满足全球范围20 第三章 NFC手机支付分析和改进

内日益增长的移动电子商务与手机支付的需求。

3.4 本章小结

本章对NFC手机支付进行了分析,通过了比较传统的手机支付和本文所介绍的新型支付,并对新型支付也进行了安全技术的改进,主要介绍了WPKI加密技术,并对WPKI加密技术进行了改进。21 华南理工大学工程硕士学位论文

第四章Android NFC手机支付实现

4.1 NFC手机支付设计目标

使用Android NFC手机、NFC识别设备、服务器,通过NFC tag的读取和写入功能实现手机的支付交易。

设计环境:Android 系统:4.0;智能手机:带NFC功能的手机;NFC识别设备:带NFC的POS机;服务器:带NFC接收块的服务提供商;网络:2G/3G无线网络。

NFC手机支付设计的架构图:如图4-1所示

图4-1 NFC手机支付架构图

NFC手机支付业务【14】的总体框架采用常见的C/S架构,即客户端和服务器端,通常采用多个客户端和单个服务器端的模式。其中客户端为带有NFC功能的Android智能手机,通过手机中的应用程序apk对支付模式与通讯方式进行配置;对个人信息、银行帐号采用上面所讲改进的WPKI加密技术等进行设置,并结合有效的证书发放、管理与审核,确保用户的手机支付、账户配置的可靠性与有效性,同时保证信息安全。

22 第四章Android NFC手机支付实现

4.2 NFC在Android系统中的调用

图4-2 Android NFC获取数据流程图

工作流程是支持NFC功能的手机或其他电子终端(后面简称手机)在用户开启NFC功能的时候,如果手机内置的NFC扫描器(相当于类NfcAdapter的功能)扫描到电子标签后,Tags分很多种【15】,简单的tags只提供读写段,有的只能读。复杂的tags可以

23 华南理工大学工程硕士学位论文

支持一些运算,加密来控制对tags里数据段的读写。甚至一些tags上有简单的操作系统,允许一些复杂的交互,可以执行一些代码。就会向相关用户程序发送ACTION_TAG_DISCOVERED的Intent,Intent的 extras架构中会包含NDEF(NFC Data

Exchange Format)消息。如何处理此NDEF消息,就是用户程序的事情了。

NFC的API在的包中提供,这个包提供三个大类,其中:NfcAdapter描述的就是手机中的NFC硬件,Android 2.3中可以暂时理解为电子标签扫描器。电子标签和扫描器中的消息通过NdefMessage来表示,这个类很简单,只是封装了NdefRecord。每个NdefMessage中可以包含多个NdefRecord,通过类NdefMessage的方法getRecords() 可以查询到消息的所有NdefRecord。NdefRecord才是信息的真正载体。

4.2.1 Android NFC 代码类

package包含顶层类,用来与本地NFC适配器交互. 这些类可以表示被检测到的tags和用NDEF数据格式如下表:

表4-3 tags和用NDEF数据格式

CLASS

DESCRIPTION

一个NFC adapter的管理器,可以列出所有此android设备支持的NFC adapter.只不过大部分android 设备只有一个NFC adapter,所以你大部分情况下可以直接用静态方法 getDefaultAdapter(context)来取适配器。

表示本设备的NFC adapter,可以定义Intent来请求将系统检测到tags的提醒发送到你的Activity.并提供方法去注册前台tag提醒发布和前台NDEF推送。 前台NDEF推送是当前android版本唯一支持的p2p NFC通信方式。

NDEF是NFC论坛定义的数据结构,用来有效的存数据到NFC tags.比如文本,URL,和其他MIME类型。一个NdefMessage扮演一个容器,这个容器存哪些发送和读到的数据。一个NdefMessage对象包含0或多个NdefRecord,每个NDEF record有一个类型,比如文本,URL,智慧型海报/广告,或其他MIMENDEFMessage里的第一个NfcRecord的类型用来发送tag到一个android设备上的activity.

NfcManager

NfcAdapter

NdefMessage and

NdefRecord

24 第四章Android NFC手机支付实现

Tag

标示一个被动的NFC目标,比如tag,card,钥匙挂扣,甚至是一个电话模拟的的NFC卡当一个tag被检测到,一个tag对象将被创建并且封装到一个Intent里,然后NFC 发布系统将这个Intent用startActivity发送到注册了接受这种Intent的activity里。你可以用getTechList()方法来得到这个tag支持的技术细节和创建一个提供的相应的TagTechnology对象。

4.2.2 NFC功能实现

相关的类代码有:NfcAdapter,NdefMessage, NdefRecord,ACTION_TAG_DISCOVERED。在功能层面上,涉及到了NFC的读写功能。在代码层上面我们总结如下:

1. 使用的时候,需要在里面加一些权限以及属性。

在Android Version 9的时候仅仅支持了ACTION_TAG_DISCOVERED,对于其他的需要10以上。

2. 在上面的基础上,还需要增加intent-filter的支持。

3. 获取NfcAdapter的代码为

NfcAdapter nfcAdapter = aultAdapter();

4. 继承并实现接口CreateNdefMessageCallback方法createNdefMessage

检测是否有NFC适配器Check for available NFC Adapter

注册回调函数Register callback

回调函数,构造NdefMessage格式

得到是否检测到ACTION_NDEF_DISCOVERED触发

Check to see that the Activity started due to an Android Beam

重载Activity类方法处理当新Intent到来事件

关键处理函数,处理扫描到的NdefMessage,void processIntent(Intent intent) {

25 华南理工大学工程硕士学位论文

textView = (TextView) findViewById(ew);

Parcelable[] rawMsgs = celableArrayExtra(

_NDEF_MESSAGES);

// only one message sent during the beam

NdefMessage msg = (NdefMessage) rawMsgs[0];

// record 0 contains the MIME type, record 1 is the AAR, if present

t(new String(ords()[0].getPayload()));

}

public NdefRecord createMimeRecord(String mimeType, byte[] payload) {

byte[] mimeBytes = es(e("US-ASCII"));

NdefRecord mimeRecord = new NdefRecord(

_MIME_MEDIA, mimeBytes, new byte[0], payload);

return mimeRecord;

}

}

5. 在文件里面添加

6. 在对NFC设备进行写操作的时候,相关代码:

private void enableTagWriteMode() {

mWriteMode = true;IntentFilter tagDetected = new

IntentFilter(_TAG_DISCOVERED);

mWriteTagFilters = new IntentFilter[] { tagDetected };

ForegroundDispatch(this, mNfcPendingIntent, mWriteTagFilters, null);

}

@Override

protected void onNewIntent(Intent intent) {

// Tag writing mode

if (mWriteMode &&

_TAG_(ion())) {

26 第四章Android NFC手机支付实现

Tag detectedTag = celableExtra(_TAG);

if (ag(ceidAsNdef(placeidToWrite), detectedTag)) {

xt(this, "Success: Wrote placeid to nfc tag", _LONG)

.show();

otify(this);

} else {

xt(this, "Write failed", _LONG).show();

}

}

}

public static boolean writeTag(NdefMessage message, Tag tag) {

int size = Array().length;

try {

Ndef ndef = (tag);

if (ndef != null) {

t();

if (!able()) {

return false;

}

if (Size() < size) {

return false;

}

defMessage(message);

return true;

} else {

NdefFormatable format = (tag);

if (format != null) {

try {

t();

(message);

return true;

} catch (IOException e) {

return false;

}

27 华南理工大学工程硕士学位论文

} else {

return false;

}

}

} catch (Exception e) {

return false;

}

}

7. 相关的文件配置如下:

4.3 NFC手机支付界面的实现

NFC手机支付项目的应用界面设计采用统一的风格,力求简洁明了的展现手机支付程序的基本功能,从而提高用户体验。程序主界面如图4-3所示:

图4-3 NFC支付界面图

28 第四章Android NFC手机支付实现

进入手机支付界面,打开NFC模块,等待通信,如图4-4所示:

图4-4 支付状态-等待连接

NFC通信连接成功,进行密码验证,如图4-5所示:

图4-5 支付状态-密码输入

密码正确,交易完成,如图4-6所示:

图4-6 交易完成

29 华南理工大学工程硕士学位论文

在应用个性化设置中,用户可以自行进行账户设置、网络和无线的网络连接模式设置、NFC 通信设置和NFC通信测试等项目。程序中提供了NFC通信测试功能,更有效的确保了NFC通信的准确性和完整性,如图4-7所示:

图4-7 应用个人化界面图

4.4 Android 元素的声明

在你能访问一个设备的 NFC 硬件和正确的处理 NFC 的 Intent 之前,需要在

中先声明下面的项:

使用 元素来访问 NFC 硬件 :

= >

2.最小 SDK 版本需要设置正确, API level 9 只包含有限的 tag 支持 , 包括:通过

ACTION_TAG_DISCOVERED 来发布 Tag 信息只有通过

EXTRA_NDEF_MESSAGES 扩展来访问 NDEF 消息 其他的 tag 属性和 I/O 操作都不支持 所以你可能想要用 API level 10 来实现对 tag 的广泛的读写支持。

-feature 元素定义:你的程序可以在 android 市场里显示有 NFC 硬件。

intent filter 告诉 android 系统你的 activity 能处理 NFC 数据,可以定义 1 个或多个 intent filter :

30 第四章Android NFC手机支付实现

android:resource = “@xml/nfc_tech_filter .xml” />

4.5 Tag 的发布

当Android设备扫描到一个NFC tag,一般的行为是自动找出会处理这个tag Intent的最合适的Activity,而不需要用户来选择用哪个Activity来处理。因为设备扫描NFC tag的范围和时间都很短,如果让用户选择,就有可能需要移动设备,这样将会打断这个扫描过程。应该开发只处理需要处理的tags的Activity,防止出现让用户选择使用哪个Activity来处理的情况【16】。Android提供两个系统来正确的识别一个NFC tag是否是Activity想要处理的:

Intent发布系统。

前台发布系统。

Intent发布系统检查所有Activity的intent filters,找出那些定义了可以处理此tag的Activity,如果有多个Activity都配置了处理同一个tag Intent,那么将使用Activity选择器来让用户选择使用哪个Activity。用户选择之后,将使用选择的Activity来处理此

Intent。

前台发布系统允许一个Activity覆盖掉Intent发布系统而首先处理此tag Intent,要求将要处理Tag Intent的Activity运行在前台,当一个NFC tag被扫描到时,系统会先检测前台的Activity是否支持处理此Intent,如果支持,即将此Intent传给此Activity,如果不支持, 则转到Intent发布系统。

31 华南理工大学工程硕士学位论文

4.5.1 Intent发布系统

Intent发布系统指定的3个intent有不同的优先级。通常当一个tag被检测到之后,Intent就被启动(start)了,这个启动遵循以下行为:

_DISCOVERED:

这个intent在一个包含NDEF负载的tag被检测到时启动,这是最高优先级的intent,

Android系统不会让一个Intent能处理所有的NFC数据类型,必须在中指定与NFC tag对应的元素,这样当扫描到的tag传过来的数据类型与定义的相匹配时,Activity就会被调用。例如想处理一个包含 plain text的NDEF_DISCOVERED

intent ,要按照如下定义:

如果NDEF_DISCOVERED intent已经被启动,TECH_DISCOVERED和TAG_DISCOVERED intent将不会被启动。假如一个未知的tag或者不包含NDEF负载的tag被检测到,此Intent不会被启动。

_DISCOVERED:

如果NDEF_DISCOVERED intent没启动或者没有一个Activity的filter检测NDEF_DISCOVERED ,并且此tag是已知的,那么此TECH_DISCOVERED Intent将会启动。TECH_DISCOVERED intent要求在一个资源文件里(xml)指定支持技术列表。

_DISCOVERED:

如果没有Activity处理 NDEF_DISCOVERED和TECH_DISCOVERED intents或者tag被检测为未知的,那么此Intent将会被启动。

指定可处理的类型

假如Activity在文件里声明了处理_DISCOVERED intent ,则必须创建一个Xml格式的资源文件,并加上Activity支持的技术到tech-list集合里。这样Activity将被认作能处理这些 tech-list的处理者,如果tag使用的技术在定义的列表里,Activity将接收此Intent。可以用getTechList()来获得 tag支持的技术。例如:如果一个tag被检测到支持MifareClassic,

NdefFormatable,和 NfcA,tech-list集合必须指定了其中的一项或者多项来告诉系统该32 第四章Android NFC手机支付实现

Activity能处理此Intent。

也可以指定多个tech-list集合【17】,每个集合都做独立的。如果任何单个tech-list集合是getTechList()返回的技术集合的子集, 那么该Activity将被认为匹配了。

4.5.2使用前台发布系统

前台发布系统允许一个Activity拦截tag Intent 获得最高优先级的处理,这种方式可以用下面的方法实现:

1. 添加代码到Activity的onCreate() 方法里

创建一个PendingIntent对象, 这样Android系统就能在一个tag被检测到时定位到这个对象。

PendingIntent pendingIntent =

PendingIntent .getActivity(this,0, new Intent(this,getClass())

.addFlags(_ACTIVITY_SINGLE_TOP), 0);

在Intent filters里声明想要处理的Intent,一个tag被检测到时检查前台发布系统,如果前台Activity符合Intent filter的要求,那么前台的Activity将处理此Intent。如果不符合,前台发布系统将Intent转到Intent发布系统。如果指定了 null的Intent

filters,当任意tag被检测到时【18】,将收到TAG_DISCOVERED intent。因此请注意应该只处理想要的Intent。

IntentFilter ndef = new IntentFilter(_NDEF_DISCOVERED);

try {

aType(“*/*”);

}catch(MalformedMimeTypeException e) {

throw new RuntimeException(“fail”, e);

}

intentFiltersArray = new IntentFilter[]{ndef,};

设置程序要处理的Tag 技术的列表,调用e()方法来获得想要支持处理的技术类。

techListsArray = new String[][]{new String[]{e()}};

2. 覆盖onPause()和onResume()方法来打开或关闭前台发布系统。必须在主线程里调用

enableForegroundDispatch(Activity, PendingIntent, IntentFilter[], String[][]), 而且Activity需在前台(可以在onResume()里调用来保证这点)。还要覆盖onNewIntent33 华南理工大学工程硕士学位论文

回调来处理得到的NFC tag数据。

4.5.3 NFC tag数据的使用

NFC tag上的数据以字节存放,可以将其转换成其他想要的格式。当往tag写东西时,必须以字节格式来写。Android提供API来写符合NDEF标准的信息,使用此标准能保证数据在往tag写时能被所有Android NFC设备支持。

很多tag使用他们自己的标准来存储数据,这些标准也被Android支持。但必须自己实现协议栈来读写这些tag。可以在里找到所有支持的技术,并且可以在TagTechnology接口里对该技术有个简单了解。

为了方便使用NDEF消息,Android用NdefRecord和NdefMessage包装原始字节数据为NDEF消息。一个NdefMessage 是保存0个或多个NdefRecords的容器,每个NdefRecord有自己的唯一类型名字格式,记录类型和ID来与其他记录区分开。可以存储不同类 型,不同的长度的记录到同一个NdefMessage。NFC tag容量的限制决定NdefMessage的大小。

支持Ndef和NdefFormatable技术的tag可以返回和接受NdefMessage对象为参数来进行读写操作。需要创建自己的逻辑来为其他在的tag技术实现读写字节的操作【19】。

1. 读NFC tag

当NFC tag靠近NFC设备时,相应的Intent将在设备上被创建。然后通知合适的程序来处理此Intent。下面的方法可以处理TAG_DISCOVERED intent并且使用迭代器来获得包含在NDEF tag负载中的数据。

NdefMessage[] getNdefMessages(Intent intent) {

// 解析 the intent

NdefMessage[] msgs = null;

String action = ion();

if (_TAG_(action)) { Parcelable[]

rawMsgs = celableArrayExtra(_NDEF_MESSAGES);

if (rawMsgs != null) {

msgs = new NdefMessage[];

for (int i = 0; i < ; i++) {

msgs[i] = (NdefMessage) rawMsgs[i];

34 第四章Android NFC手机支付实现

}

}

else {

// 不识别 tag type

byte[] empty = new byte[] {};

NdefRecord record = new NdefRecord(_UNKNOWN,

empty, empty, empty);

NdefMessage msg = new NdefMessage(new NdefRecord[] {record});

msgs = new NdefMessage[] {msg};

}

}

else {

Log.e(TAG, “Unknown intent “ + intent);

finish();

}

return msgs;

}

注意NFC设备读到的数据是byte类型,所以可能需要将他转成其他格式来呈现给用户。NFC Demo例子展示了怎样用中的类来解析NDEF消息,比如纯文本和智能海报[20]。

2. 写NFC tag

往NFC tag写东西涉及到构造一个NDEF消息和使用与tag匹配的Tag技术。可通过下面的代码写一个简单的文本到NdefFormatable tag:

NdefFormatable tag = (t);

Locale locale = ;

final byte[] langBytes = guage().getBytes(_ASCII);

String text = “Tag, you're it!”;

final byte[] textBytes = es(_8);

final int utfBit = 0;

final char status = (char) (utfBit + );

final byte[] data = (new byte[] {(byte) status}, langBytes, textBytes);

35 华南理工大学工程硕士学位论文

NdefRecord record = NdefRecord(_WELL_KNOWN,

_TEXT, new byte[0], data);

try {

NdefRecord[] records = {text};

NdefMessage message = new NdefMessage(records);

t();

(message);

}

catch (Exception e){

//do error handling

}

4.5.4点对点数据交换

前台推送技术支持简单点对点的数据交换,可以用

enableForegroundNdefPush(Activity, NdefMessage)方法来打开此功能。

使用此功能需要满足以下条件:

推送数据的Activity必须是前台Activity。

必须将要发送的数据封装到NdefMessage对象里。

接收推送数据的设备必须支持 NDEF推送协议,这对于Android设备是可选的。

假如Activity打开了前台推送功能并且位于前台,这时标准的Intent发布系统是禁止的。然而,如果Activity允许前台发布系统,那么此时检测tag的功能仍然是可用的,不过只适用于前台发布系统【20】。

要打开前台推送需要:

创建一个要推送给其他NFC设备的包含NdefRecords的NdefMessage。

在Activity里覆盖onResume()和onPause()的回调来正确处理前台推送的生命周期。必须在Activity位于前台并在主线程里用enableForegroundNdefPush(Activity, NdefMessage) ,(可以在onResume()里调用来保证这点)。当Activity位于前台,可以靠近另外一个NFC设备来推送数据。

36 第四章Android NFC手机支付实现

4.6 测试与结论

NFC手机支付项目的测试过程大致分为以下几个阶段:

单元测试:对于各个重要模块进行单元测试,独立测试程序中的各个重要模块,从而验证其正确性。单元测试是用于判断某个特定场景下某个特定函数的行为。实践中,单元测试往能第一时间接测到bug。比如:作为电子阅读器到各喜士多便利店测试。

集成测试:将NFC手机支付项目中各个模块按照设计要求组装成子系统或系统,从而进行集成测试。集成测试的特点在于能很好的察觉出一些在某些局部反映不出来的问题,而在全局上可能暴露出来,影响功能的实现。这些问题往往能够在单独的模块中正常工作,从而通过单元测试,但并不能保成连接起来也能正常运行。在项目测试过程中,集成测试所检测出的代表性问题有:NFC模块与通信模块的数据传输、交互问题。

系统测试/场景测试:系统测试将已经确认的支付软件、手机硬件模块、模拟PoS机及服务器等元素结合在了一起,进行功能性的确认性测试、系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。

由于实际条件的限制,手机支付系统无法获得完整的配套测试环境,因此将对相关设备、场景,如手持POS机,银行服务器,网络等进行模拟,力求获得更为接近真实的测试结果。

37 华南理工大学工程硕士学位论文

第五章 NFC手机支付应用

5.1 NFC应用

NFC手机支付应用被寄予厚望,但在手机NFC技术的实际应用当中,除了HTC与中国银联开展了NFC手机支付之外,现实生活中的应用似乎显得非常少。实际上,手机NFC技术正在悄然走来,近来在手机支付、手机与多媒体无线连接、手机与手机之间的互通应用等方面已经开始崭露头角。主推NFC手机的诺基亚还与街旁网等LBS网站合作,在手机签到、与商家合作[21]等方式开展合作。未来一旦应用需求打开,NFC手机应用有望蓬勃发展。其应用总结如下:

1. 手机多媒体无线连接

通过手机,可以操控支持NFC功能的Play 360°蓝牙音箱,也可以连接支持NFC功能的蓝牙耳机。NFC手机不仅可以控制音乐的播放与暂停,同时还可以控制播放的音量。这看起来有点像手机连接很多家庭影院适用的蓝牙音箱、WiFi无线音箱。实际上,NFC也是一种无线传输方式,通过NFC可以实现同样的无线传输功能。手机与多媒体设备之间的配对变得更加简单。跟蓝牙技术相比,NFC技术不需要预先寻找配对信息,轻轻触屏便可完成配对。

如果全部采用NFC技术,常规的耳机、音箱等都可以与支持NFC技术的手机相配对[22],直接播放手机当中的图片、音频、视频等多媒体娱乐信息。

2. 手机互通游戏通关

《愤怒的小鸟》是很知名的游戏,但是通关对于很多“菜鸟”玩家而言有一定的难度。Magic版的《愤怒的小鸟》,如果想打没有解锁的一关,其实可以用NFC手机来帮忙完成:在NFC功能打开之后,两台NFC手机触碰,隐藏的关卡可以解开。

这实际上是NFC技术在手机游戏上的一种应用。通过NFC无线传输的方式,手机可以联机打游戏,体验“独乐乐”不如“众乐乐”的共享效果。

3. NFC应用到LBS服务

手机签到是目前LSB地理定位服务【23】当中最为热门的服务之一,尤其是跟商家的合作,实现了通过手机打折等促销应用。诺基亚与街旁合作,通过NFC手机签到。在支持NFC的地方用手机一扫,就可以进入该地签到的页面,在手机上实现LBS功能。

通过NFC扫描指定地方的Tag,除了签到之外,还可以利用手机获得应用软件下载、购物优惠券等信息。图片上传、商家促销都可以实现。

38 第五章 NFC手机支付应用

4. 手机支付购物

手机支付是NFC技术中最为常用的一种。这种支付可以在手机与POS机之间完成,也可以通过手机跟手机的非接触式支付“对碰”一下,就可以支付成功。

目前,VISA和Master两大卡组织已经采用了统一的非接触式支付标准。韩国的运营商SK电讯推出了名为MONETA的手机支付,移动用户只要将具有信用卡功能的手机智能卡安装到手机上,就可以在商场用手机进行结算,无须携带专门的信用【24】卡。日本的NTT DOCOMO移动运营商也推出了基于非接触IC智能芯片的FELICA业务。近期,NTT DOCOMO还出资收购了一家信用卡公司,计划在手机中整合完整的信用卡支付功能。

在国内,基于NFC标准的手机支付业务在央行、银联以及运营商的联合推动下,已经进入推广阶段。

在广州,“刷手机”到各“七·十一便利店”、“喜士多”买东西。

5. “刷手机”乘交通工具

“刷手机”坐车已经不是新鲜事。在广州,中国移动曾经搞过手机地铁票,中国电信则跟羊城通公司合作发行“天翼羊城通”业务。不过,这些方式采取的是RFID射频无线传输的方式。

NFC近距离通信技术,也可以用同样的方式支付车船票。比如在诺基亚的老家芬兰,赫尔辛基的地铁乘客【25】,通过NFC技术刷手机通过手机购票乘坐地铁等交通工具,芬兰国家铁路局在全国推广电子火车票。法国戛纳的居民也可以利用NFC芯片的移动电话,在NFC终端机前轻松扫过,完成付款。

5.2本章小结

本章通过对NFC功能应用进行了总结,而支付功能主要体现在购物支付和作为点子票证这项使用,在国内,NFC标准的手机支付业务在央行、银联以及运营商的联合推动下,已经进入推广阶段。未来这项新型技术将得到更加广泛的应用。而在点子票证方面,主要通过NFC技术实现手机购票乘坐地铁等交通工具。39 华南理工大学工程硕士学位论文

总结与展望

本文完成的主要工作

一、 本文介绍了Android平台NFC支付的相关理论:对NFC支付和Android系统属性等概念进行了阐述,主要针对论文的重点对Android NFC支付的工作原理和实现机制进行了详细的介绍。

二、 对NFC手机支付进行了分析和改进:主要目前手机支付现状和需求进行的分析,通过对传统手机支付和新型手机支付的比较发现了当前手机支付存在的问题,针对当前手机支付的问题对手机支付进行了改进,主要引进了WPKI加密技术。

三、 通过以上各章节的铺垫,对Android平台NFC手机支付实现进行了设计:

设计目标

使用的NFC代码类

NFC的功能实现

手机支付界面的设计

各元素的声明

Tag的发布

四、 最后对项目设计进行了测试

五、 主要介绍了NFC的应用和在支付方面的应用。

本文的创新点

将新兴的、基于近场通讯(NFC)手机支付技术与Android系统结合,通过国内消费者习惯的支付流程以及相对成熟的WPKI加密技术,形成比较适合国内消费群体的基于Android的NFC手机支付系统,力争为手机支付在国内的推广做出一定的贡献。

手机支付项目的不足之处

基于NFC技术手机支付系统目前尚存在一些缺陷与不足之处,主要表现在以下几个方面:

一、 支持NFC技术的交易终端还远未普及【26】。首先,手机通信还没有实现全覆盖,而且,尽管使用集成NFC功能的手机十分便利,但目前市场上绝大部分手机都不支持这种功能。Google宣布在Android系统V2.3及以上版本全面兼容NFC,随后推出的新款Android手机中将大部分自带NFC模块;此外黑莓也在尝试将NFC推广40 总结与展望

至其商务手机上;Nokia很早就在尝试NFC技术,当迟迟未普及;最意外的是一向以科技时尚为卖点的苹果公司,始终未将NFC技术引入其手机系列中。由于考虑到增加NFC功能导致智能手机成本价格的上升,手机厂商在推出NFC智能手机时肯定会瞻前顾后。事实上,NFC智能手机是否能够大量上市,在全球范围内普及尚属未知。这必然会制约NFC手机支付的应用。

二、 众所周知,信用卡消费离不开刷卡机的支持,NFC手机支付也离不开兼容设备的支持,要在商场中用手机购物,商场就必须购置大量带有感应芯片的设备。需要增加巨大的工作量与成本应该由谁来承担?这就存在着不确定性。相信零售机构和移动运营商都不会轻易承担这笔开支,而且,终端兼容设备的研发与推广也要花费可观的成本,这也是影响NFC手机支付应用的关键因素之一。

三、 与传统支付方式相比,目前的手机支付的成本要高得多,因为银行会对手机支付业务收取手续费,移动运营商也要收取服务费和通信费【27】。这也是现阶段制约手机支付普及的主要原因,当然,用户使用NFC智能手机支付消费费用可以省去通信费,但银行的手续费和运营商的服务费是绝对无法避免的。手机支付业务应用的趋势是越来越贴近大众的日常生活需求,一般大众消费:支付电话费、水、电、煤气、有线电视费以及到商店购物等,用户如果按照传统的方式支付的话就不需要额外的支出,而使用NFC支付用户还得更换新的具备NFC功能的智能手机才能使用该业务,因此用户是否接受手机支付方式尚待质疑。

四、 目前NFC的具体实现方式有多种,在我国具体将倾向于哪一种,现在趋势并不明朗,鉴于3G网络实施的多种网络并存的模式【28】,不排除NFC也会产生多种模式并存的形态。其中存在手机运营商与银行机构的博弈和利益分配问题,目前国内推广NFC比较成功的是银联,可行性较高,有很好的市场前景。

五、 “手机钱包”、“电话支付”等服务的运营现实表明,决定市场发展前景的并不单单是技术,而是要受到支付终端、使用习惯、配套设施、覆盖网络等多因素的共同影响。NFC手机支付项目也不例外,上述任一个环节的缺陷,都会影响整个项目的实施,作为一个方兴未艾的新事物,其成功与否不仅取决于技术上的革新,更取决于消费者是否接受这种消费方式。

41

2023年12月7日发(作者:娄绿)

摘要

近年来随着现代通讯技术的进步,手机的功能与普及度高速的成长,手机的广泛使用使手机电子钱包功能被大量应用。NFC就是其应用之一, NFC 提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容从而实现支付。

近场通信技术是一种以磁场感应为基础的短距离无线通讯技术, Android NFC手机支付不但需要智能手机提供硬件支持,还需要强大稳定的软件平台支持。Google的Android v2.3软件平台系统为NFC手机支付所需的软件系统的开发提供有益帮助,将新兴的NFC通信技术与日渐成熟的谷歌Android软件开发平台相结合,设计、开发出一种高效、便捷、易于推广的手机操作系统与手机支付模式,对NFC手机支付项目是至关重要的。其中,确保手机支付安全性所需的加密软件可以在目前相对成熟的WPKI技术的基础上开发。

NFC手机支付项目采用多客户端和单服务器端的框架。客户端和服务器端之间的通讯是在建立握手协议的基础上,利用Android平台开发tag的发布、读写软件,服务端对客户端的请求进行密码核实,在客户端作再次确认后,完成一个完整的手机支付流程。整个项目的实现过程中,程序测试工作也同步进行,力求减少修复所需的时间和技术成本,确保项目满足设计需求。Android NFC手机支付的应用体现在多方面,在票务和付款使用较多。

关键词:Android; NFC;手机支付;实现;应用

I 目录

Abstract

In recent years,with the modern advance communication technology,mobile phone

features and the high speed growth for popularity,making promotion opportunities for early

e-wallet. NFC is one of its applications, NFC provides a simple,touch-sensitive solution,lets

consumers straightforward exchange of information, access to content and services.

Near-field communication technology is a form of short-distance wireless

communication technology based on the magnetic field induction, Android provides hardware

support NFC mobile payment needs not only a smart phone, also need to be strong and stable

software platform support. Google Android v2.3 software necessary for the NFC mobile

payment platform system software system developed to provide useful help, maturing and

emerging NFC communication technology combined with the Google Android software

development platform, design, developing an efficient, convenient, easy to promote mobile

phone operating system and mobile phone payments, NFC mobile payments is crucial.

Among them, the encryption software required to ensure the security of mobile payment can

now relatively mature based on WPKI technology development.

NFC mobile payment project uses a client-side and server-side framework.

Communication between a client and a server-side is based on handshake agreements, using

tag publishing, reading and writing software for Android platform, server password to

authenticate requests on the client, the client again after confirmation, finish a complete

mobile payment process. In the process of realization of the entire project, synchronized

program, seeks to reduce the time and costs required to repair, ensure that the project meets

the design requirements. Android NFC mobile payment applications are reflected in various

aspects, in ticketing and payment using more.

Key words: Android; NFC; mobile payments; implementation; applicationsII

目录

摘要 ........................................................................................................................................... II

Abstract ..................................................................................................................................... II

第一章 绪论 .............................................................................................................................. 1

1.1研究背景和意义 ........................................................................................................... 1

1.1.1研究背景 ............................................................................................................. 1

1.1.2 研究意义 ............................................................................................................ 2

1.2国内外的研究现状 ....................................................................................................... 2

1.2.1国外的研究现状 ................................................................................................. 2

1.2.2国内研究现状 ..................................................................................................... 3

1.3论文的主要工作 ........................................................................................................... 4

1.4论文的内容组织安排 ................................................................................................... 4

第二章 Android NFC支付的相关理论基础 ........................................................................... 5

2.1 Android NFC支付的理论基础 .................................................................................... 5

2.1.1什么是NFC支付 ............................................................................................... 5

2.1.2 NFC芯片结构图 ................................................................................................ 5

2.1.3 Android 系统属性 .............................................................................................. 6

2.1.4 Android应用原理 ............................................................................................... 7

2.1.5 Android NFC支付工作原理 .............................................................................. 9

2.1.6 Android NFC支付实现机制 ............................................................................ 10

2.1.7 NFC支付优势 .................................................................................................. 11

2.2 本章小结 .................................................................................................................... 12

第三章 NFC手机支付分析和改进 ....................................................................................... 13

3.1 手机支付需求分析 .................................................................................................... 13

3.2手机支付的改进 ......................................................................................................... 16

3.2.1传统手机支付 ................................................................................................... 16

3.2.2新型的手机支付 ............................................................................................... 17

3.3 NFC手机支付安全技术 ............................................................................................ 18

3.3.1 WPKI安全技术 ................................................................................................ 18

III 目录

3.3.2 WPKI技术的改进 ............................................................................................ 20

3.4 本章小结 .................................................................................................................... 21

第四章Android NFC手机支付实现 ...................................................................................... 22

4.1 NFC手机支付设计目标 ............................................................................................ 22

4.2 NFC在Android系统中的调用 ................................................................................. 23

4.2.1 Android NFC代码类 ........................................................................................ 24

4.2.2 NFC功能实现 .................................................................................................. 25

4.3 NFC手机支付界面的实现 ........................................................................................ 28

4.4 Android 元素的声明 ............................................................................ 30

4.5 Tag 的发布 ................................................................................................................. 31

4.5.1 Intent发布系统 ................................................................................................. 32

4.5.2使用前台发布系统 ........................................................................................... 33

4.5.3 NFC tag数据的使用 ........................................................................................ 34

4.5.4点对点数据交换 ............................................................................................... 36

4.6 测试与结论 ................................................................................................................ 37

第五章 NFC手机支付应用 ................................................................................................... 38

5.1 NFC应用 .................................................................................................................... 38

5.2本章小结 ..................................................................................................................... 39

总结与展望 .............................................................................................................................. 40

本文完成的主要工作 ....................................................................................................... 40

本文的创新点 ................................................................................................................... 40

手机支付项目的不足之处 ............................................................................................... 40

参考文献: .............................................................................................................................. 42

致 谢 ...................................................................................................................................... 44

IV 第一章 绪论

第一章 绪论

1.1研究背景和意义

1.1.1研究背景

NFC近场通信技术最近炒得火热,很多新出的智能手机、甚至平板电脑都会搭配NFC功能。据市场调查机构Berg Insight(瑞典)最新的全球NFC设备年度销量报告,2011年搭载NFC的手机出货量翻了10倍,达到3000万部,这个数字在接下来几年中还会翻番。如图1-1所示

图1-1 NFC手机销量图

当前,金融服务已渗入国民经济与人们日常生活的方方面面,金融交易与支付的频率随着之呈飞跃式增长,将金融支付与移动互联网融合无疑是巨大的商机,手机支付的普遍应用还将在金融服务业引起革命性的变革,它将在很大程度上改变人们使用许多电子设备的方式,甚至改变使用信用卡、钥匙和现金的方式。

在手机支付众多的技术方案中,基于近场通信技术(NFC)的手机支付方案具有明显的竞争力,使用带NFC芯片的手机,人们可以在任何时间、任何地点,通过识别的设备,与他们希望得到的服务与交易联系在一起,完成付款并获得相关信息。一些研究机构预测,2011年全球基于移动电话的非接触式支付额将超过360亿美元,NFC手机支付也因此而备受关注。

基于NFC技术的手机支付需要强有力的软件支持,Google公司于2007年推出的Android软件开发平台,允许开发者开发出丰富的移动应用程序,为NFC手机支付技术1 华南理工大学工程硕士学位论文

的开发和推广提供了良好的条件。Android平台是由Linux Java构成的。它的架构和工作原理决定了Android平台下的软件具有良好的可移植性,Android是开源系统,能够有效降低软件的成本,让每个用户能够自由的获取信息。Android提供了一个从操作系统到应用程序的完整的层次结构,同时又允许人们定制差异性软件,以便形成自己独特的竞争优势。作为开源软件,Android的另一个优点是允许厂商自主解决问题。这就为不同厂商在开发其Android产品时加入NFC技术提供了前提条件。

1.1.2 研究意义

NFC手机支付实现旨在模拟实际手机支付场景,通过Android系统与智能手机所自带的NFC模块的结合,实现点对点,端到端的手机支付模式。实现设计通过拟引入双卡模式,手机SIM卡与NFC支付卡单独成卡,靠系统层调用,实现NFC支付。项目的整体架构以现有的支付结构为基础,结合NFC模块的自身特性作相应的调整,并通过Android软件平台进行推广,目前这一方案已受到国内外市场的普遍关注。

手机支付对经济、社会的益处是多方面的:对于银行,手机支付丰富了其交易渠道,还能增加银行的中间业务收入,实现本身利益的最大化。对于移动运营商,手机支付是增加ARPU值的有效方法,通过网络资源增值效益。对于商家,手机支付意味着高效率和低成本。对于最终用户,手机支付最主要价值便是生活的便利,手机便是信用卡,交通卡,同时又兼具电子标签阅读器的功能。手机支付是金融行业信息化的全新的银行业务支付手段,可以刺激用户产生消费需求,并为移动运营商带来数据流量,促进其他移动互联网业务的发展。NFC手机支付的带来了如此的经济效益,这强劲的增长势头也催生了移动信用卡读卡器的迅猛发展,支付市场潜力十分巨大,其产业链包括芯片企业、设备制造商、银行、移动运营商、服务提供商等,其中核心问题是安全性及支付相关技术。一旦支付技术和安全性技术问题能够得到很好的解决,将推动这个新兴行业快速发展,实现金融行业的移动信息化,产生巨大的经济和社会效益。

1.2国内外的研究现状

1.2.1国外的研究现状

NFC在2004年3月18日开始发展,已在北美、欧洲、亚洲的日本、韩国等都有测试点,而在日本,NFC已成手机支付主流标准,其NF C手机支付产业处于国际领先水平。日本是NFC手机支付的领头羊,运营商通过收购银行的方式解决了”两虎斗”的局面,并主导整个产业的发展。韩国的手机支付运营较为成功,韩国S K电信、 KTF、2 第一章 绪论

LG电信等运营商的手机支付服务由韩国最大的手机支付提供商和移动内容提供商DANAL提供。无线结算服务已是 S K 电信、KT F、L G电信这3家最大的移动运营商的重要业务之一【1】。把手机当作信用卡、公共交通工具车票在韩国已颇为流行。欧洲NF C手机支付2006年起步,2007年开始实验 型 推广。Orange和Cofinoga在法国是先行者:JCB、Rabobank、Orange等在荷兰是主导方。在德国诺基亚、飞利浦、 沃达丰是主要推动者。NFC技术在德国哈瑙市最先投入商用,如Nokia3220手机被用作电子车票。2008年2月德国联邦铁路、沃达丰和德国电信联合发起的 “轻松旅游”项目使旅游者能通过手机支付代替传统的车票来乘坐公共交通工具。上下车时,用户使用具备

NF C功能的手机在车载读卡器前刷一下,后台处理器即会根据用户登记的 资料来计算行程的价格,并显示在用户的手机上。在该项目中,电子票务方案以NF C技术 为基础,电子装置在几厘米距离内进行数据的无线传输,票务信息在手机的SIM卡中被安全存储。

1.2.2国内研究现状

2006年6月,诺基亚和中国移动、飞利浦、易通卡公司在厦门启动了中国首个NFC手机支付试验,用户使用内嵌NFC模块的诺基亚3220手机,可在厦门市任何一个易通卡覆盖的营业网点(公交汽车、轮渡、电影院、快餐店)进行手机支付。2007年NFC在中国大陆可谓是”应用启动”之年,从8月开始,内置NFC芯片的诺基亚6131i在包括北京、厦门、广州在内的数个城市公开发售。这款手机预下载了一项可以在市政交通系统2007年NFC在中国大陆可谓是”应用启动”之年,从8月开始,内置NFC芯片的诺基亚6131i在包括北京、厦门、广州在内的数个城市公开发售。这款手机预下载了一项可以在市政交通系统。而中国目前还没设置测试点。而目前中国的手机的NFC功能还不是很普及,挺多市民甚至还不知道手机的手机支付功能。本文研究对安卓平台下的NFC手机在中国的手机支付应用进行分析,推广NFC功能的应用。而在国内NFC手机支付发展缓慢,以移动运营商和银联为主的手机支付标准之争以及国内的金融环境让NFC手机支付难以推行。

智能型手机的蓬勃发展,让各式各样的应用得以在手机上实现。而众所期盼的行动付款应用,在Google将NFC功能内建于Android 2-3版作业平台后,也快速引爆市场商机,并吸引生态系统内的相关业者倾力展开布局,让智能型手机变身电子货币包的梦想越来越近。在长达4年多的推广后,手机行动付款应用终于将开枝散叶。尤其在Google3 华南理工大学工程硕士学位论文

于最新一代Android平台中原生支持近距离无线通信(NFC)功能,与北美三大移动电话营运商将合资建立行动付款服务系统,以及诺基亚(Nokia)等手机制造商全力支持下,手机内建NFC行动付款功能那已成为2011年智能型手机发展的热门趋势。

1.3论文的主要工作

本文首先分析了Android NFC 手机支付的研究背景、意义以及对该课题的研究现状。再次介绍了Android NFC支付的相关理论基础,把传统支付方式和新型的支付方式进行比较,找出目前手机支付存在的问题,并针对安全问题引进了WPKI加密技术。其次就Android NFC手机支付的实现做出一个设计方案,最后就Android NFC手机支付的应用进行了阐述。

1.4论文的内容组织安排

首先介绍了Android平台NFC手机支付的实现与应用研究的意义。从经济角度出发,这将是支付方式进入更加快捷的另一个时代。手机支付对经济、社会的益处是多方面:对于银行,手机支付是增加ARPU值的有效方法,获得网络资源增值效益;对于商家,手机支付意味着高效率和低成本;对于最终用户,手机支付最主要价值是为人们生活带来的便利。

再次介绍了Android平台NFC支付的相关理论基础。主要对Android NFC支付工作原理和实现机制进行了详细的介绍和说明,并对NFC技术优势进行了相关的阐述,为后续的Android NFC支付系统设计方案的提出扫除技术障碍。

其次对NFC手机支付的分析,把传统的手机支付和新型手机支付即NFC支付进行比较,找出目前手机支付的存在的问题,对存在的问题手机支付进行了改进。接着针对手机支付最重要的问题-安全问题进行了设计,使用改进的WPKI加加密技术确保支付的安全进行。

第四章,具体描述NFC手机支付设计的实现过程,首先提出总体设计方案,包括设计目标、支付界面的设计实现、手机支付的客户端与服务器端的通讯,并对NFC在Android系统中的分布与使用进行初步设计。

第五章,根据Android智能手机的各项功能,实现 NFC手机支付应用。以及对其应用进行了总结。

最后,本章对本文的总结与未来的展望的阐述。 说明了本文的创新点和手机支付项目的不足之处4 第二章 Android NFC支付的相关理论基础

第二章 Android NFC支付的相关理论基础

2.1 Android NFC支付的理论基础

2.1.1 什么是NFC支付

NFC全称Near Field Communication,近距离无线通信。是由飞利浦公司发起,由诺基亚、索尼等著名厂商联合主推的一项无线技术。由多家公司、大学和用户共同成立了泛欧联盟,旨在开发NFC的开放式架构,并推动其在手机中的应用。

NFC由非接触式射频识别(RFID)及互联互通技术整合演变而来的,在单一芯片上结合了感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换[2]。这项技术最初只是RFID和网络技术的简单合并,现在已经演变成一种短距离无线通信技术,发展态势相当迅速。

NFC支付就是根据NFC的技术原理,能在短距离内与兼容设备进行识别和数据交换,NFC手机能够使用NFC技术与兼容NFC支付设备进行数字支付。使用带NFC芯片的手机同时使用专用的SIM卡,你就可以把手机当成公交卡、银行卡或者网上银行终端来使用。

2.1.2 NFC芯片结构图

如图2-1-1是NFC硬件架构图。NFC功能的实现由两部分组成:NFC 模拟前端(NFC

图2-1NFC硬件结构图

5 华南理工大学工程硕士学位论文

Controller 与天线)和安全单元[3]。NFC模拟前端是由NFC控制器和NFC天线组成,二者通过接收NFC进场通信信号和对接收到的信号进行控制处理,实现数据的传输和交换。而安全单元则根据应用需求的不同,安全单元可以是SIM、SD、SAM或其它芯片。实际应用,根据手机支付对系统安全级别的要求采取相应的安全芯片连接。

2.1.3 Android 系统属性

Android是一种以Linux为基础的开放源代码操作系统,大达地降低软件的成本,主要使用于便携设备。Android操作系统最初由Andy Rubin开发,最初主要支持手机。Android中文名安卓、安致,是由Google开放手持设备联盟开发的,由Google于2008年9月23日正式发行,采用的C/C++底层编程语言开放源码,软件类型APK,主要支持ARM、MIPS、x86等平台。采用整块性核心(Linux)内核类型。该平台由操作系统、中间件、用户界面和应用软件组成。Android平台的特点:

Android平台具有两大特点,第一:它的开源形态和应用程序接口(API)开源形态决定了Android平台的可移植性。对手机而言,Android平台的可移植性是非常重要的。Android平台没有继承传统的模式,而是从操作系统做起独立研发了一整套新的平台,虽然Android选择采用了Linux内核,但其库群采用软件却和Linux完全不同,这主要是考虑到免费开放的需要,为此集中了所有可以自由使用的软件应用程序接口(API)影响应用软件的开发难度与普及性,尽管开发者单凭现成的经验难以熟练掌握Android平台,但其编程方式对初学者而言还是容易上手的。

2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年7月数据,Android占据全球智能手机操作系统市场59%的份额,中国市场占有率为76-7%,Android占据了如此大的市场份额,也促使了安卓应用的快速发展。

Android系统的开源性能为用户提供很多便利,系统的拓展性能好,只要有能力可以自己开发各种软件,还能提供一种市场盈利的有效途径,最震撼人心之处的是Android手机系统的开放性和服务免费。Android系统的开源和免费是它俘获众多厂商的法宝之一,获得厂商即获得市场份额。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有非常大的自由度,突破了iPhone等只能添加不多数的固定软件的6 第二章 Android NFC支付的相关理论基础

枷锁;同时与Windows Mobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近30%的成本。

2.1.4 Android应用原理

Android系统的目的是为了开发与创建性能优异的移动设备应用程序,以充分发挥手持设备能够提供的全部优点。Android有另一优点就是允许开发者创造出丰富的移动应用程序,而使用者只需要根据自己的喜好对所需的应用软件进行安装,就可以直接使用该应用。那么下面我们看看Android应用的使用原理:Android系统架构。

Android系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层【4】,图2-2所示。

图2-2 Android 系统结构图

1. 应用程序框架

开发人员也可以访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

2. Android API

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又7 华南理工大学工程硕士学位论文

无需访问源码,或理解内部工作机制的细节。API除了有应用”应用程序接口”的意思外,还特指 API的说明文档,也称为帮助文档。API 分为四种类型: 远程过程调用(RPC);标准查询语言(SQL);文件传输;信息交付。Android适用于各种各样的手机,从最低端直到最高端的智能手机。核心的Android API在每部手机上都可使用,但仍然有一些API接口有一些特别的适用范围:这就是所谓的“可选API”。

这些API之所以是“可选的”,主要是因为一个手持设备并不一定要完全支持这类API,甚至于完全不支持。例如,一个手持设备可能没有GPS或WI-FI的硬件。在这个条件下,这类功能的API还存在,但不会以相同的方式来工作。

3. 应用包(apk)运行原理

Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。Android应用程序会通过一个工具将应用所有的CLASS文件转换成一个DEX文件,而后Dalvik虚拟机会从其中读取指令和数据。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行,这个系统发布后非常方便用户的需求。每一个Android 应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。这样Android平台能实现资源利用最大化。

Android应用程序使用系统API,是完全的Java程序,它包含了代码、工程、文件以及各种资源,应用程序都被编译成Android系统的应用程序包,就是apk文件,一般情况下,Android系统中的应用程序分为以下四个部分:

(1)活动(Activity)

活动是Android应用程序中最基本的组件,通常每个用户界面都是一个活动,每个活动作为一个独立类,从活动基类(Activity)继承,它显示由视图空间组成的用户接口,并对相应的事件做出响应,大部分程序会有多个应用程序界面,多个对应的活动。

(2)广播接收器(Broadcast Receivers)

广播接收器主要是让应用程序响应来自外部的事件,可能是系统发的事件,也可能是其他应用程序发的事件。

(3)服务(Service)

服务是具有较长生命周期却没有用户界面的程序,举个例子,在后台播放的音乐。

(4)内容提供者(Content provider)

8 第二章 Android NFC支付的相关理论基础

应用程序可以将它们在运行过程中的数据保存到数据库或者文件中,当其他程序需要访问该程序的数据时,内容提供者就发挥作用了。它实现了一组方法可以让其他应用读取和保存该内容提供者处理的各种各样数据类型。

Android应用程序包含在一个单一的文件夹,有如下文件:

,自动化编译文件,系统开发时用到。

,工程配置文件,里面定义了程序的各个组件,经过打包工具aaPt打包成二进制格式的,内容不变。

java源代码,使用SUNJDK将Java源代码编译成Java字节码(许多的后缀名为class的文件),接着通过Android的工具软件dex把class文件变成dex文件。

资源文件,包含图片文件、xml文件、字符串文件等,经过aaPt处理成二进制文件,其中图片等文件内容不变,最后将这些组成部分打包成一个apk包,再进行签名就可以使用。

Android系统平台对智能手机应用程序和第三方应用程序不加区分,对所有其他应用程序也一视同仁所有应用程序都可以平等地共享资源,共同向用户提供形式多样。内容广泛的应用和服务项目使用基于Android系统平台的移动设备,用户可以按照自己的兴趣与意愿而设定手机,他们也可以随意的更换自己的手机屏幕与按键风格,甚至可以让手机使用特定的图片浏览程序、用特定的方式浏览图片。

2.1.5 Android NFC支付工作原理

NFC将芯片直接安装在Android平台的手机上,这样的Android智能化手机就具备了进行小额电子支付和读取其他NFC设备的标签信息的功能【5】。

在Android的应用设计中,采用的是恩智浦半导体(NXP Semiconductors) 推出的PN544芯片,该芯片是符合业界标准的NFC控制器,同时符合欧洲电信标准协会(ETSI)

制定的最新NFC规范,能够为手机制造商和电信营运商提供完全兼容的平台,用以推广NFC设备和服务。PN544芯片可应用于手机,为用户提供一系列崭新的非接触式应用, 如手机支付、交通和大型活动票务以及直接从手机SIM (用户识别模块) 卡进行资料共享等,进而改善用户的使用体验。PN544的其他主要优势包括:物理面积小,易于实现尺寸设计优化;低功耗优化;可选断电和低电压工作模式;主机基带MIFARE

1K/4K读写功能;可选模块化通用软件堆栈,不受平台限制;优化天线设计,实现最佳9 华南理工大学工程硕士学位论文

射频性能。因此,Android平台采用该芯片作为NFC控制器从而实现NFC支付是最佳选择。

Android平台NFC支付就是通过Android智能手机中的近场通讯模块实现端到端的NFC手机支付,NFC手机支付采用双卡模式,依靠系统层调用手机中相互独立的SIM卡与NFC卡,实现NFC的手机支付。

2.1.6 Android NFC支付实现机制

Android NFC支付实现机制主要通过NFC的两种工作模式来实现的,Android 平台NFC的设备可以在主动或被动模式下交换数据。在被动模式下,启动NFC通信的设备,也称为NFC发起设备(主设备),在整个通信过程中提供射频场(RF-field),它可以选择106kbps、212kbps或424kbps其中一种传输速度【6】,将数据发送到另一台设备。另一台设备称为NFC目标设备(从设备),不必产生射频场,而使用负载调制(load modulation)技术,即可以相同的速度将数据传回发起设备。此通信机制与基于ISO14443A、MIFARE和FELICA的非接触式智能卡兼容,因此,NFC发起设备在被动模式下,可以用相同的连接和初始化过程检测非接触式智能卡或NFC目标设备,并与之建立联系。

图2-3 NFC主动模式

在主动模式下,每台设备要向另一台设备发送数据时,都必须产生自己的射频场。如图2-3所示,发起设备和目标设备都要产生自己的射频场,以便进行通信。这是对等网络通信的标准模式,可以获得非常快速的连接设置。如图2-4所示,移动设备主要以被动10 第二章 Android NFC支付的相关理论基础

模式操作,可以大幅降低功耗,并延长电池寿命。在一个应用会话过程中,NFC设备可以在发起设备和目标设备之间切换自己的角色。利用这项功能,电池电量较低的设备可以要求以被动模式充当目标设备,而不是发起设备。

图2-4 NFC被动模式

2.1.7 NFC支付优势

NFC 优势与RFID不同的是,NFC具有双向连接和识别的特点,工作在13.56MHz频率范围,作用距离10厘米左右。可实现传输速率106kbit/s、212kbit/s、424kbit/s,并自动在106kbit/s、212kbit/s、424kbit/s三个传输速度之间切换。理想速率可以达到1Mbit/s(目前为424kbit/s)。NFC技术在ISO18092、ECMA 340和ETSITS102和190框架下推动标准化,同时也兼容应用广泛的ISO14443Type—A、B以及FELICA标准非接触式智能卡的基础架构。NFC手机支付所具有的明显优势主要表现在以下方面::

1. NFC手机支付综合了遥控识别技术和网络技术的精华,通过移动终端将本地网和移动网络连接【7】。与传统识别方式相比,NFC的遥控识别技术在不需要直接接触,不要求光学可视及人工干预的情况下,即可完成信息输入和处理的全过程,具有操作简易、方便、快捷的特点。

2. NFC能够快速、自动地建立无线网络,可以为蜂窝设备,蓝牙设备,WIFI设备等提供一个虚拟连接,在无需特别配置的情况下,使这些电子设备能在巧厘米的距离内相互链接。因此具备较高的冷安全性,由于NFC技术实现了手机和信11 华南理工大学工程硕士学位论文

用卡之间近距离的点对点连接,当支付行为发生时,信用卡密码等绝密数据无需长距离传输,避免了开放式系统中可能出现的安全隐患,使手机支付更加安全可靠。

3. 具有NFC芯片的智能手机,在防盗功能方面比目前使用的一卡通更加安全,用户可以在需要刷卡时开启刷卡功能并设定密码,而在使用结束后关闭刷卡功能。万一手机丢失,只要有设定密码,卡内的余额就不会被窃取,从而保证了个人账户的安全【8】。

4. 不仅如此,用户还可以用手机完成查询余额、账户充值、读取交易记录等操作,并通过手机内的WAP站点,查询相关的商户信息和商品信息等。

目前,手机支付业务所需的功能基本都能够实现,在新兴的移动应用项目中,手机支付是最受用户欢迎的项目之一,据称有八成以上的消费者希望将公交卡、银行卡等支付工具集成到手机上。随着手机支付业务的推广普及,它将成为手机应用服务的另一个快速增长点。

2.2 本章小结

本章对Android平台NFC支付的相关理论进行了介绍和说明,主要介绍了NFC支付的概念,NFC芯片结构图,Android系统属性,Android的应用原理,并对Android NFC支付工作原理和支付实现机制进行详细的说明,最后,针对NFC支付对NFC支付技术优势进行了介绍。

12 第三章 NFC手机支付分析和改进

第三章 NFC手机支付分析和改进

3.1 手机支付需求分析

手机支付是指通过将银行卡信息存储至手机中的芯片(可以为SD卡、贴膜卡或SIM卡等方式),利用手机的无线通信技术和射频技术实现支付的新型支付产品。

3G网络和智能手机的日益普及,为以移动互联网为基础的电子支付创造了有利条件,手机支付在电子支付体系中占据的市场份额越来越大。随着移动互联网的不断扩张,人们正逐步将其在互联网上的行为习惯转移到移动互联网,这就为手机支付提供了源源不断的需求。手机比PC机更贴近个人用户、移动互联网的接入比互联网更加随时随地,因此移动互联网可以承载不同于互联网的新的应用,从而为手机支付创造的更大的发展空间。

根据手机支付所涉及的交易额度,可以将手机支付分为微支付和宏支付,简称微付和宏付。但是两者之间并没有统一的规定界限。微付包含游戏、视频下载等网络内容服务以及交停车费等近距离支付所涉及的小额支付业务;宏付则主要指在线购物、在线缴费等涉及金额较大的近距离支付业务。由于所涉及的交易额度不同, 微付和宏付所要求安全级别不同: 宏付必须通过可靠的金融机构进行交易权鉴定以确保交易安全;而微付使用移动网络本身的SIM卡交易权鉴定机制就可以确保交易安全。欧盟将手机支付划分为【9】:

 微付:支付金额低于2欧元;

 小额支付:支付金额介于2—25欧元之间;

 大额(宏)支付:支付金额在25欧元以上。

目前,手机支付业务在发达国家,特别是日本、韩国获得了大规模应用,而在我国尚处于起步阶段。由于各国的实际情况不同,产业链主导者也不同,因此,存在着不同的商业运营模式【10】。

(1)运营商为主体模式。该模式主要通过运营商来推动整个手机支付产业链的发展。移动运营商以用户的手机话费账户或专门的小额账户作为手机支付账户,用户所发生的手机支付交易费用全部从用户账户中扣减。如日本移动运营商NTT DOCOMO推广的I-mode FELICA手机电子钱包服务,用户将IC卡插入手机就可以进行购物。I-mode

FELICA使用的IC卡中安装了电子交易软件,用户拥有一个账户,可以购买电子货币充值。进行交易时费用直接从用户的电子账户中扣,整个支付过程无需金融机构参与。

13 华南理工大学工程硕士学位论文

这种模式的特点是移动运营商直接与用户联系,不需要银行参与,技术成本较低。问题在于移动运营商参与金融交易,需要承担部分金融机构的责任和风险,如果没有3/4经营资质,将与国家的金融政策发生抵触。

(2)银行为主体的模式。在这种模式中,各银行通过与移动运营商建立专线等通信线路,自建计费与认证系统,为用户手机换置STK卡。 银行需要为用户手机将SIM卡换为STK卡,用户在手机上直接登录所在银行的账户,进行手机支付交易。该模式产生的费用主要有三部分:一是数据流量的费用,是由移动运营商收取;二是账户业务的费用,是由银行收取;三是支付业务的服务费用,由银行、运营商、支付平台分成。

这种模式的典型案例是中国工商银行推出的手机银行业务。工商银行的用户使用手机直接登录或发送特定格式的短信到银行的特服号码,银行按照客户的指令可以为客户办理查询、转账以及缴费等业务。

该模式的特点是各个银行只可以为本行的用户提供手机银行服务,不同银行之间不能互通;特定的手机终端和STK卡换置也会造成用户成本的上升;移动运营商只负责提供信息通道,不参与支付过程。

(3)第三方支付服务提供商为主体的模式。该模式中,第三方支付服务提供商是独立于银行和移动运营商之外的经济实体,通过自己拓展用户,与银行及移动运营商合作,手机提供支付业务。目前,该模式最成功的案例有瑞典的Pay Box公司在欧洲推出的手机支付系统。用户如果想使用该服务,需要去服务提供商处注册账号,并与自己的手机绑定。在购买商品后进行费用支付时,给商家提供用户的手机号码。商家向Pay Box提出询问,在用户确认后完成支付。第三方支付服务提供商的收益主要来自两个部分:一是向运营商、银行和商户收取设备和技术使用许可费用;二是与移动运营商以及银行就用户业务使用费进行分成。

这种模式的特点是:第三方支付服务提供商可以平衡移动运营商和银行之间的关系;不同银行之间的手机支付业务得到了互联互通;银行、移动运营商、支付服务提供商以及SP之间的责、权、利明确,关系简单;对第三方支付服务提供商的技术能力、市场能力、资金运作能力要求很高。

通过对目前手机支付的现状比较,各自为营的支付运营模式都有各自的特点。以第三方交易平台为支撑的手机支付业务具有分工明确、责任到位特点,在银行、移动运营商、平台运营商以及用户之间建立了紧密的联系,将多对多的关系转化为多对一的关系,有效地协调了各利益群体之间的关系,从而大大提高了手机支付的效率。

14 第三章 NFC手机支付分析和改进

第三方交易平台为用户提供了跨银行、跨移动运营商的多种选择,从而大大拓展了手机支付的应用范围,平台运营模式简化了个相关环节之间的关系,把处理各种错综复杂的关系的任务交由自己承担。在手机支付的产业链中,平台的价值日益凸显,平台之间的竞争将成为手机支付行业角逐的焦点。因此,手机支付服务提供商需要在市场推广能力、技术研发能力、资金运作能力等方面做出不懈的努力;在手机支付业务的产业链中,移动运营商、银行、手机支付服务提供商和商家等各环节都拥有各自的独特资源与核心利益,只有通过彼此协调才能建立起科学合理的运作模式才能推动手机支付业务各相关方之间实现和谐共赢。

不容置疑,在手机支付业务的三种运营模式中,以第三方手机支付服务提供商为运营主体的模式无疑是最具生命力的。它很可能最终成为手机支付业务的主要发展方向。眼下,第三方手机支付市场的竞争日趋激烈,各企业竞相与银行、移动运营商达成战略合作,扩大自身的资源优势。另一方面,整个市场仿佛成了大型支付企业比拼技术的竞技场,各种具有新的微支付功能的快捷支付产品不断推出。激烈的竞争加速推动着手机支付产业链的形成,这个新兴产业即将进入快速发展阶段。

15 华南理工大学工程硕士学位论文

3.2手机支付的改进

3.2.1传统手机支付

传统的手机支付大都是采用短信方式、WAP方式等进行,其注册流程如图3-1示

图 3-1 传统手机支付注册流程

16 第三章 NFC手机支付分析和改进

首先,用户需到官方网站注册,填写用户名和设定密码,通过邮箱或手机来验证账户信息是否正确,若用户更改手机的话,就重新填写手机号码信息,重新发送验证码来验证用户是否正确。

而传统手机进行小额支付时,需要通过频繁地发送短信来验证用户信息是否正确,通过验证后才能进行交易。如果用户需要频繁的进行小额支付时,传统的支付将会显得非常繁琐。

3.2.2新型的手机支付

如果进行小额支付,传统的支付方式必将被用户遗弃,但采用新型的NFC手机支付将会受到广大用户的欢迎,NFC手机支付技术相对于短信方式和WAP方式具有明显的优势。传统的支付以短信方式需要来回多次发送短信以确认交易,WAP方式需要在菜单上进行多次选择;而近场通讯(NFC)技术只需用手机靠近读卡设备就可以完成支付。其交易微支付时,NFC手机支付所具有的省时、省力、便捷的优势是短信方式和WAP方式无法匹及的,其发展前景是不可估量。流程如图3-2所示,在频繁进行微付时,才NFC支付无非是最便捷的交易方式。使用NFC设备支付时,只需把NFC手机靠近识别NFC的终端设备,通过握手交互【11】,

图3-2 NFC支付流程图

17 华南理工大学工程硕士学位论文

建立连接后只需身份验证就可以执行交易。

总之,不管是传统的手机支付方式还是新型的NFC支付方式,那种支付方式更适合消费用户的口味,就决定了那种支付方式的未来。

3.3 NFC手机支付安全技术

使用手机支付,首先用户最关心的是支付的安全性。任何手机支付的设计首先必需确保手机支付的安全性,手机支付与互联网银行一样,需要提供本人的银行账户并输入密码。这些私密信息显然绝对不能像目前移动运营商提供的手机短信那样全部用明码传输,必须首先加密。因此,安全可靠的加密系统就成为手机支付的安全风险的关键。

用户选择手机支付的前提是解除用户对账户安全的疑虑,任何差错都将导致整个手机支付系统的崩溃。

因此,手机支付必须建立在绝对可靠的加密技术的基础之上。目前国际上有关安全加密的研究主要是针对互联网的,针对移动互联网的安全技术与加密技术的研究与应用目前尚处于探索阶段,这就为NFC手机支付项目的顺利实施造成一定难度。

与互联网一样,移动互联网的安全性取决于四个相互交织的要素:保密、鉴别、抗否认和完整性控制。保密即保证受保护信息在存储和传输的过程中的机密性,杜绝未经授权者的入侵;鉴别是指在接触并处理敏感信息前必须先确认对方的身份;抗否认性要求能够保证信息发送方不能否认已发送的信息,从而确保电子签名有效性;完整性控制要求确保收到的信息是正确无误的原始数据,而非被第三者篡改或伪造过的虚假信息。满足这四大要素,才能确保手机支付的安全性,解除用户对账户安全的疑虑。

3.3.1 WPKI安全技术

WPKI(即无线公开密钥系统)将互联网中公开密钥系统(PKI)引入到移动互联网环境。为了满足在移动互联网进行手机支付过程中出现认证和加密的需求,WPKI技术即无线公开密钥体系应运而生,并逐渐在手机支付业务中得到实际应用。鉴于WPKI对于NFC手机支付重要性,以下先分析WPKI加密技术。

首先从公开密钥系统(PKI)说起,PKI是建立所谓公钥理论之上的信息安全服务系统,是国际公认的互联网电子商务的安全认证机制。它将现代密码学中的公钥密码理论用于在开放的互联网环境,提供数据加密以及电子签名服务,在保证互联网的安全性方面起了重要作用。在公开密钥系统(PKI)中,加密密钥与解密密钥是完全不同的。信息的发送者用接收者的公钥发出加密信息,接收者用自己的私钥解密。这种信息收发模式能18 第三章 NFC手机支付分析和改进

同时确保信息的机密性与身份认证的不可抵赖性。WPKI并不引入新的标准,而是沿用了PKI系统的标准密钥与证书管理平台。它采用了优化的ECC椭圆曲线加密技术和经过压缩的X.509数字证书,通过可以信任的第三方机构认证中心(CA)对用户的身份进行验证,以达到确保移动互联网信息安全的目的。

无线公开密钥系统(WPKI)的系统架构图如下:

图3-3 WPKI系统框架图

移动终端用户先在注册机构注册,然后向证书中心申请数字证书,证书中心在审核用户身份后,将证书与私钥输入用户的UIM卡,用户的数字证书与私钥用于保证端对端手机支付的安全,服务提供商则通过验证证书确定用户身份,完整的无线公开密钥系统(WPKI)【12】必须配备数字证书签发机关(CA)和数字证书库,必须具备密钥备份及恢复功能和证书作废功能,还应拥有相应的应用接口。其中,证书签发机关(CA)和数字证书库用于签发并存储的数字证书及公钥【13】,密钥备份及恢复功能在用户丢失密钥时用于提供备份与恢复密钥,证书作废功能用于用户身份变更,作为数字证书的签发机关应具有权威性,因为数字证书包含有证书持有者的相关信息。

当前无线公开密钥系统(WPKI)的主流体系有:由APFORUM开发的WAPPKI系统、日本NTT开发的MODE安全体系和美国PALM公司的安全体系。这些WPKI系统都具备自己独立的协议并已用于移动互联网的数据业务。国内对WPKI技术的研发也取得长足的进步。

19 华南理工大学工程硕士学位论文

由于WPKI加密技术在手机支付技术方面被广泛应用,但改加密技术还存在以下各方面的问题:

与互联网相比,移动互联网的处理能力弱、存储容量小。

适用于移动互联网的WPKI证书是互联网PKI证书的一个分支,二者缺乏互通。

移动互联网带宽成本高,时间延迟长,网络连接的可靠性比互联网低。

为了进一步扩大WPKI加密系统的应用范围,移动终端设计还不够完善。

由于数字签名还没有正式颁布的相关法律的保护,降低了人们对WPKI系统的信任度,不利于WPKI加密技术的推广和普及。

总之,WPKI正处于产品开发和市场培育的阶段,对WPK工加密技术及其应用的研究探索方兴未艾。虽然离真正的普及一段距离,但随着移动互联网的拓展,智能手机的普及和移动商务服务的多样化,WPKI加密系统的作为手机支付的保护神,会有更大的发展空间,其市场分额也会随着技术的进一步完善而不断拓展。

3.3.2 WPKI技术的改进

针对WPKI加密技术存在以上的一些问题,对WPKI做了进一步的改进。其改进如以下:

要求WPKI加密系统尽量少占用资源,降低处理难度。

需要加强WPKI标准与PKI标准的互通性。

针对网络连接可靠性低,因此WPKI加密系统的各项操作要求有较快的速度。

加强移动终端的设计,提供功能更强、更方便可靠的移动设备。

尽快推出数字签名相关法律,提高用户对WPKI系统的信任度。也有利于加密技术的推广和普及。

若对以上存在的问题进行了改进,则WPKI未来的发展趋向明朗。

标准化:为了更好地为手机支付用户服务,要求不同厂商、不同国家和不同地区的WPKI产品能够互连互通,并且能够进行互操作,因此它们应该支持相同的标准。使用相同的证书格式与接口规范等。

商业化:以认证是一种契约,更适合于商业化运作,以认证中心应逐步从政府中剥离出来,采用商业化的模式运作。

社会化:简单重复的小规模CA认证中心不可能满足社会化服务的要求。需要尽快建立实力雄厚、运作规范、具有权威性的的大型以中心。

国际化:要求国内的以中心与国际性的CA公司进行交叉认证,以满足全球范围20 第三章 NFC手机支付分析和改进

内日益增长的移动电子商务与手机支付的需求。

3.4 本章小结

本章对NFC手机支付进行了分析,通过了比较传统的手机支付和本文所介绍的新型支付,并对新型支付也进行了安全技术的改进,主要介绍了WPKI加密技术,并对WPKI加密技术进行了改进。21 华南理工大学工程硕士学位论文

第四章Android NFC手机支付实现

4.1 NFC手机支付设计目标

使用Android NFC手机、NFC识别设备、服务器,通过NFC tag的读取和写入功能实现手机的支付交易。

设计环境:Android 系统:4.0;智能手机:带NFC功能的手机;NFC识别设备:带NFC的POS机;服务器:带NFC接收块的服务提供商;网络:2G/3G无线网络。

NFC手机支付设计的架构图:如图4-1所示

图4-1 NFC手机支付架构图

NFC手机支付业务【14】的总体框架采用常见的C/S架构,即客户端和服务器端,通常采用多个客户端和单个服务器端的模式。其中客户端为带有NFC功能的Android智能手机,通过手机中的应用程序apk对支付模式与通讯方式进行配置;对个人信息、银行帐号采用上面所讲改进的WPKI加密技术等进行设置,并结合有效的证书发放、管理与审核,确保用户的手机支付、账户配置的可靠性与有效性,同时保证信息安全。

22 第四章Android NFC手机支付实现

4.2 NFC在Android系统中的调用

图4-2 Android NFC获取数据流程图

工作流程是支持NFC功能的手机或其他电子终端(后面简称手机)在用户开启NFC功能的时候,如果手机内置的NFC扫描器(相当于类NfcAdapter的功能)扫描到电子标签后,Tags分很多种【15】,简单的tags只提供读写段,有的只能读。复杂的tags可以

23 华南理工大学工程硕士学位论文

支持一些运算,加密来控制对tags里数据段的读写。甚至一些tags上有简单的操作系统,允许一些复杂的交互,可以执行一些代码。就会向相关用户程序发送ACTION_TAG_DISCOVERED的Intent,Intent的 extras架构中会包含NDEF(NFC Data

Exchange Format)消息。如何处理此NDEF消息,就是用户程序的事情了。

NFC的API在的包中提供,这个包提供三个大类,其中:NfcAdapter描述的就是手机中的NFC硬件,Android 2.3中可以暂时理解为电子标签扫描器。电子标签和扫描器中的消息通过NdefMessage来表示,这个类很简单,只是封装了NdefRecord。每个NdefMessage中可以包含多个NdefRecord,通过类NdefMessage的方法getRecords() 可以查询到消息的所有NdefRecord。NdefRecord才是信息的真正载体。

4.2.1 Android NFC 代码类

package包含顶层类,用来与本地NFC适配器交互. 这些类可以表示被检测到的tags和用NDEF数据格式如下表:

表4-3 tags和用NDEF数据格式

CLASS

DESCRIPTION

一个NFC adapter的管理器,可以列出所有此android设备支持的NFC adapter.只不过大部分android 设备只有一个NFC adapter,所以你大部分情况下可以直接用静态方法 getDefaultAdapter(context)来取适配器。

表示本设备的NFC adapter,可以定义Intent来请求将系统检测到tags的提醒发送到你的Activity.并提供方法去注册前台tag提醒发布和前台NDEF推送。 前台NDEF推送是当前android版本唯一支持的p2p NFC通信方式。

NDEF是NFC论坛定义的数据结构,用来有效的存数据到NFC tags.比如文本,URL,和其他MIME类型。一个NdefMessage扮演一个容器,这个容器存哪些发送和读到的数据。一个NdefMessage对象包含0或多个NdefRecord,每个NDEF record有一个类型,比如文本,URL,智慧型海报/广告,或其他MIMENDEFMessage里的第一个NfcRecord的类型用来发送tag到一个android设备上的activity.

NfcManager

NfcAdapter

NdefMessage and

NdefRecord

24 第四章Android NFC手机支付实现

Tag

标示一个被动的NFC目标,比如tag,card,钥匙挂扣,甚至是一个电话模拟的的NFC卡当一个tag被检测到,一个tag对象将被创建并且封装到一个Intent里,然后NFC 发布系统将这个Intent用startActivity发送到注册了接受这种Intent的activity里。你可以用getTechList()方法来得到这个tag支持的技术细节和创建一个提供的相应的TagTechnology对象。

4.2.2 NFC功能实现

相关的类代码有:NfcAdapter,NdefMessage, NdefRecord,ACTION_TAG_DISCOVERED。在功能层面上,涉及到了NFC的读写功能。在代码层上面我们总结如下:

1. 使用的时候,需要在里面加一些权限以及属性。

在Android Version 9的时候仅仅支持了ACTION_TAG_DISCOVERED,对于其他的需要10以上。

2. 在上面的基础上,还需要增加intent-filter的支持。

3. 获取NfcAdapter的代码为

NfcAdapter nfcAdapter = aultAdapter();

4. 继承并实现接口CreateNdefMessageCallback方法createNdefMessage

检测是否有NFC适配器Check for available NFC Adapter

注册回调函数Register callback

回调函数,构造NdefMessage格式

得到是否检测到ACTION_NDEF_DISCOVERED触发

Check to see that the Activity started due to an Android Beam

重载Activity类方法处理当新Intent到来事件

关键处理函数,处理扫描到的NdefMessage,void processIntent(Intent intent) {

25 华南理工大学工程硕士学位论文

textView = (TextView) findViewById(ew);

Parcelable[] rawMsgs = celableArrayExtra(

_NDEF_MESSAGES);

// only one message sent during the beam

NdefMessage msg = (NdefMessage) rawMsgs[0];

// record 0 contains the MIME type, record 1 is the AAR, if present

t(new String(ords()[0].getPayload()));

}

public NdefRecord createMimeRecord(String mimeType, byte[] payload) {

byte[] mimeBytes = es(e("US-ASCII"));

NdefRecord mimeRecord = new NdefRecord(

_MIME_MEDIA, mimeBytes, new byte[0], payload);

return mimeRecord;

}

}

5. 在文件里面添加

6. 在对NFC设备进行写操作的时候,相关代码:

private void enableTagWriteMode() {

mWriteMode = true;IntentFilter tagDetected = new

IntentFilter(_TAG_DISCOVERED);

mWriteTagFilters = new IntentFilter[] { tagDetected };

ForegroundDispatch(this, mNfcPendingIntent, mWriteTagFilters, null);

}

@Override

protected void onNewIntent(Intent intent) {

// Tag writing mode

if (mWriteMode &&

_TAG_(ion())) {

26 第四章Android NFC手机支付实现

Tag detectedTag = celableExtra(_TAG);

if (ag(ceidAsNdef(placeidToWrite), detectedTag)) {

xt(this, "Success: Wrote placeid to nfc tag", _LONG)

.show();

otify(this);

} else {

xt(this, "Write failed", _LONG).show();

}

}

}

public static boolean writeTag(NdefMessage message, Tag tag) {

int size = Array().length;

try {

Ndef ndef = (tag);

if (ndef != null) {

t();

if (!able()) {

return false;

}

if (Size() < size) {

return false;

}

defMessage(message);

return true;

} else {

NdefFormatable format = (tag);

if (format != null) {

try {

t();

(message);

return true;

} catch (IOException e) {

return false;

}

27 华南理工大学工程硕士学位论文

} else {

return false;

}

}

} catch (Exception e) {

return false;

}

}

7. 相关的文件配置如下:

4.3 NFC手机支付界面的实现

NFC手机支付项目的应用界面设计采用统一的风格,力求简洁明了的展现手机支付程序的基本功能,从而提高用户体验。程序主界面如图4-3所示:

图4-3 NFC支付界面图

28 第四章Android NFC手机支付实现

进入手机支付界面,打开NFC模块,等待通信,如图4-4所示:

图4-4 支付状态-等待连接

NFC通信连接成功,进行密码验证,如图4-5所示:

图4-5 支付状态-密码输入

密码正确,交易完成,如图4-6所示:

图4-6 交易完成

29 华南理工大学工程硕士学位论文

在应用个性化设置中,用户可以自行进行账户设置、网络和无线的网络连接模式设置、NFC 通信设置和NFC通信测试等项目。程序中提供了NFC通信测试功能,更有效的确保了NFC通信的准确性和完整性,如图4-7所示:

图4-7 应用个人化界面图

4.4 Android 元素的声明

在你能访问一个设备的 NFC 硬件和正确的处理 NFC 的 Intent 之前,需要在

中先声明下面的项:

使用 元素来访问 NFC 硬件 :

= >

2.最小 SDK 版本需要设置正确, API level 9 只包含有限的 tag 支持 , 包括:通过

ACTION_TAG_DISCOVERED 来发布 Tag 信息只有通过

EXTRA_NDEF_MESSAGES 扩展来访问 NDEF 消息 其他的 tag 属性和 I/O 操作都不支持 所以你可能想要用 API level 10 来实现对 tag 的广泛的读写支持。

-feature 元素定义:你的程序可以在 android 市场里显示有 NFC 硬件。

intent filter 告诉 android 系统你的 activity 能处理 NFC 数据,可以定义 1 个或多个 intent filter :

30 第四章Android NFC手机支付实现

android:resource = “@xml/nfc_tech_filter .xml” />

4.5 Tag 的发布

当Android设备扫描到一个NFC tag,一般的行为是自动找出会处理这个tag Intent的最合适的Activity,而不需要用户来选择用哪个Activity来处理。因为设备扫描NFC tag的范围和时间都很短,如果让用户选择,就有可能需要移动设备,这样将会打断这个扫描过程。应该开发只处理需要处理的tags的Activity,防止出现让用户选择使用哪个Activity来处理的情况【16】。Android提供两个系统来正确的识别一个NFC tag是否是Activity想要处理的:

Intent发布系统。

前台发布系统。

Intent发布系统检查所有Activity的intent filters,找出那些定义了可以处理此tag的Activity,如果有多个Activity都配置了处理同一个tag Intent,那么将使用Activity选择器来让用户选择使用哪个Activity。用户选择之后,将使用选择的Activity来处理此

Intent。

前台发布系统允许一个Activity覆盖掉Intent发布系统而首先处理此tag Intent,要求将要处理Tag Intent的Activity运行在前台,当一个NFC tag被扫描到时,系统会先检测前台的Activity是否支持处理此Intent,如果支持,即将此Intent传给此Activity,如果不支持, 则转到Intent发布系统。

31 华南理工大学工程硕士学位论文

4.5.1 Intent发布系统

Intent发布系统指定的3个intent有不同的优先级。通常当一个tag被检测到之后,Intent就被启动(start)了,这个启动遵循以下行为:

_DISCOVERED:

这个intent在一个包含NDEF负载的tag被检测到时启动,这是最高优先级的intent,

Android系统不会让一个Intent能处理所有的NFC数据类型,必须在中指定与NFC tag对应的元素,这样当扫描到的tag传过来的数据类型与定义的相匹配时,Activity就会被调用。例如想处理一个包含 plain text的NDEF_DISCOVERED

intent ,要按照如下定义:

如果NDEF_DISCOVERED intent已经被启动,TECH_DISCOVERED和TAG_DISCOVERED intent将不会被启动。假如一个未知的tag或者不包含NDEF负载的tag被检测到,此Intent不会被启动。

_DISCOVERED:

如果NDEF_DISCOVERED intent没启动或者没有一个Activity的filter检测NDEF_DISCOVERED ,并且此tag是已知的,那么此TECH_DISCOVERED Intent将会启动。TECH_DISCOVERED intent要求在一个资源文件里(xml)指定支持技术列表。

_DISCOVERED:

如果没有Activity处理 NDEF_DISCOVERED和TECH_DISCOVERED intents或者tag被检测为未知的,那么此Intent将会被启动。

指定可处理的类型

假如Activity在文件里声明了处理_DISCOVERED intent ,则必须创建一个Xml格式的资源文件,并加上Activity支持的技术到tech-list集合里。这样Activity将被认作能处理这些 tech-list的处理者,如果tag使用的技术在定义的列表里,Activity将接收此Intent。可以用getTechList()来获得 tag支持的技术。例如:如果一个tag被检测到支持MifareClassic,

NdefFormatable,和 NfcA,tech-list集合必须指定了其中的一项或者多项来告诉系统该32 第四章Android NFC手机支付实现

Activity能处理此Intent。

也可以指定多个tech-list集合【17】,每个集合都做独立的。如果任何单个tech-list集合是getTechList()返回的技术集合的子集, 那么该Activity将被认为匹配了。

4.5.2使用前台发布系统

前台发布系统允许一个Activity拦截tag Intent 获得最高优先级的处理,这种方式可以用下面的方法实现:

1. 添加代码到Activity的onCreate() 方法里

创建一个PendingIntent对象, 这样Android系统就能在一个tag被检测到时定位到这个对象。

PendingIntent pendingIntent =

PendingIntent .getActivity(this,0, new Intent(this,getClass())

.addFlags(_ACTIVITY_SINGLE_TOP), 0);

在Intent filters里声明想要处理的Intent,一个tag被检测到时检查前台发布系统,如果前台Activity符合Intent filter的要求,那么前台的Activity将处理此Intent。如果不符合,前台发布系统将Intent转到Intent发布系统。如果指定了 null的Intent

filters,当任意tag被检测到时【18】,将收到TAG_DISCOVERED intent。因此请注意应该只处理想要的Intent。

IntentFilter ndef = new IntentFilter(_NDEF_DISCOVERED);

try {

aType(“*/*”);

}catch(MalformedMimeTypeException e) {

throw new RuntimeException(“fail”, e);

}

intentFiltersArray = new IntentFilter[]{ndef,};

设置程序要处理的Tag 技术的列表,调用e()方法来获得想要支持处理的技术类。

techListsArray = new String[][]{new String[]{e()}};

2. 覆盖onPause()和onResume()方法来打开或关闭前台发布系统。必须在主线程里调用

enableForegroundDispatch(Activity, PendingIntent, IntentFilter[], String[][]), 而且Activity需在前台(可以在onResume()里调用来保证这点)。还要覆盖onNewIntent33 华南理工大学工程硕士学位论文

回调来处理得到的NFC tag数据。

4.5.3 NFC tag数据的使用

NFC tag上的数据以字节存放,可以将其转换成其他想要的格式。当往tag写东西时,必须以字节格式来写。Android提供API来写符合NDEF标准的信息,使用此标准能保证数据在往tag写时能被所有Android NFC设备支持。

很多tag使用他们自己的标准来存储数据,这些标准也被Android支持。但必须自己实现协议栈来读写这些tag。可以在里找到所有支持的技术,并且可以在TagTechnology接口里对该技术有个简单了解。

为了方便使用NDEF消息,Android用NdefRecord和NdefMessage包装原始字节数据为NDEF消息。一个NdefMessage 是保存0个或多个NdefRecords的容器,每个NdefRecord有自己的唯一类型名字格式,记录类型和ID来与其他记录区分开。可以存储不同类 型,不同的长度的记录到同一个NdefMessage。NFC tag容量的限制决定NdefMessage的大小。

支持Ndef和NdefFormatable技术的tag可以返回和接受NdefMessage对象为参数来进行读写操作。需要创建自己的逻辑来为其他在的tag技术实现读写字节的操作【19】。

1. 读NFC tag

当NFC tag靠近NFC设备时,相应的Intent将在设备上被创建。然后通知合适的程序来处理此Intent。下面的方法可以处理TAG_DISCOVERED intent并且使用迭代器来获得包含在NDEF tag负载中的数据。

NdefMessage[] getNdefMessages(Intent intent) {

// 解析 the intent

NdefMessage[] msgs = null;

String action = ion();

if (_TAG_(action)) { Parcelable[]

rawMsgs = celableArrayExtra(_NDEF_MESSAGES);

if (rawMsgs != null) {

msgs = new NdefMessage[];

for (int i = 0; i < ; i++) {

msgs[i] = (NdefMessage) rawMsgs[i];

34 第四章Android NFC手机支付实现

}

}

else {

// 不识别 tag type

byte[] empty = new byte[] {};

NdefRecord record = new NdefRecord(_UNKNOWN,

empty, empty, empty);

NdefMessage msg = new NdefMessage(new NdefRecord[] {record});

msgs = new NdefMessage[] {msg};

}

}

else {

Log.e(TAG, “Unknown intent “ + intent);

finish();

}

return msgs;

}

注意NFC设备读到的数据是byte类型,所以可能需要将他转成其他格式来呈现给用户。NFC Demo例子展示了怎样用中的类来解析NDEF消息,比如纯文本和智能海报[20]。

2. 写NFC tag

往NFC tag写东西涉及到构造一个NDEF消息和使用与tag匹配的Tag技术。可通过下面的代码写一个简单的文本到NdefFormatable tag:

NdefFormatable tag = (t);

Locale locale = ;

final byte[] langBytes = guage().getBytes(_ASCII);

String text = “Tag, you're it!”;

final byte[] textBytes = es(_8);

final int utfBit = 0;

final char status = (char) (utfBit + );

final byte[] data = (new byte[] {(byte) status}, langBytes, textBytes);

35 华南理工大学工程硕士学位论文

NdefRecord record = NdefRecord(_WELL_KNOWN,

_TEXT, new byte[0], data);

try {

NdefRecord[] records = {text};

NdefMessage message = new NdefMessage(records);

t();

(message);

}

catch (Exception e){

//do error handling

}

4.5.4点对点数据交换

前台推送技术支持简单点对点的数据交换,可以用

enableForegroundNdefPush(Activity, NdefMessage)方法来打开此功能。

使用此功能需要满足以下条件:

推送数据的Activity必须是前台Activity。

必须将要发送的数据封装到NdefMessage对象里。

接收推送数据的设备必须支持 NDEF推送协议,这对于Android设备是可选的。

假如Activity打开了前台推送功能并且位于前台,这时标准的Intent发布系统是禁止的。然而,如果Activity允许前台发布系统,那么此时检测tag的功能仍然是可用的,不过只适用于前台发布系统【20】。

要打开前台推送需要:

创建一个要推送给其他NFC设备的包含NdefRecords的NdefMessage。

在Activity里覆盖onResume()和onPause()的回调来正确处理前台推送的生命周期。必须在Activity位于前台并在主线程里用enableForegroundNdefPush(Activity, NdefMessage) ,(可以在onResume()里调用来保证这点)。当Activity位于前台,可以靠近另外一个NFC设备来推送数据。

36 第四章Android NFC手机支付实现

4.6 测试与结论

NFC手机支付项目的测试过程大致分为以下几个阶段:

单元测试:对于各个重要模块进行单元测试,独立测试程序中的各个重要模块,从而验证其正确性。单元测试是用于判断某个特定场景下某个特定函数的行为。实践中,单元测试往能第一时间接测到bug。比如:作为电子阅读器到各喜士多便利店测试。

集成测试:将NFC手机支付项目中各个模块按照设计要求组装成子系统或系统,从而进行集成测试。集成测试的特点在于能很好的察觉出一些在某些局部反映不出来的问题,而在全局上可能暴露出来,影响功能的实现。这些问题往往能够在单独的模块中正常工作,从而通过单元测试,但并不能保成连接起来也能正常运行。在项目测试过程中,集成测试所检测出的代表性问题有:NFC模块与通信模块的数据传输、交互问题。

系统测试/场景测试:系统测试将已经确认的支付软件、手机硬件模块、模拟PoS机及服务器等元素结合在了一起,进行功能性的确认性测试、系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。

由于实际条件的限制,手机支付系统无法获得完整的配套测试环境,因此将对相关设备、场景,如手持POS机,银行服务器,网络等进行模拟,力求获得更为接近真实的测试结果。

37 华南理工大学工程硕士学位论文

第五章 NFC手机支付应用

5.1 NFC应用

NFC手机支付应用被寄予厚望,但在手机NFC技术的实际应用当中,除了HTC与中国银联开展了NFC手机支付之外,现实生活中的应用似乎显得非常少。实际上,手机NFC技术正在悄然走来,近来在手机支付、手机与多媒体无线连接、手机与手机之间的互通应用等方面已经开始崭露头角。主推NFC手机的诺基亚还与街旁网等LBS网站合作,在手机签到、与商家合作[21]等方式开展合作。未来一旦应用需求打开,NFC手机应用有望蓬勃发展。其应用总结如下:

1. 手机多媒体无线连接

通过手机,可以操控支持NFC功能的Play 360°蓝牙音箱,也可以连接支持NFC功能的蓝牙耳机。NFC手机不仅可以控制音乐的播放与暂停,同时还可以控制播放的音量。这看起来有点像手机连接很多家庭影院适用的蓝牙音箱、WiFi无线音箱。实际上,NFC也是一种无线传输方式,通过NFC可以实现同样的无线传输功能。手机与多媒体设备之间的配对变得更加简单。跟蓝牙技术相比,NFC技术不需要预先寻找配对信息,轻轻触屏便可完成配对。

如果全部采用NFC技术,常规的耳机、音箱等都可以与支持NFC技术的手机相配对[22],直接播放手机当中的图片、音频、视频等多媒体娱乐信息。

2. 手机互通游戏通关

《愤怒的小鸟》是很知名的游戏,但是通关对于很多“菜鸟”玩家而言有一定的难度。Magic版的《愤怒的小鸟》,如果想打没有解锁的一关,其实可以用NFC手机来帮忙完成:在NFC功能打开之后,两台NFC手机触碰,隐藏的关卡可以解开。

这实际上是NFC技术在手机游戏上的一种应用。通过NFC无线传输的方式,手机可以联机打游戏,体验“独乐乐”不如“众乐乐”的共享效果。

3. NFC应用到LBS服务

手机签到是目前LSB地理定位服务【23】当中最为热门的服务之一,尤其是跟商家的合作,实现了通过手机打折等促销应用。诺基亚与街旁合作,通过NFC手机签到。在支持NFC的地方用手机一扫,就可以进入该地签到的页面,在手机上实现LBS功能。

通过NFC扫描指定地方的Tag,除了签到之外,还可以利用手机获得应用软件下载、购物优惠券等信息。图片上传、商家促销都可以实现。

38 第五章 NFC手机支付应用

4. 手机支付购物

手机支付是NFC技术中最为常用的一种。这种支付可以在手机与POS机之间完成,也可以通过手机跟手机的非接触式支付“对碰”一下,就可以支付成功。

目前,VISA和Master两大卡组织已经采用了统一的非接触式支付标准。韩国的运营商SK电讯推出了名为MONETA的手机支付,移动用户只要将具有信用卡功能的手机智能卡安装到手机上,就可以在商场用手机进行结算,无须携带专门的信用【24】卡。日本的NTT DOCOMO移动运营商也推出了基于非接触IC智能芯片的FELICA业务。近期,NTT DOCOMO还出资收购了一家信用卡公司,计划在手机中整合完整的信用卡支付功能。

在国内,基于NFC标准的手机支付业务在央行、银联以及运营商的联合推动下,已经进入推广阶段。

在广州,“刷手机”到各“七·十一便利店”、“喜士多”买东西。

5. “刷手机”乘交通工具

“刷手机”坐车已经不是新鲜事。在广州,中国移动曾经搞过手机地铁票,中国电信则跟羊城通公司合作发行“天翼羊城通”业务。不过,这些方式采取的是RFID射频无线传输的方式。

NFC近距离通信技术,也可以用同样的方式支付车船票。比如在诺基亚的老家芬兰,赫尔辛基的地铁乘客【25】,通过NFC技术刷手机通过手机购票乘坐地铁等交通工具,芬兰国家铁路局在全国推广电子火车票。法国戛纳的居民也可以利用NFC芯片的移动电话,在NFC终端机前轻松扫过,完成付款。

5.2本章小结

本章通过对NFC功能应用进行了总结,而支付功能主要体现在购物支付和作为点子票证这项使用,在国内,NFC标准的手机支付业务在央行、银联以及运营商的联合推动下,已经进入推广阶段。未来这项新型技术将得到更加广泛的应用。而在点子票证方面,主要通过NFC技术实现手机购票乘坐地铁等交通工具。39 华南理工大学工程硕士学位论文

总结与展望

本文完成的主要工作

一、 本文介绍了Android平台NFC支付的相关理论:对NFC支付和Android系统属性等概念进行了阐述,主要针对论文的重点对Android NFC支付的工作原理和实现机制进行了详细的介绍。

二、 对NFC手机支付进行了分析和改进:主要目前手机支付现状和需求进行的分析,通过对传统手机支付和新型手机支付的比较发现了当前手机支付存在的问题,针对当前手机支付的问题对手机支付进行了改进,主要引进了WPKI加密技术。

三、 通过以上各章节的铺垫,对Android平台NFC手机支付实现进行了设计:

设计目标

使用的NFC代码类

NFC的功能实现

手机支付界面的设计

各元素的声明

Tag的发布

四、 最后对项目设计进行了测试

五、 主要介绍了NFC的应用和在支付方面的应用。

本文的创新点

将新兴的、基于近场通讯(NFC)手机支付技术与Android系统结合,通过国内消费者习惯的支付流程以及相对成熟的WPKI加密技术,形成比较适合国内消费群体的基于Android的NFC手机支付系统,力争为手机支付在国内的推广做出一定的贡献。

手机支付项目的不足之处

基于NFC技术手机支付系统目前尚存在一些缺陷与不足之处,主要表现在以下几个方面:

一、 支持NFC技术的交易终端还远未普及【26】。首先,手机通信还没有实现全覆盖,而且,尽管使用集成NFC功能的手机十分便利,但目前市场上绝大部分手机都不支持这种功能。Google宣布在Android系统V2.3及以上版本全面兼容NFC,随后推出的新款Android手机中将大部分自带NFC模块;此外黑莓也在尝试将NFC推广40 总结与展望

至其商务手机上;Nokia很早就在尝试NFC技术,当迟迟未普及;最意外的是一向以科技时尚为卖点的苹果公司,始终未将NFC技术引入其手机系列中。由于考虑到增加NFC功能导致智能手机成本价格的上升,手机厂商在推出NFC智能手机时肯定会瞻前顾后。事实上,NFC智能手机是否能够大量上市,在全球范围内普及尚属未知。这必然会制约NFC手机支付的应用。

二、 众所周知,信用卡消费离不开刷卡机的支持,NFC手机支付也离不开兼容设备的支持,要在商场中用手机购物,商场就必须购置大量带有感应芯片的设备。需要增加巨大的工作量与成本应该由谁来承担?这就存在着不确定性。相信零售机构和移动运营商都不会轻易承担这笔开支,而且,终端兼容设备的研发与推广也要花费可观的成本,这也是影响NFC手机支付应用的关键因素之一。

三、 与传统支付方式相比,目前的手机支付的成本要高得多,因为银行会对手机支付业务收取手续费,移动运营商也要收取服务费和通信费【27】。这也是现阶段制约手机支付普及的主要原因,当然,用户使用NFC智能手机支付消费费用可以省去通信费,但银行的手续费和运营商的服务费是绝对无法避免的。手机支付业务应用的趋势是越来越贴近大众的日常生活需求,一般大众消费:支付电话费、水、电、煤气、有线电视费以及到商店购物等,用户如果按照传统的方式支付的话就不需要额外的支出,而使用NFC支付用户还得更换新的具备NFC功能的智能手机才能使用该业务,因此用户是否接受手机支付方式尚待质疑。

四、 目前NFC的具体实现方式有多种,在我国具体将倾向于哪一种,现在趋势并不明朗,鉴于3G网络实施的多种网络并存的模式【28】,不排除NFC也会产生多种模式并存的形态。其中存在手机运营商与银行机构的博弈和利益分配问题,目前国内推广NFC比较成功的是银联,可行性较高,有很好的市场前景。

五、 “手机钱包”、“电话支付”等服务的运营现实表明,决定市场发展前景的并不单单是技术,而是要受到支付终端、使用习惯、配套设施、覆盖网络等多因素的共同影响。NFC手机支付项目也不例外,上述任一个环节的缺陷,都会影响整个项目的实施,作为一个方兴未艾的新事物,其成功与否不仅取决于技术上的革新,更取决于消费者是否接受这种消费方式。

41

发布评论

评论列表 (0)

  1. 暂无评论