无忧支付网首页
站内搜索
您当前的位置:主页 > 相关文档 >

一款NFC技术下一卡通充值手机APP的开发

添加时间:2022-10-06

  随着智慧城市、智慧交通等战略的推进及智能卡技术的成熟和普及,各大中型城市一卡通系统处于快速建设状态,覆盖公共交通(支持公交、地铁等)、社保医疗等领域;越来越多的行业和大型企业也开始建立自己的行业、企业一卡通系统,以便更好地服务行业客户。

  各种城市一卡通、校园一卡通、高速一卡通等智能实体卡应运而生,通过各种渠道分发到用户手中,这些卡片大多具有储值功能,通常为采用PBOC标准的金融IC卡。为了方便用户充值,传统行业一般会提供一卡通柜面充值服务,但因线下渠道成本高、选点难等问题,导致线下充值点较少、排队人多,且不支持24小时服务,因此如何实现便捷的用户卡充值成为一个亟待解决的问题。

  近场通信(Near Field Communication,NFC)技术以其高安全性和高性能逐渐成为非接触通信的主流协议。随着Android智能机的不断发展,越来越多的手机具备NFC功能,如何利用手机NFC功能与PBOC标准实现与金融一卡通安全交互成为重要的研究方向。

  在此基础上,如能以NFC非接触技术作为媒介,通过远程支付功能实现实体卡充值,则用户无需前往线下充值点即可随时随地实现一卡通充值,这将极大提升用户充值效率、改进用户体验。

  1、技术方案介绍

  本文结合Android手机NFC技术与和包在线支付功能,开发一卡通充值手机客户端产品,可实现公交/地铁、ETC、校园等行业金融IC卡快速充值与能力融合,并通过建设能力开放平台,将各行业一卡通充值应用通过插件形式供给第三方产品使用,聚集合作方力量共同推动行业信息化发展,促进NFC手机终端销售,普及、完善业务生态。

  1. 整体实施方案

  为实现通过手机NFC功能为一卡通实体卡充值,客户端需要借助手机NFC等通信协议建立卡片信令交互通道,将从接口机获取的指令向卡片安全下发;能力开放平台侧一方面需要与行业一卡通计费系统接口实现信令交互,另一方面要与远程支付平台(本文以“和包”支付平台为例)实现支付功能对接。

  借助行业平台实现业务逻辑判断和两个平台信令衔接,完成用户卡片信息获取—用户和包支付金额—获取行业充值脚本—卡片金额写入等一系列流程,最终实现卡片充值。主要环节包括:

  (1)通过一卡通手机客户端调用Android NFC原生API,读取卡片相关信息,建立手机卡片连接通道。

  (2)平台通过与支付平台交互(中国移动支付平台为“和包”支付),建立在线支付订单,通过用户远程支付功能完成订单支付。

  (3)用户支付后,能力开放平台与行业一卡通计费系统交互,根据行业信令规范,获取该行业卡对应的鉴权和写入脚本。通过NFC向卡片下发GPO、GAC1、GAC2等PBOC标准信令,最终实现金额写入,并与行业系统确认充值结果。

  系统业务框架如图1所示。

手机为一卡通实体卡充值方案

图1 手机为一卡通实体卡充值方案

  2. Android客户端研发

  整体技术实现方案关键环节是以Android原生NFC功能为基础开发手机客户端。以手机NFC功能实现实体一卡通读写,需要在行业系统对接的基础上依据不同行业卡端PBOC规范实现情况决定交互信令,并将业务逻辑在客户端前后予以封装实现。

  客户端在此基础上持续完善用户交互体验和设计,为用户提供良好的使用体验。本部分重点介绍基于NFC模块的一卡通数据交互客户端功能特色。

  1)Android NFC模块与PBOC2.0金融卡交互流程

  目前各行业实体卡基本以PBOC2.0协议为主要标准,手机客户端可通过注册Android原声API的NFC模组响应事件,在用户将NFC实体卡贴于手机NFC感应区时唤起手机客户端处理模块,完成卡数据的读取、校验和指令下达,从而完成金融卡充值(圈存)功能。PBOC2.0金融卡圈存流程如图2所示。

