1.在PBOC2.0的第9章节定义了电子钱包扩展应用指南,即关于灰锁和电子钱包复合交易的内容。

2.电子钱包的复合交易,主要是在原来电子钱包的基础上进行了应用的扩展,灰锁主要是继承了中石化加油卡规范的理念与流程,而复合交易主要是面向交通领域的需求,即既可以满足ETC的需求(主要应用在高速公路收费),又可以满足城市公交的应用(公交,地铁,一卡通)

电子钱包的复合交易扩展了ETC的功能能和一卡通的功能(在原有的圈存,消费基础上,又可以用到ETC和公交上,所以叫复合交易应用

3.支持复合交易的电子钱包,主要是增加了复合消费交易,其余的圈存和消费都与原来的电子钱包应用一致。

4.复合消费交易的流程:

需要分三步完成:

a.复合消费交易初始化Init For CAPP Purchase、

b.更新复合交易专用文件Update CAPP Cache、

c.复合消费交易扣款Debit For CAPP Purchase;

(而普通的钱包消费交易只有两步:消费交易初始化Init For Purchase和消费扣款Debit For Purchase。)

说明:

从数据完整性来看,完成复合消费交易之后,钱包余额、复合交易专用文件内容(多出了一个专门用于复合交易的文件)、交易明细、脱机交易序号、用于交易验证的MAC和TAC等关键的数据必须同步更新。

从交易流程来看,复合消费交易的交易类型为“09”,在复合交易初始化和复合交易扣款的过程中,所要进行的过程密钥计算、MAC和TAC验算的过程以及需要的数据格式和普通的钱包消费几乎一样。

交易状态机的转换上来看,只有进行了复合交易初始化之后,才能更新复合交易专用文件,而且只有更新了复合交易专用文件之后,才能更进一步地执行复合消费交易扣款命令。

复合交易专用文件主要是用来记录出入口的相关信息

举例来说,对于高速公路收费系统,在车辆驶入高速入口时,通过复合交易可以记录入口的信息;在车辆驶出高速公路时,通过之前记录的入口信息就能够计算出应该收取多少费用。对于公交收费系统中的分段计费模式,通常是在上车刷卡时通过复合交易专用文件记录上车的站点信息,而在下车刷卡时根据记录的上车站点计算出车费再通过复合消费交易扣除。

因为前面说过,复合交易专用文件的更新只能在初始化之后发送命令更新,并且只有完成了一个完整的复合消费交易之后才能真正被修改,所以通常的做法是:在高速入口或者乘客上车时,先进行一次消费金额为0的复合消费交易,从而正确记录入口或者上车站点的相关信息,之后在高速出口或者乘客下车时再根据实际费用进行一次完整的复合消费交易,这样就实现了适用于高速公路或者公共交通中的分段收费功能。(相当于做了两次消费,一次金额为0的伪消费,在下车时再做一次完整的复合消费交易

目前很多地方在公交系统中采用的非接触CPU卡多数都采用这种复合消费交易模式。

1、CHANGE PIN

(1)CHANGE PIN允许持卡人将当前个人密码修改为新的密码,命令中的个人密码值以明文方式进行传送。

(2)PIN值以cn格式存放,不需要整字节填充,最低有效字节的低半字节需要填充时填充F。

(3)命令完成后密码尝试计数器复位至密码尝试次数的上限,原个人密码置为新的个人密码。

(4)命令举例:805E 0100 09 12345678FF11111111

2、圈存交易

(1)INITIALIZE FOR LOAD 初始化圈存

此命令执行后卡片处于圈存状态,此命令的执行需要经过PIN验证。

(2)CREDIT FOR LOAD 圈存交易

将持卡人在银行相应账户上的资金划入电子电子存折或电子钱包中。

此命令的执行必须在卡片处于圈存状态中。

(3)圈存交易命令以电子钱包操作举例

3、消费操作

(1)INITIALIZE FOR PURCHASE/CASH WITHDRAW  初始化消费取现交易

此命令的执行后卡片处于消费/取现状态中。

 使用电子存折进行交易,则此命令的执行需经过 PIN 验证;而电子钱包不需要。

(2)DEBIT FOR PURCHASE/CASH WITHDRAW 消费取现操作

用于消费取现交易,使用持卡人在电子存折或电子钱包中的余额进行消费。

 此命令的执行必须在卡片处于消费/取现状态中。

(3)取现命令以电子钱包操作举例

4、复合消费交易操作

(1)INITIALIZE FOR CAPP PURCHASE  初始化复合消费交易

此命令成功执行后卡片处于 CAPP1 状态中。

(2)UPDATE CAPP CACHE  复合消费交易中更新复合应用数据缓存。

此命令成功执行后卡片处于 CAPP2 状态。

允许在同一次复合消费流程中多次更新不同的复合应用数据缓存,若多次更新同一复合应用数据缓存,则在 DEBIT 中以最

后一次更新的数据为实际更新数据。

(3)DEBIT FOR CAPP PURCHASE  复合应用消费交易

(4)复合消费举例

注意:红字01部分此处为复合应用标志符,上海公交应用此处为记录号。更新数据缓存时在复合消费记录中要有相应的tag记录,此处的01复合应用标志符对应的是复合消费记录中的tag标志并不是记录号,更新数据缓存时格式要与复合消费记录中的相应的格式相对应。  
--------------------- 
作者:Jennie0901 
来源:CSDN 
原文:https://blog.csdn.net/m0_38070602/article/details/82849057 
版权声明:本文为博主原创文章,转载请附上博文链接!

智能卡中的复合消费和指令相关推荐

  1. 【最全!最完整解析!】 计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期。因此,()

    计算机中,执行一条指令所需要的时间称为指令周期,完成一项基本操作所需要的时间称为机器周期,时钟脉冲的重复周期称为重复周期.因此,() A. 时钟周期大于机器周期 B. 时钟周期等于机器周期 C. 机器 ...

  2. 汇编语言:编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中

    题目介绍 程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储b段中. assume cs:code,ds:a,ss:ba segmentdw 1,2,3,4,5,6,7 ...

  3. php exec执行多条命令,小技巧:在PHP中调用多条shell指令

    原标题:小技巧:在PHP中调用多条shell指令 有时候,在持续集成的过程中,需要通过网页在目标服务器上执行shell指令,今天就列举一个实例进行讲解. 比如,我们需要能通过网页将SVN update ...

  4. vue 给checkbox 赋值_浅谈vue中关于checkbox数据绑定v-model指令的个人理解

    vue.js为开发者提供了很多便利的指令,其中v-model用于表单的数据绑定很常见, 下面是最常见的例子: {{msg}} js里data初始化数据 new Vue({ el: "#myA ...

  5. Android逆向基础笔记—Android中的常用ARM汇编指令

    一  ARM寄存器 1.通用寄存器 1).未分组寄存器:R0~R7 2).分组寄存器:R8~812 R13:SP,常用作堆栈指针,始终指向堆栈的顶部,当一个数据(32位)推入堆栈时,SP(R13的值减 ...

  6. 计算机中堆栈的应用举例,西门子S7-200PLC中涉及堆栈操作的指令和梯形图应用实例...

    摘要:堆栈是计算机中最常用的一种数据结构,遵循先入后出的原则,一般用于保存数据.在S7-200PLC中涉及堆栈操作的指令有以下三种,最后本文给出了梯形图应用实例. 逻辑入栈(LPS,Logic Pus ...

  7. 2015-10-13 OC语言中的复合

    2019独角兽企业重金招聘Python工程师标准>>> 复合,就是对象之间的组合,它不限制对象的个数,但至少有两个对象. 复合时,将要复合的对象(类实例化)的头文件导入被复合的类的头 ...

  8. 【单片机自学笔记】(8):c51中的复合赋值运算符,开发版上的数码管、74HC245、74HC138的使用方法,结构体数组

    / C51中的复合赋值运算符 / 变量 复合运算符 表达式 先把变量与后边的表达式进行某种运算,然后将运算的结果赋给前面的变量. +=  加法赋值     ?+  减法赋值 *=  乘法赋值      ...

  9. 汇编中的la_MIPS汇编与指令

    一.MIPS寄存器 MIPS的系统结构及设计理念比较先进,其指令系统经过通用处理器指令体系MIPS I.MIPS II.MIPS III.MIPS IV.MIPS V,以及嵌入式指令体系MIPS16. ...

  10. linux中whoami命令的作用是,浅谈linux中的whoami与 who指令

    浅谈linux中的whoami与 who指令 whoami 功能说明: 显示用户名称 语法: whoami 补充说明: 显示自身的用户名称,本指令相当于执行  id -un 指令 whoami 与 w ...

最新文章

  1. 和plc哪个简单点_怎么看PLC梯形图
  2. Selenium2(WebDriver)开发环境搭建(java版)
  3. C#~异步编程续~.net4.5主推的awaitasync应用
  4. 版是什么_晴天保保超越版好不好,有什么升级?
  5. C++学习之路 | PTA乙级—— 1064 朋友数 (20 分)(精简)
  6. linux用rsync实现同步,Linux下使用rsync实现主备机代码同步
  7. Redis Flushdb 命令
  8. 数据结构探险之图篇(上)理论篇
  9. Ehcache、memcache、redis三大缓存区别
  10. python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)
  11. hdu 1061 Rightmost Digit解题报告
  12. PCIe协议在具体实现时的大体框图
  13. 红旗服务器安装Tuxedo中间件
  14. 2019年互联网寒冬,带你走进真实的面试杀出重围
  15. TIFF图像文件格式详解——转载
  16. 吸血鬼数字java_吸血鬼数字
  17. 【已解决】win10离线安装.net framework 3.5(错误:0x8024402c)
  18. 【pwn】WMCTF2020 cfgo-CheckIn
  19. Python中for循环的使用
  20. 数据库课程设计--淘宝购物订单系统

热门文章

  1. 证监会对6宗内幕交易案件作出行政处罚 涉及现代制药等
  2. 88 R 用户画像之线性回归逻辑回归综合实战 1
  3. 使用图表分析2020北京积分落户的数据
  4. xxl-job任务调度(一)定时任务执行器注册和任务类
  5. docker中mongo数据恢复备份
  6. HUAWEI华为MateBook 14 2022款i7集显触屏16GB+512GB(KLVF-16)原装出厂Windows11系统恢复原厂oem系统
  7. 老中医推荐11个治疗咳嗽小偏方
  8. 小白解决Anaconda更新速度慢问题,内含详细步骤
  9. android studio实现查询功能,基于Android的教室资源查询App的设计与实现
  10. 1.3.1 创建HelloWorld项目