Design and implementation of online recharge system based on China Railway Expresspay Card
-
摘要: 为解决持中铁银通卡的旅客线下充值不便的问题,减轻车站窗口的工作压力,在中铁银通卡发卡系统的基础上,利用终端消息认证码(MAC)校验、卡片冲正等关键技术,使用IDEA、WebStorm等开发工具,设计并搭建了中铁银通卡线上充值系统,实现银通卡线上充值、圈存、交易记录查询等功能。系统上线后,市场反馈良好,线上充值比例占总充值金额的25%,并呈逐渐上升趋势。
-
关键词:
- 线上充值 /
- 消息认证码(MAC)校验 /
- 中铁银通卡
Abstract: In order to solve the problem that it is inconvenient for passengers holding China Railway Expresspay Card to recharge offline and reduce the working pressure of station windows, based on the card issuing system of China Railway Expresspay Card, using the key technologies such as terminal MAC verification, and card correction, IDEA and WebStorm development tools, this article designed and built the online recharge system of China Railway Expresspay Card, which implemented the functions of online recharge, inventory and transaction record query. After the system was launched, the market feedback was good, and the proportion of online recharge accounted for 25% of the total recharge amount, and gradually increased. -
近年来,非接触式IC卡系统在全国各地的公共交通领域有了较快发展,为了方便IC卡的发卡和充值,各地陆续推出了IC卡自助充值系统,实现用户在网点或银行进行IC卡自助充值。由于移动互联网和第三方支付的快速发展,各大城市的公交卡公司着手积极研究移动充值的解决方案[1-3],大都采用NFC读写卡方式。由于卡片规范、密钥体系和交易流程均不相同,上述研究无法完全适用于中铁银通卡。中铁银通卡芯片技术标准符合《中国金融集成电路(IC)卡规范》(简称:PBOC),电子现金账户和联机账户并存[4],芯片可存储数字证书、密钥、持卡人信息、指纹等信息。乘车时用户使用电子现金脱机消费模式,具有交易快速、便捷、安全、不可伪造、不可重复消费等特点[5-6]。联机账户可用于互联网购票等联机交易,适用于所有符合PBOC的终端,其范围广、适应性强。本文将线上充值思路应用于中铁银通卡,设计并实现了中铁银通卡线上充值系统(简称:线上充值系统),实现银通卡的线上自助充值,同时,对系统的总体架构、关键技术、业务功能和流程设计进行了论述。
1 系统设计
1.1 总体架构
系统使用WebStorm、IDEA等工具进行开发,总体架构分为3层,分别为表现层、应用层、支撑层,如图1所示。
(1)表现层即人机交互层,包括手机终端充值应用、蓝牙读卡器和管理平台,该层采用VUE框架,手机端App采用B/S架构,管理平台采用C/S架构,使用微信/支付宝小程序的原生API,将信息可视化后与用户进行交互[7]。
(2)应用层采用Spring框架。表现层将操作请求传递给应用层处理。该层负责所有的业务流程控制以及数据库的增删改查[3],同时,负责与表现层、支撑层的开放平台、第三方支付系统进行对接。
(3)支撑层主要指开放平台。开放平台提供已封装API供应用层或其他拓展业务的第三方系统调用。采用HTTPS通信协议,调用方可通过开放平台提供的SDK实现对该系统的间接访问。开放平台通过ISO8583金融报文和固定格式接口与中铁银通卡发卡系统进行通讯。
1.2 数据库设计
本文使用MySQL工具建立关系型数据库,按照一致性、完整性、安全性和规范化原则进行设计[8]。MySQL数据库支持多线程和优化的SQL查询算法,有效提高查询速度。数据库中的交易明细表如表1所示。
表 1 交易明细表结构字段名 数据类型 长度 是否主键 是否允许空 功能描述 oid bigint 11 是 否 主键 orderId char 25 否 否 业务系统订单号 primaryAcctNum char 19 否 否 卡号 tranCode char 6 否 是 交易类型 status char 4 否 是 订单状态 seqNo char 32 否 是 第三方支付订单号 tranTime char 32 否 是 交易时间 pay_way char 16 否 是 支付方式 amount char 10 否 是 支付金额 processingCode char 6 否 是 交易代码 dateSettlmt char 4 否 是 清算日期 1.3 安全设计方案
由于金融交易和账户信息读写对系统的安全性要求较高,本文从交易合法性验证、数据加密和访问控制3个方面进行系统安全设计。
1.3.1 交易合法性验证
本文采用双向身份认证和授权方式校验交易合法性。业务系统被分配唯一标识以及与之相匹配的应用鉴别密文,开放平台根据唯一标识进行身份认证、状态校验和权限控制等。业务系统与开放平台每次交互都需要进行密钥交换并保存对方的公钥,同时使用RSA2算法做数字签名,保证业务数据的可靠性和防抵赖性。
1.3.2 数据加密
为保证业务系统数据与开放平台间的数据传输安全,本文将整体业务数据转成JSON字符串,用AES加密算法对业务数据进行加密。蓝牙读卡器传输数据采用CRC校验、3DES加密等技术[9]。
1.3.3 访问控制
业务系统登录账号由管理员统一下发,不开放个人注册。
2 关键技术
2.1 消息认证码(MAC)校验技术
基于PBOC的圈存写卡交易,中铁银通卡发卡系统收到请求后,会在响应报文中返回含MAC值的发卡行脚本命令,终端解析脚本命令并发送给IC卡执行。IC卡产生本次交易过程密钥,计算出MAC值并校验[10]。若两者相同,证明该上行数据的发送者是中铁银通卡发卡系统,且数据在传送过程中未被修改、删除或重组,否则会拒绝该交易。
2.2 终端及卡片冲正机制
为保证卡片金额与后台交易的一致性,需设计完善的冲正机制,处理圈存写卡异常情况。在读卡器终端保留最后一笔圈存交易,如圈存写卡过程中发生拔卡、断网、软件异常退出等异常情况,导致写卡失败,交易会立刻发起冲正。
若IC卡未返回写卡结果信息,则终端再次读卡,并与卡片交易计数器数值做比较,若交易计数器数值加1,且余额未增加,则同样发起冲正。
发起冲正后,若未收到上层系统的冲正应答,则重复发3次冲正请求,若均未应答,则提示人工处理。若收到上层系统的圈存应答,则丢弃该应答。
3 系统功能
线上充值系统主要分为手机终端软件和管理平台两部分,功能结构如图2所示,手机终端软件(微信小程序、支付宝小程序)与蓝牙读卡器连接后可实现对银通卡的读写。
3.1 手机终端软件功能
3.1.1 电子现金圈存及余额查询
用户使用第三方支付为银通卡电子现金做圈存,可选择系统给出的圈存金额或手动输入金额。交易成功后,界面显示更新后的余额信息。电子现金圈存界面如图3所示。
3.1.2 圈存记录查询
用户可根据卡号信息查询到该卡的圈存记录,核实圈存数据,界面如图4所示。
3.1.3 联机账户充值及余额查询
用户使用第三方支付为银通卡的联机账户充值,可选择系统给出的充值金额或手动输入充值金额。充值成功后,联机账户进行余额更新。
3.1.4 充值记录查询
用户可根据卡号信息查询到联机账户的充值记录,并核实充值数据。
3.2 管理平台功能
管理人员可通过浏览器登陆管理平台,具体功能包括订单列表查询、POS充值列表查询和指定账户圈存列表查询。管理人员可以通过管理平台核实账务和资金清算情况。管理平台界面如图5所示。
4 系统流程设计
线上充值系统交易总体流程如图6所示。
4.1 电子现金圈存流程
(1)用户将卡片插入蓝牙读卡器中,读卡器识别卡片信息后,上送卡号、余额及其他金融数据;
(2)用户在手机终端软件选择圈存金额,进入支付流程,充值业务系统根据用户提交的金额向第三方支付系统做扣款请求,确认付款成功后,完成支付。
(3)支付成功后,终端提出圈存写卡请求,为确保资金安全,充值业务系统需再次与第三方支付系统确认并验证支付信息,充值业务系统向开放平台提出圈存写卡请求,并调用开放平台API做多次验证与交互,银通卡发卡系统更新后台余额并下发写卡指令,终端收到写卡指令,写卡成功后,卡片返回写卡成功脚本信息,再由充值业务系统回传至中铁银通卡发卡系统。
4.2 联机账户充值流程
(1)与4.1中的(1)一致;
(2)与4.1中的(2)一致;
(3)充值业务系统调用开放平台API做联机账户充值请求,中铁银通卡发卡系统收到请求后更新后台余额,并返回执行结果,交易结束。
4.3 查询流程
(1)用户在手机终端软件上触发查询业务;
(2)终端软件将读卡器上送的卡号信息上送至充值业务系统,充值业务系统与开放平台交互并将查询结果返回至手机界面。
5 结束语
本文通过分析银通卡充值服务所面临的新需求,提出银通卡线上充值的解决方案,使银通卡充值业务变得更高效、便利、自动化。中铁银通卡线上充值系统投入使用后,市场反馈良好,线上充值比例占总充值金额的25%,并呈逐渐上升趋势。在后续使用中,随着PBOC的升级,系统需要根据中铁银通卡应用的升级不断优化。下一步,可研究线上充值交易流程及异常处理机制的优化,自动处理由于写卡失败等原因造成的充值失败,还可研究业务系统的充值账务自动核对、自动退款等新功能,提升旅客使用体验。
-
表 1 交易明细表结构
字段名 数据类型 长度 是否主键 是否允许空 功能描述 oid bigint 11 是 否 主键 orderId char 25 否 否 业务系统订单号 primaryAcctNum char 19 否 否 卡号 tranCode char 6 否 是 交易类型 status char 4 否 是 订单状态 seqNo char 32 否 是 第三方支付订单号 tranTime char 32 否 是 交易时间 pay_way char 16 否 是 支付方式 amount char 10 否 是 支付金额 processingCode char 6 否 是 交易代码 dateSettlmt char 4 否 是 清算日期 -
[1] 丁申宇. 公用交通IC卡自助充值系统的研究与实现[D]. 南京: 南京理工大学, 2011. [2] 许志龙,徐 锋,张慧源. 基于互联网的广东省交通一卡通充值系统研 [J]. 物联网技术,2014(2):88-91. DOI: 10.3969/j.issn.2095-1302.2014.02.035 [3] 苏浩伟,邹大毕, 温晓丽. 基于安卓NFC接口的交通一卡通手机充值系统研究 [J]. 信息化建设,2016(7):58-59, 61. [4] 李 燕,王 红,潘 跃. 中铁银通卡在京津城际高速铁路的应用 [J]. 铁路计算机应用,2014,23(1):27-29. DOI: 10.3969/j.issn.1005-8451.2014.01.007 [5] Li Ying, Chen Lu-sheng. Multi-conditional e-cash with transferability[C]//Proceedings of the 2010 International Conference on Wireless Communications, Networking and Information Security. Beijing, 2010. Piscataway, USA: IEEE, 2010: 381-385.
[6] 王 路. 基于Android NFC手机的金融IC卡圈存系统设计与实现[D]. 成都: 电子科技大学, 2014. [7] 毛 静. 铁路科技企业项目信息化管理系统的设计开发与应用 [J]. 铁路计算机应用,2017,26(6):31-35. DOI: 10.3969/j.issn.1005-8451.2017.06.008 [8] 薛 峰. 智能公交充值服务系统的设计与实现[D]. 天津: 天津大学, 2016. [9] 王丽君. 空中圈存系统平台研究 [J]. 中兴通讯技术,2011,17(6):46-50. DOI: 10.3969/j.issn.1009-6868.2011.06.011 [10] 胡云肖, 杨 波,孙 涛. 面向PBOC 2.0的智能卡操作系统的设计 [J]. 山东科学,2012,25(5):73-77. DOI: 10.3976/j.issn.1002-4026.2012.05.016 -
期刊类型引用(3)
1. 高玲,单杏花,王洪业,韩慧婷,丁静. 高速铁路客运票价最高限价调整机制研究. 铁路计算机应用. 2024(03): 1-6 . 本站查看
2. 张涛,阎志远,吕占民,李贝贝. 铁路列车统一补票系统架构优化及演进. 铁道运输与经济. 2022(01): 73-79 . 百度学术
3. 黄鑫. 基于收益管理思想的铁路货运经营管理. 综合运输. 2020(11): 87-90+110 . 百度学术
其他类型引用(4)