PBOC2.0金融卡NFC圈存流程

图2 PBOC2.0金融卡NFC圈存流程

  与卡片及后台交互实现充值的详细步骤包括:

  (1)向卡发出选择卡片应用信息(select)指令,获取应用序列号(AID),并从卡片中获取PDOL列表,卡片通过该列表告诉客户端需要读取的初始化数据。

  (2)通过获取每行业一卡通圈存的特定数据定义,向卡发出应用初始化(GPO)指令,完成卡片初始化,使卡片可交易。卡片会返回AIP和AFL两个数据,AIP提供客户端卡片支持功能索引,AFL告知客户端若完成某笔交易,客户端应从卡上读取何种数据。AFL里包含了这些数据在卡片存储中的位置和名称。

  (3)向卡发出读数据(read record)指令,客户端读出AFL指定位置的所有数据,并保存到客户端运行时的环境中,供后续流程使用。

  (4)生成应用密文(GAC1)字段,客户端根据第(3)步中获取的8C参数模板数据,以用户输入的信息参数拼装密文,如将9F0206(9F02表示授权金额,06表示12位16进制数)、9A03(9A表示交易日期,03表示6位16进制数)等参数拼装生成应用密文;

  又比如GAC1可生成80AE80003400000000100000000000000001560000000000015615051263E0883767095916E6B885E7AE97E4B8ADE5BF830000000000000000,返回密文为:801E800002795F9A4FDC4B2CD207020103A02010010A0100000000003D15E5A09000。

  (5)根据卡端返回的密文,获取应用密文中的相应序列号字段和发行卡应用数据,调用用户和包支付进行支付扣款,获取扣款成功的通知后,系统将调用行业服务端接口,获取行业端的外部认证脚本(External Authentication)与实际写卡充值指令。

  (6)将获取的外部认证脚本发往卡端,卡片将验证行业一卡通服务端脚本并确认是否与卡端数据相匹配,从而确认是否能够信任后续写卡脚本。

  (7)验证通过后,根据步骤(5)返回的写卡脚本直接发往卡片执行。如果卡片返回充值成功,则调用服务端接口确认交易成功,实现交易信息同步;如果卡片返回充值失败,则调用冲正接口回滚用户已支付的和包支付交易。

  (8)生成GAC2指令告知卡片交易结束。至此,通过手机NFC模块读卡、充值的流程全部完成。

  所有行业一卡通的圈存均需实现上述基础流程,并以此为基础对客户端产品的交互和功能进一步优化设计。

  2)客户端特色功能和充值体验优化

  在APP试点中发现,用户手机与卡在NFC通信中若出现任何异常中断将导致交易失败,该异常情况占总体失败情况的70%以上。由于实体卡贴卡的正确性、稳定性受人为因素与环境因素影响较大,因此如何减少干扰环节、做好用户引导以提升NFC贴卡成功率是保证一卡通充值客户端质量非常重要的一环。

  另外,在充值失败后能够立即退回用户支付款项,并让用户知晓本次异常原因也是产品实现可持续运营能力的关键。

  在实践中,重点从以下方面优化客户端功能和体验。

  (1)一次贴卡模式。现有互联网NFC充值竞品客户端均需通过两次贴卡交互方能进行充值:第一次贴卡查询用户信息、第二次贴卡进行充值,第一次和第二次贴卡需要用户主动将卡片移开再贴上,因NFC贴卡有效距离仅有5cm,两次贴卡在实际使用中增加了用户操作难度,也使充值交易成功率大幅降低。

  在产品中采取一次贴卡的模式,自有客户端通过状态保持等优化操作,使卡片信息读取和充值仅需一次贴卡即可完成,既方便用户操作,也极大提高充值成功率。

  (2)面向普通用户和线下商户,提供多种快捷支付模式。通过分析普通用户和线下商户(线下便利店、移动特约办理点)的充值行为习惯,提供不同的支付模式。普通用户的支付账户一般绑定银行卡、不存现金,充值频率低,故针对其采用唤起支付插件的支付模式;线下商户由于代客充值,要求速度快、效率高,故采用短信验证码加无磁无密快捷支付模式。

  (3)聚合实现一卡通充值服务。以城市为单位,整合接入各行业一卡通充值功能,提供统一友好的操作界面。用户只需下载使用客户端,即可随时随地给自己或他人充值。

  (4)卡片欠费提醒功能。记录历史信息,实现卡片欠费提醒,结合客户端推送和短信方式通知用户。

  (5)充值、办卡、用卡等操作引导。与合作方深度对接,收集实体卡办理和使用过程中的注意事项并集中展现给用户。为用户提供办卡、充值、用卡全过程的贴心服务,提升用户体验。

  (6)充值异常即时退款。针对用户充值失败的情况,采用实时监控的方式对交易订单进行分析检查,立即识别用户充值失败场景,为用户即时退款。

  客户端UIUE设计示例如图3所示。

