QPBOC扩展应用交易流程
1 Q扩展部分数据
增加3个DGI,分别为:A001,8020,9020
9103中增加DF60(9F38中),DF61
增加DF62,DF63
1.1 A001扩展应用配置
|
DGI |
长度 |
值(示例) |
|
A001 |
7*N |
15 01 00 00 FF 00 00 数据按7个字节为一个单元进行组织,每个单元对应一个扩展应用文件的配置信息,解析如下: 1字节扩展应用文件SFI; 1字节文件类型:01表示变长记录文件, 02表示循环记录文件; 1字节读权限:00表示采用Read CAPP Cache指令读 1字节写权限:00表示采用Update CAPP Cache指令更新 1字节单条记录最大长度:限制可以使用记录的最大长度 2字节文件大小配置:对于变长记录文件, 2字节表示预设的文件大小,00 00表示大小不限制;对于循环记录文件,为1字节记录条数和1字节记录大小。 可以根据应用需要使用的扩展应用文件的实际数量和实际SFI,对该DGI的数据域进行调整。每7个字节组成的单元的数量和顺序,决定了后续8020数据域内开通密钥的数量和顺序,必须一一对应。 |
1.2 8020扩展应用开通子密钥
DGI数据组成及顺序如下,密钥顺序按照A001中定义的文件SFI顺序进行匹配,对应设置为每个文件的开通密钥。
|
DGI |
Len |
Value |
|
8020 |
10*N |
0x13文件扩展应用开通保护密钥(16字节) 0x14文件扩展应用开通保护密钥(16字节) ………. |
1.3 9020:扩展应用开通密钥校验值
DGI数据组成如下,其中校验值(KCV)由8020中的每条密钥对8字节00加密后取左3字节组成,校验值密钥顺序必须与8020中的密钥顺序一致。
|
DGI |
Len |
Value |
|
9020 |
03*N |
0x13文件复合应用开通保护密钥校验值(3字节) 0x14文件复合应用开通保护密钥校验值(3字节) ……. |
1.4 9103非接触返回值
l 9F38中增加CAPP交易指示位DF60
l BF0C后面增加DF61
如果终端不支持非接触扩展应用,则设置DF60为00
1.5 0D01或0E01
如果支持押金抵扣交易,增加DF62,DF63
2 扩展应用指令
2.1 READ CAPP DATA
//TEST
CPURESET()
00A4040008A000000333010101
80B400A8020570 //读取0X15变成文件,ID为0570的记录
00B201F400 //读取0X1E循环文件,第一条记录 //16 RMAC
<commad 80B400b00A05701234567812345678 />
<return 057007000000000000001C895F11(4字节的RMAC) /> //校验MAC
KEY=D5F1FE4A7F8C20FDEC49150BA2E00EDF
3DES_MAC(1234567812345678 05700700000000000000800000000000,KEY,MAC)</span>
l 强制带有MAC,用来确认指令来自合法的终端
l ID由支付系统定义,不足位数后补0
l 在同一SFI下,ID应保持唯一。
l 卡片支持RMAC,返回4字节MAC,用行业应用管理密钥计算MAC验证,初始向量为终端发送的随机数。
l 扩展应用支持应用失效功能,在更新应用数据时将应用有效标志置0.
2.2 APPEND RECORD
<span style="font-family:Microsoft YaHei;">CPURESET()
00A4040008A000000333010101
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4)
ATC=000000000000+ATC
CAPPK1= D5F1FE4A7F8C20FDEC49150BA2E00EDF//应用开通密钥
CAPPK2= D5F1FE4A7F8C20FDEC49150BA2E00EDF//行业应用管理密钥 //写入0X16变成文件记录 B0:10110 000
ECB_3DES_EN(CAPPK2,CAPPK1,KEY2)
HMD=04E200A81E+KEY2+057007+STRING(0,07) // TLV
3DES_MAC(ATC+HMD+8000000000,CAPPK1,MAC)
HMD+MAC //写入0X1e循环文件记录
ECB_3DES_EN(CAPPK2,CAPPK1,KEY2)
HMD=04E200F01E+KEY2+057007+STRING(0,07)
3DES_MAC(ATC+HMD+8000000000,CAPPK1,MAC)
HMD+MAC</span>
l 扩展应用开通时,用来新增行业应用记录。
l 加密加MAC方式,强制带有MAC,用来确认指令来自合法的终端,MAC计算过程参考8.2 安全机制
l 持卡人在专用设备上开通。
l 循环记录开通业务时,可预先增加一条。该文件对应一条行业应用管理密钥。
l 卡片判断记录长度是否超出,是返回6A80.
l 卡片判断文件空间是否足够,否返回6A84.
2.3 UPDATE CAPP DATA CACHE
<span style="font-family:Microsoft YaHei;">//UPDATE CAPP DATA:
DATA=05700700000000002212
KEY= D5F1FE4A7F8C20FDEC49150BA2E00EDF
3DES_MAC(000000000000+ATC+84DE00+ID+0E+DATA+8000000000000000, KEY,MAC)
84DE00+ID+0E+DATA+MAC //RETURN 9000 //RMAC
<commad 84DE00b00e0570070000000000000017B8E975 />
<return 57C6C544(4字节的RMAC) /> //校验MAC 初始向量=4字节0+MAC 响应报文
KEY=D5F1FE4A7F8C20FDEC49150BA2E00EDF
3DES_MAC(00000000 17B8E975 9000 800000000000,KEY,MAC)</span>
更新的文件不存在,返回6A82
前续命令GPO命令或UPDATE CAPP 命令,返回6985.
变成文件,需检查是否存在此ID,否则返回6A83.
检查更新的长度是否与原来一致,否则返回6A80或6A84.
暂存数据,读记录完成后,更新。
循环文件,更新最新一条记录。
2.4 GET TRANS PROVE
<span style="font-family:Microsoft YaHei;">CPURESET()
//2> 应用初始化(必备):
00A4040008A000000333010101
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4)
//取脱机交易密文TC
805A000002+ATC+08</span>
l 终端在无法接收到最后一条交易指令响应数据的情况下,重新上电并发送此命令,获取上笔交易TC,如果命令响应成功,则终端判断上笔交易成功,否则,按交易失败处理。
l 如果最近一笔交易是脱机预授权交易,返回全0.
l 该命令只能获取最近一笔卡片成功完成的扩展应用交易的TC。
3 交易流程
3.1 分时分段扣费交易
3.1.1 实例
<span style="font-family:Microsoft YaHei;">CPURESET()
//2> 应用初始化(必备):
00A4040008A000000333010101
//2.1> READ CAPP DATA:
80B400b0020570
//2.2> 交易前金额:
80CA9F7900
80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额 //DF60=01 9F02 = 000000000100 实际金额=9F79+DF62-DF63
80A80000248322270000800000000001000000000000000156000000000001561410220111223344 01 //2.3>UPDATE CAPP DATA:
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4) DATA=05700700000000002212
3DES_MAC(000000000000+ATC+84DE00b00e+DATA+8000000000000000,D5F1FE4A7F8C20FDEC49150BA2E00EDF,MAC)
84DE00B00e+DATA+MAC;UPDATE APPDATA CACHE
80B400B0020570(AFTER+9000);READ APPDATA //没有真正被改写,只是缓存 //3> 读应用数据(必备):
00B2011400
00B2021400
00B2031400
00B2021c00
00B2023400 //13.2> 交易后金额:
80CA9F7900 80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额
</span>
3.1.2 流程图
3.1.3 注意事项
1. 先缓存,后更新。交易扣款和扩展应用记录的更新必须确保同时执行,在RECORD READ成功读取最后一条AFL命令记录时统一进行更新,卡片保持本次TC。
2. 验证方式fdda。00或01.
3. 验证9F69第8字节与DF61值是否一致
4. 支持押金抵扣功能,需增加DF62,DF63. 以手机话费为例,DF62为可透支额,DF63为已透支额。
5. 交易前余额=9F79+DF62-DF63,交易后DF63=9F02-9F79,9F79=0或9F79=9F79-9F02
6. 圈存先抵消DF63,再增加9F79.
7. 修改DF62,值必须大于DF63,否则返回6A80.
3.2 脱机预授权交易
3.2.1 实例
<span style="font-family:Microsoft YaHei;">CPURESET()
//2> 应用初始化(必备):
00A4040008A000000333010101
//2.1> READ CAPP DATA:
ID=C0 //A8 B0 B8 C0
80B400+ID+020570 //2.2> 交易前金额:
80CA9F7900
80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额 //DF60=02 9F02 = 000000000200 9F381B 9F6604 9F0206 9F03069F1A0295055F2A029A039C019F3704 DF6001
80A80000248322 270000800000 00000200 0000000000000156000000000001561410220111223344 02 //2.3>UPDATE CAPP DATA:
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4) ID=C0
DATA=05700700000000002212
3DES_MAC(000000000000+ATC+84DE00+ID+0e+DATA+8000000000000000,D5F1FE4A7F8C20FDEC49150BA2E00EDF,MAC)
84DE00+ID+0e+DATA+MAC;UPDATE APPDATA CACHE
80B400+ID+020570(AFTER+9000);READ APPDATA //没有真正被改写,只是缓存 //循环文件
DATA=01020700000000002212
3DES_MAC(000000000000+ATC+84DE00+f0+0e+DATA+8000000000000000,D5F1FE4A7F8C20FDEC49150BA2E00EDF,MAC)
84DE00+f0+0e+DATA+MAC;UPDATE APPDATA CACHE
//00B201F400 过程中,不允许读? 80CA9F7900
//3> 读应用数据(必备):
00B2011400
00B2021400
00B2031400
00B2021c00
00B2023400 //13.2> 交易后金额:
80CA9F7900 80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额 //13> 卡片日志:
00B2015c00
00B2025c00
00B2035c00</span>
3.2.2 流程图
3.2.3 注意事项
1. 是特殊的分时,分段扣费交易,分为预授权(冻结金额),预授权完成(扣款)。表示选择或执行脱机预授权交易:DF60的值02,表示选择或执行脱机预授权完成交易: DF60的值03
2. 不支持押金抵扣功能。
3. 更新的行业记录内容由行业自行定义,但是建议包括脱机预授权状态,脱机预授权金额和脱机预授权日期或者有效期。
4. CAPP=2, 9F79=9F79-预授权金额;CAPP=3, 9F79=9F79+预授权金额-实际消费金额。
5. 支持3个脱机预授权交易,第4个返回6971.(pboc3.0可以,pboc2.0不可以,在UPDATE返回6985)
6. CAPP=2.同行业同应用(SFI相同ID),连续执行,返回6972.
7. CAPP=3,无对应ID,返回6973. (pboc 3.0可以,pboc
2.0不可以,在UPDATE返回6985)
8. 脱机预授权,不返回TC密文(9F26)。
9. 在最后一条记录被读出后,检测当前更新的CAPP记录是否与最后一条READ CAPP记录一致,否则返回6974.交易失败,余额返还。
10.Fdda为01时,比较9F69第8字节与DF61值。
11.Fdda完成后,终端保存相关信息,以便上传。
12.多扣的钱优先补到DF63,少扣的钱从9F79取。
13.圈存时,余额上限9F77必须大于等于9F79+未完成的金额,否则返回6A80。
4 扩展应用专有文件
4.1 变成记录文件
4.2 循环文件
支持换乘优惠的应用应将本次交易明细记录在扩展应用循环记录文件中,在换乘优惠时,可读取循环记录文件中的内容作为换乘优惠的依据。
4.3 文件类型
参考资料:中国金融集成电路(IC)卡规范 第14部分:非接触式IC卡小额支付扩展应用规范.pdf
QPBOC扩展应用交易流程的更多相关文章
- Fabric 1.0交易流程
这篇文章详细介绍fabric的交易流程,以图片加文字的形式呈现. Fabric 1.0交易流程 fabric中的所有交易都是通过chaincode执行 1.应用程序客户端通过SDK调用证书服务(CA) ...
- PBOC电子现金的交易流程
做一个电子现金的交易: 第一步当然是选中当前的应用, 方法是调用select命令, 传入当前的应用AID号, 如果卡片的状态码返回9000,则表示选中成功. 下面举一个例子: 发送: 00 a4 04 ...
- HyperLedger Fabric 1.4 交易流程(6.3)
区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程. 在Fabric中, ...
- [转] 深度探索Hyperledger技术与应用之超级账本的典型交易流程
转自: https://blog.csdn.net/HiBlock/article/details/80212499 个人感觉对交易流程描述的比较清楚,转载以备查看. 1 典型交易流程 下图所示为Hy ...
- 详细讲解:零知识证明 之 ZCash 完整的匿名交易流程
作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...
- Hyperledger交易流程
Hyperledger Fabric Network中的角色 在Hyperledger中,由三种类型的角色: Client:应用客户端,用于将终端用户的交易请求发送到区块链网络: Peers:负责维护 ...
- 架构设计 | 基于电商交易流程,图解TCC事务分段提交
本文源码:GitHub·点这里 || GitEE·点这里 一.场景案例简介 1.场景描述 分布式事务在业务系统中是十分常见的,最经典的场景就是电商架构中的交易业务,如图: 客户端通过请求订单服务,执行 ...
- 区块链Fabric 交易流程
1. 提交交易预案 1)应用端首先构建交易的预案,预案的作用是调用通道中的链码来读取或者写入账本的数据.应用端使用 Fabric 的 SDK 打包交易预案,并使用用户的私钥对预案进行签名. 应用打包完 ...
- Elasticsearch扩展X-pack实施流程-实施
Elasticsearch扩展X-PACK实施流程 elasticsearch5.2.1安装X-PACK,对ES集群进行监控,报警,安全验证,报告,图形化操作 注意 版本号需要固定,小版本都不能差,要 ...
随机推荐
- Cocos2dx老版本适配64位
1.出现"__curl_rule_01__ "错误 解决方法: 下载新的第三方libcurl库.替换掉libcurl相关的库和头文件,libcul.a .h文件. 相关路径:co ...
- 解决setInterval计时器不准的问题
在js中如果打算使用setInterval进行倒数,计时等功能,往往是不准确的,因为setInterval的回调函数并不是到时后立即执行,而是等系统计算资源空闲下来后才会执行.而下一次触发时间则是在s ...
- Jquery 对象与 DOM对象的相互转换
在做 web 开发时,经常会用到 jquery 和 dom 对象, 有时候需要在这两个对象间进行切换. Jquery 对象 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuer ...
- Cordova V3.0.0中config.xml配置文件的iOS Configuration
http://www.cnblogs.com/lovecode/articles/3305655.html 轉載這個 <preference> 关于这个标签的可用设置有: Disall ...
- My Sql 1067错误兼编码问题解决
My Sql 大部分都是用绿色版(解压版) 然后注册服务 简单方便. 但是.配置文件头痛的一逼. 首先配置mysql的环境变量. mySQL 环境变量(我的电脑-右击属性-高级-环境变量) MYSQL ...
- WP_图片管理机制/异步读取网络图片
项目有这样的需求, 要求窗口加载一揽子图片,为了不让UI阻塞太久,采用异步读取后绑定显示的方案. 图片的下载应该采用并发的过程(等待网络响应会很耗时,一张一张的下载,等待时间太长) 图片的下载不能占用 ...
- css经验点滴积累
1.filter:alpha(opacity=70);-moz-opacity:0.7;-webkit-opacity: 0.7;-o-opacity: 0.7;-ms-opacity: 0.7;op ...
- HBase简介(很好的梳理资料)
http://www.tuicool.com/articles/iieIz2 一. 简介 history started by chad walters and jim 2006.11 G re ...
- how to extract and decrypt WeChat EnMicromsg.db on Android phone
One of my friend came to me with an Android phone. She saild somehting wrong with the hardware of he ...
- leetcode 101
101. Symmetric Tree Given a binary tree, check whether it is a mirror of itself (ie, symmetric aroun ...