[转自]:http://smarticcard.blog.sohu.com/138982273.html
在PBOC2.0规范中的第九册定义了电子钱包扩展应用指南,其中有关于灰锁和复合交易的内容。在原来电子钱包的基础上进行了应用的扩展,灰锁应用主要是继承了中石化加油卡规范的理念与流程,复合交易主要面向交通领域的需求,即可以满足高速公路不停车收费(ETC)系统的需求,也可以满足城市公共交通的应用需求。
对于支持复合交易的电子钱包而言,主要增加的是复合消费交易,其余正常的圈存和普通消费交易都与原来的电子钱包应用一致。
对于复合消费交易,需要分三步完成包括复合消费交易初始化Init For CAPP Purchase、更新复合交易专用文件Update CAPP Cache、复合消费交易扣款Debit For CAPP Purchase;而普通的钱包消费交易只有两步:消费交易初始化Init For Purchase和消费扣款Debit For Purchase。
从数据完整性来看,完成复合消费交易之后,钱包余额、复合交易专用文件内容、交易明细、脱机交易序号、用于交易验证的MAC和TAC等关键的数据必须同步更新。
从交易流程来看,复合消费交易的交易类型为“09”,在复合交易初始化和复合交易扣款的过程中,所要进行的过程密钥计算、MAC和TAC验算的过程以及需要的数据格式和普通的钱包消费几乎一样。
从交易状态机的转换上来看,只有进行了复合交易初始化之后,才能更新复合交易专用文件,而且只有更新了复合交易专用文件之后,才能更进一步地执行复合消费交易扣款命令。
复合交易专用文件主要是用来记录出入口的相关信息。举例来说,对于高速公路收费系统,在车辆驶入高速入口时,通过复合交易可以记录入口的信息;在车辆驶出高速公路时,通过之前记录的入口信息就能够计算出应该收取多少费用。对于公交收费系统中的分段计费模式,通常是在上车刷卡时通过复合交易专用文件记录上车的站点信息,而在下车刷卡时根据记录的上车站点计算出车费再通过复合消费交易扣除。
因为前面说过,复合交易专用文件的更新只能在初始化之后发送命令更新,并且只有完成了一个完整的复合消费交易之后才能真正被修改,所以通常的做法是:在高速入口或者乘客上车时,先进行一次消费金额为0的复合消费交易,从而正确记录入口或者上车站点的相关信息,之后在高速出口或者乘客下车时再根据实际费用进行一次完整的复合消费交易,这样就实现了适用于高速公路或者公共交通中的分段收费功能。
目前很多地方在公交系统中采用的非接触CPU卡多数都采用这种复合消费交易模式