一卡通充值客户端界面

图3 一卡通充值客户端界面

  2、能力开放平台扩展

  通过开放平台模式,逐步增加资源整合能力。一方面强化行业一卡通充值能力的定制性和可扩展性,针对政企和聚类客户的定制需求,可快速接入和扩展各类一卡通充值功能。随着接入合作方的增加、经验持续积累,可形成功能接入规范,实现合作方模块化、标准化快速接入;

  另一方面,在各行业一卡通充值能力接入的基础上,将各行业一卡通充值应用(如校园卡充值、ETC充值、地铁公交充值)以插件的形式提供解决方案,并将其合并到合作方产品项目中,推动内外部合作方产品协同作用,提升自有支付业务影响力、完善支付生态环境。

  能力开放平台主要涉及的模块和功能如图4所示。

  主要模块包括:

  (1)门户子系统。提供普通用户和开发者可访问的页面,普通用户可下载一卡通快捷充客户端直接使用;开发者可通过申请密钥获取SDK,并在自己的产品中使用。

  (2)开放接口和消息总线。提供标准化接口封装,作为消息枢纽的形式与内部系统和行业平台进行接口信令传输,并实现开发密钥校验、白名单控制等功能。

  (3)能力管理子系统。提供行业充值业务逻辑、基础支付能力、自有号码鉴权和SSO等能力实现。

  (4)运营分析子系统。可对平台调用情况进行统计分析、输出日志报表,并可针对商务合作实现计费管理。

  针对开发者/合作方而言,可通过开放平台进行注册,并下载关注的插件、技术文档等内容,通过“新建应用”填写安全码申请密钥。开发者需输入“安全码”,安全码组成规则为Android签名证书的sha1值+“;”+packagename[即:数字签名+分号+包名],系统将为开发者提供该应用的唯一密钥。

  开发者/合作方根据技术文档将插件嵌入到自己的产品中后,使用被分配密钥,当其产品调用能力平台接口时,能力平台将对请求进行鉴权,如鉴权通过则可正常运用插件提供的能力。

  3、应用效果

  截至目前,一卡通充值APP已在中国科学技术大学校园、合肥公交、高速收费(ETC)等单位使用,并通过安徽移动公司线上、线下渠道为用户提供服务。从2016年7月下旬开始在合肥等地市试点,目前已经实现充值30万笔,用户超过15.6万人,现已在安徽全省推广。在试点期间,经过调试和更新,ETC、合肥通卡等NFC一卡通充值成功率已从最初的34%调优到85%以上。

行业一卡通充值能力开放平台功能架构

图4 行业一卡通充值能力开放平台功能架构

  4、结语

  本文一卡通充值方案在确保资金支付安全的情况下,实现了便捷支付的功能,响应了政府关注的便民服务问题,具备大规模推广的社会条件支持。与交通、校园等基础行业深入合作,对未来NFC新技术在各行业的应用具有示范作用,将同步推动传统行业信息化进程。

  随着行业信息化的深入发展,行业电子卡将逐步取代实体卡片,手机钱包等利用NFC近场技术实现鉴权和数据交换的应用将进一步普及,如何实现技术标准化、平台化是下一步研究方向。

关闭

1.点击下面按钮复制微信号

***********

2.打开微信→查找微信号

加为好友 开始支付接入