王兴成,武婷婷,甘人才,李燕波
(中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081)
随着我国城镇化进程的推进,中心城市与卫星城市之间、城市群之间的公共交通需求一直在快速增长。未来我国高速铁路运营将更加注重城际化客运服务,不断创新服务方式,完善服务标准,落实便民利民措施,使高速铁路的建设与重点经济区域的发展紧密契合。
城际铁路旅客出行具有短周期、高频次的特点[1],为满足城际铁路旅客日常通勤出行、快速进出站及便捷支付的现实需求,铁路既有的先购票后乘车惯例及实名制验检票业务亟需优化。
为支持大湾区和粤港澳建设,按照中国国家铁路集团有限公司(简称:国铁集团)的统一部署,广州铁路局集团有限公司(简称:广州局)积极探索城际铁路出行新模式,建设城际铁路智能乘车码系统,让旅客到站后能够快速扫码进出站,随到随走,先乘车后支付,促进铁路客运服务方式转型[2],助力大湾区一小时生活圈提速。
城际铁路智能乘车码系统由业务受理终端、铁路客票发售与预定系统(简称:客票系统)、检票系统、支付平台和业务基座5 部分组成,系统架构如图1 所示。
图1 城际铁路智能乘车码系统架构示意
(1)业务受理终端:主要包括铁路12306 支付宝小程序(简称:小程序)、闸机终端、车站窗口、自助售取票机、列车手持终端等,提供面向旅客的各类快捷服务。小程序主要完成实名认证、乘车码开通、支付方式签约/解约、乘车码展示、乘车记录查询等;闸机终端主要完成乘车码解析、人脸照片采集、实名核验、席位展示等;车站窗口为车站旅客提供服务[3],主要完成乘车码进出站异常处理、实名核验、乘车记录查询及报销凭证出具;自助售取票机主要为旅客提供乘车记录查询和报销凭证打印;列车手持终端主要用于列车检票、列车补票、乘车码识别等。
(2)客票系统:为业务受理终端提供后台服务,实现账户管理、签约关系管理、人脸比对、乘车码生成、乘车记录查询、进出站信息提示、异常自动处理、交易处理、信息推送等功能。
(3)检票系统:为闸机终端和车站窗口提供后台服务,实现乘车码核验、检票处理、席位处理、人脸比对与实名核对、进出站信息配对、异常交易处理、存根生成、交易发起、账单生成等功能。
(4)支付平台:为客票系统、检票系统提供电子支付服务[4],实现支付方式签约/解约、支付能力查询、代扣支付、垫资支付、对账单处理、交易对账、差异处理、资金结算、资金核算[5]等功能。
(5)业务基座:为系统应用提供基础运行环境、运维保障和业务保障。基础运行环境依托铁路云计算平台构建,利用云计算平台提供的虚拟化计算资源、系统软件和工具创建和部署应用程序;运维保障包括监控告警、后台管理、信息维护、日志分析及报表统计等运维管理相关功能,业务保障包括旅客投诉、营销展示等客户服务支持。
旅客通过小程序在线开通扫码乘车业务。旅客绑定实名认证支付宝账户,经人脸识别后,开通乘车码并签约支付宝代扣支付方式后,即可使用乘车码扫码乘车。
(1)乘车码开通申请:旅客登录本人实名认证的支付宝账户,通过小程序线上申请开通乘车码。目前,旅客持身份证、港澳通行证、台湾通行证、港澳居住证、台湾居住证等证件可在线办理乘车码开通,持其他证件时需前往车站窗口办理。
(2)身份认证及开通:旅客通过小程序完成人脸识别认证后,即可完成乘车码业务开通。申请用户的人脸照片信息由支付宝传输至系统,并由系统加密保存,供进出站闸机及列车手持终端等在检票、补票环节进行人脸比对。
(3)支付宝代扣签约:乘车码开通成功后,旅客还需签约支付宝代扣支付方式。旅客仔细阅读并勾选同意支付宝代扣协议,即可完成支付宝代扣签约。旅客发起签约后,系统内部逐级转发签约请求,与支付宝完成交互处理后逐级返回签约参数,最终完成旅客实名12306 账户与同名支付宝签约账户的绑定,并通过小程序向旅客展示支付宝代扣签约结果。
旅客通过小程序在线关闭扫码乘车业务。为保证铁路运输收入资金安全,先由客票系统完成旅客12306 账户与支付宝账户绑定关系的解除和乘车码业务的关闭,再逐层处理支付宝代扣支付方式解约请求,并向旅客通知解约结果。
(1)关闭乘车码申请:旅客可通过小程序或支付宝账户发起乘车码业务关闭请求,在支付宝账户中发起关闭请求会自动跳转至小程序。
(2)业务核实:系统判断旅客是否有未完成的乘车记录和未扣款成功的交易记录。
(3)绑定解除与乘车码关闭:经核实,旅客乘车码业务无待处理记录时,系统先行完成旅客12306账户与同名支付宝账户的绑定关系的解除,关闭旅客乘车码业务,发起支付方式解约请求。
(4)支付宝代扣解约:系统与支付宝交互处理,完成旅客支付宝代扣支付方式解约,并通过小程序向旅客推送解约结果通知。旅客完成支付方式解约后,需再次签约并后才能正常使用乘车码。
旅客在小程序上打开乘车码,系统会自动生成并定时更新乘车码。
(1)未完成订单检测:旅客打开乘车码时,系统会先判断该旅客是否有未完成的订单。若存在未完成的单边交易(指旅客进站或出站未生成正常记录),系统提醒旅客进行补登处理。
(2)账户支付能力核实:若旅客没有未完成的订单,系统向支付宝发起旅客账户支付垫资能力查询请求,支付宝对旅客账户风险等级、是否有垫资未还款及相应偿付能力进行核实,并向系统返回核实结果。
(3)乘车码生成:在核实旅客账户支付能力无异后,系统为旅客实时生成乘车码,并通过小程序向旅客展示乘车码。
(4)更新周期设置:完成乘车码更新周期(如每隔2 min)的设置;客票系统后台服务生成乘车码后,会根据系统设置的更新周期,动态更新乘车码,以防止旅客因乘车码被偷拍盗用造成资金损失。
旅客在进出站时,打开小程序出示乘车码,通过闸机终端验证乘车码,系统自动生成乘车订单并完成订单计价。小程序进出站扫码页面如图2 所示。
图2 小程序进站、出站扫码页面
(1)扫码进站与乘车订单生成:旅客进站时向闸机出示乘车码,系统判断旅客是否有未完成的乘车交易记录,若存在未完成交易记录,则引导旅客通过车站窗口处理。系统验证旅客乘车码是否有效,并通过人脸识别完成旅客身份核验后,由检票系统自动为旅客分配席位,闸机开闸放旅客进站;客票系统后台服务推送旅客进站信息,小程序向旅客展示进站消息与乘车订单状态。
(2)扫码出站与乘车订单计价:旅客出站时向闸机出示乘车码,系统验证旅客乘车码是否有效,并通过人脸识别核验旅客身份;乘车码核验通过后,系统自动匹配旅客进站记录并计算票价,生成铁路客票存根和交易记录并自动扣款,闸机开闸放旅客出站;客票系统后台服务推送旅客出站信息,小程序向旅客展示出站消息与订单状态;如果未匹配到旅客进站信息,提醒旅客前往人工窗口处理。
旅客使用乘车码扫码出站时,系统借助支付宝委托代扣业务向旅客提供快捷支付服务。使用乘车码出站时的快捷支付页面如图3 所示。
图3 乘车码出站快捷支付页面
(1)自动扣款:旅客出站扫码时,系统与支付宝进行交互,依据乘车订单计价自动完成旅客账户扣款。自动扣款前,支付平台会对旅客交易记录进行重复性校验,避免旅客重复支付。自动扣款不成功时,系统向支付宝发起代扣请求。
(2)支付宝代扣:支付宝接收代扣请求后,进行资金代扣处理,并向系统返回代扣结果。
(3)支付宝垫资:支付宝代扣失败时,系统向支付宝发起垫资请求,支付宝审核后完成垫资扣款,并向系统返回垫资扣款结果。
(1)客票数据入库:在旅客乘车结束后的T+1日凌晨3:00,客票系统后台服务根据客票存根和交易信息生成前一日客票交易对账单,由支付平台完成客票交易对账单入库。
(2)支付宝数据入库:在交易的T+1 日凌晨3:00,支付宝将前一日所有成功的乘车码交易记录生成对账单,并发送给支付平台,由支付平台完成支付宝交易对账单入库。
(3)交易对账:支付平台采用并行分布式技术[6]和大数据技术[7],对客票交易明细、支付平台交易明细、支付宝交易明细进行逐笔核对,完成对账结算[8];全部交易核对一致后,将对账结果发送给支付宝。
(4)差异处理:交易对账结果出现差异时,支付平台将交易差异数据于9:00 前发送给支付宝,支付宝按照协议要求进行赔付,并于14:00 前将赔付完成结果通知支付平台,以便完成后续的资金结算业务。
(1)生成结算单:系统依据客票存根及交易信息生成客票交易对账单汇总信息,在交易T+1 日15:00 前,由支付平台按照该汇总信息向支付宝发起路局乘车码资金结算请求[9]。
(2)结算处理:支付宝收到结算请求后,将乘车码票款资金结算至路局运输收入专户,铁路局集团公司收入部按照国铁集团财务部要求完成运输收入的上缴。支付宝结算完成后,将资金结算结果返回至系统支付平台。若资金结算失败,支付平台通过触发定时任务,向支付宝再次发起结算请求;若多次结算失败,支付平台会发出预警,通知业务人员和技术支持人员与支付宝方协同分析失败原因,完成资金结算处理。
(1)异常记录生成:旅客进出站时,若发生单边的乘车记录异常,系统会生成异常记录,并引导旅客进行相应的异常处理。
(2)进站异常处理:旅客刷码进站异常时,车站窗口操作员查询旅客乘车信息,询问旅客上次乘车出站信息,系统完成进出站记录匹配,生成客票存根,旅客完成支付即可正常刷码进站。
(3)出站异常处理:旅客刷码出站异常时,窗口操作员查询旅客乘车信息,询问旅客乘车进站信息,系统完成进出站记录匹配,生成客票存根,旅客完成支付即可正常出站。
(4)小程序异常处理:旅客打开小程序乘车码功能时,系统判断是否有单边的乘车记录,若有则提醒旅客先进行单边交易补登处理。具体补登规则为:根据旅客进站或出站记录的车次、车站信息,按照当前列车最早乘车站或者最远乘车站完成交易记录匹配。旅客确认乘车记录信息无误后,系统生成客票存根并完成扣款,旅客乘车码功能即可恢复正常使用。
(5)后台异常处理:在旅客产生单边交易的T+1 日,系统会以短信形式或向旅客12306 账户推送单边交易异常信息,提醒旅客尽快登录小程序或前往就近的铁路车站窗口进行单边交易异常处理。在旅客乘车的T+2、T+3、T+5、T+14、T+15 日,系统还会分别以相同方式提醒旅客尽快完成单边交易处理,并告知旅客:系统会按照当前列车最早乘车站或者最远乘车站的票价,在T+15 日完成自动补登和自动扣款处理。
城际铁路车站环境复杂,因遮挡或受到干扰,移动网络和无线网络信号弱,且高峰时段旅客密集,无法保证业务受理终端在车站内始终保持稳定的网络连接。为此,设计并实现了双离线动态乘车码生成与解析,以确保在节假日高峰时期、人流量大的车站及信号不佳的列车上,旅客不会因网络连接不稳定而影响乘车码的使用,保证旅客获得良好的出行乘车体验。
双离线动态乘车码生成与解析采用国密SM2、SM4 及SM3 加密算法实现,这些算法均由国家密码管理局设计并公开,具有安全性和可靠性。其中,SM2 是一种椭圆曲线公钥密码算法,用于国家关键信息系统的数据加密、解密等操作;SM4 是一种对称加密算法,广泛应用于网络通信、文件存储及移动支付等各种需要数据加密的场景;SM3 算法主要用于数字签名及验证、消息认证码生成及验证等。基于这些加密算法,系统在线开通旅客乘车码时,自动完成个人密钥在小程序端的同步缓存,以及公钥在闸机等多种终端的同步缓存,能够离线对旅客乘车码进行动态加密更新及解析,使乘车码具有防伪造、防盗用、防抵赖、防篡改的特点。图4 为双离线动态乘车码生成与解析时序图。
图4 双离线动态乘车码生成与解析时序图
(1)同步密钥:旅客通过小程序签约开通乘车码时,客票系统使用SM4 算法对旅客账户数据进行加密后,将个人密钥信息同步至小程序端进行缓存,将公钥同步至闸机等业务受理终端进行缓存,为乘车码离线生成与解析提供可能。
(2)离线生成乘车码及动态更新:在离线环境下,旅客使用小程序刷新乘车码时,小程序使用SM3 算法对当前时间及缓存数据进行签名处理,再使用SM2 算法对签名原文和密文数据进行加密,生成乘车码。
由于系统后台服务端按照设置的乘车码更新周期(如每隔2 min)自动更新旅客乘车码,超出更新周期时长后,若旅客使用未刷新的乘车码,终端校验后会提示旅客乘车码无效,此时旅客需通过手动刷新乘车码,来再次离线生成有效的乘车码。此外,系统还禁止了截屏操作,有效防止了乘车码被盗用及伪造使用。
(3)离线解码:在离线环境下,旅客进出站扫码时,闸机、列车手持终端、车站窗口等业务受理终端使用SM3 及SM2 算法对国密公钥与签名结果进行核验,完成乘车码的解析。
旅客使用乘车码出站时,系统实时完成旅客身份验证及乘车订单计价,并发起自动扣款,完成快捷支付。除了让旅客体验到快捷支付的顺畅便利,更重要的是保证旅客资金安全,通过对支付交易进行层层加密与验证,使支付交易防篡改、不可抵赖,保证旅客支付交易的安全性、稳定性及完整性。
采用SHA1WithRSA 及RSA 算法实现对支付交易的加密及验证。RSA 算法是当前应用最广泛的公钥非对称加密算法之一,广泛应用于数据加密、数字签名等领域。通过数据的加密和签名,能够防范由密文反推签名私钥的风险,保证数据不被篡改,提高数据的安全性和完整性。
客票系统与支付平台之间通过业务报文传递支付交易数据,系统与支付宝之间通过银行报文传递支付交易数据。业务报文及银行报文均使用私钥进行签名、加密,使用公钥进行解密、验签。支付平台与客票系统分别持有各自私钥及对方公钥,支付平台与支付宝分别持有各自私钥及对方公钥,支付平台私钥以“业务私钥”和“银行私钥”进行区分。支付交易数据以报文形式经过多次私钥签名、加密及公钥解密、验签完成流转。支付交易完整的加密与验证流程如图5 所示。
图5 支付交易加密与验证流程示意
(1)客票系统加密业务报文:客票系统使用私钥对业务报文进行签名,并对签名后的明文和密文进行加密。
(2)支付平台验证业务报文:支付平台使用客票系统公钥对业务报文进行解密,再对解密后的明文和密文进行签名验证。
(3)支付平台加密银行报文:支付平台使用业务私钥对银行报文进行签名,并对签名后的明文和密文进行加密。
(4)支付宝验证银行报文:支付宝使用支付平台公钥对银行报文进行解密,再对解密后的明文和密文进行签名验证。
(5)支付宝加密银行报文:支付宝使用私钥对银行报文进行签名、加密。
(6)支付平台验证银行报文:支付平台使用支付宝公钥对银行报文进行解密、验签。
(7)支付平台加密业务报文:支付平台使用银行私钥对业务报文进行签名、加密。
(8)客票系统验证业务报文:客票系统使用支付平台公钥对业务报文进行解密、验签。
旅客扫码乘车后,系统自动扣款或以支付宝代扣方式完成付款。支付交易完成后,系统会按照铁路运输收入管理规定相关要求[10],完成交易对账及差异处理,确保运输收入正确、及时、完整和安全。交易对账结果的准确性直接关乎国铁集团运输收入,交易对账后及时采取合理的措施进行差异处理,直接影响旅客乘车体验及国铁集团客运服务水平。
借鉴铁路电子支付平台多年的交易对账和差异处理业务经验,结合城际铁路乘车码的业务特点,建立对账及差异处理业务模型,如图6 所示。
图6 交易对账及差异处理业务模型示意
系统交易对账发生在业务系统(客票系统)、支付平台和支付机构(支付宝)三方之间,由支付平台分别与业务系统进行业务对账、与支付机构进行银行对账。
业务对账完成业务系统与支付平台之间交易数据差异的比对核查,银行对账完成支付平台与银行之间交易数据差异的比对核查。对于复杂因素导致的重复支付等需退款的交易差异,系统审核通过后由银行进行退款,审核不通过的进行标记;对于无需退款的待处理交易差异,若存在资金差异则由银行补款,无资金差异则进行标记。
基于该业务模型实现的三方对账及差异处理,能够将票、账、款分离,保证了运输收入资金结算的完整性。
城际铁路智能乘车码系统面向城际铁路运营实际需求,基于双离线动态乘车码生成与解析技术及智能识别技术,实现旅客扫码进出站、先乘车后支付的创新业务模式。该系统提供了周全、细致的异常处理,使旅客扫码乘车时的异常得到及时、稳妥处置,为旅客出行带来高效便捷的乘车体验,极大地提升了城际铁路客运服务水平和旅客出行效率。此外,该系统通过支付交易多重加密与验证及完善的交易对账及差异处理,既保证了旅客支付的安全性和完整性,也确保了国铁集团运输收入准确无误。
目前,城际铁路智能乘车码系统的功能已全部实现,并在珠三角穗深城际、广佛肇城际、莞惠城际等多条城际铁路完成应用试点与推广,取得良好的应用效果。截至2023 年底,已在4 条城际铁路共计54 个车站开通乘车码业务,开通乘车码的 旅客累计250 多万人,完成运输收入进款3000 万元,扫码乘车旅客发送量占比达 23.3%。
铁路乘车码业务将继续在广州局进行更大范围的推广,并逐步辐射到国铁集团其它铁路局。同时,铁路乘车码业务还在北京地铁取得的良好应用效果,未来可拓展到更多路外场景,为推进轨道交通多网融合发挥积极作用。