EMV技术学习和研究(三)应用初始化&&读应用数据

作者:小旭

 

借贷记和Qpboc在应用初始化和读应用数据方面的流程还是比较相似。

先看借贷记和电子现金的处理流程

应用选择完成后,终端获取到了PDOL数据(特别说明:这个不是必须的,卡片也可以不给终端提供PDOL,如果终端没有获取到PDOL,则GPO数据域直接传递8300,这个在L2测试中会有案例;如果卡片不提供PDOL的话,后续这张卡是不能做电子现金和Q的交易,但是至于为什么会存在这种卡,是处于什么样的目的,我之前有咨询过卡商,也没有得到一个比较合理的解释,如果有比较清楚这一点的,还希望留言回复,多谢了),比如之前的log日志中,TAG 9F38的内容是

  1. 9F 38 09 9F 7A 01 9F 02 06 5F 2A 02 5F 2D 02  

这里面可以看到PDOL的内容

  1. 9F 7A 01 9F 02 06 5F 2A 02 5F 2D 02  

这里包含了4个tag,这四个tag的数据就是作为GPO指令数据域传送给卡片。
GPO指令具体格式不再讨论了,文档讲的比较清楚,我也是看文档过来的,这里分别举一个例子,作为讨论素材。

数据借贷记、电子现金交易GPO返回有两个数据,AIP和AFL。

借贷记、电子现金GPO范例:

  1. send:17  
  2. 80 A8 00 00 0B 83 09 01 00 00 00 00 00 05 01 56   
  3. 00   
  4.   
  5. rec:23  
  6. 80 12 7C 00 08 01 02 00 10 01 03 01 18 01 02   
  7. 00 20 01 01 00 90 00   

发送指令中标签83后面就是GPO的数据,这个数据来源就是根据PDOL获取。

接受返回数据中7C00为AIP,后续16个字节为AFL,AFL如何分析,文档上也描述的比较清楚。

终端根据AFL的情况,循环读记录文件,并且将记录文件中获取到的数据进行保存。

还有一个特殊的地方,GPO时候返回80+AIP+AFL并不是唯一的,还有可能返回77的tlv格式(根据文档加个人理解,应该是在支持CDA的时候,会存在这种情况),这个时候需要去用tlv的方式去解析tag,AIPtag为82,AFL的为94,最总解析出来的效果是一样的。

特别说明:pboc2.0和3.0规范在处理AFL的时候有所不同,下面把不同点列出来讨论一下(来自China's Financial IC群的讨论分析)。

第一个修改点:

2.0当中如果读记录读到了终端不存在的tag(也就是一般终端可能未定义这样的tag列表,读记录的时候读到某个tag,但是终端不知道是什么数据)将其忽略。

3.0修改这个点为,如果读到不存在的tag并且TLV格式正确,需要将其保存起来以备后用。

第二个修改点:

2.0有一个终止交易的条件:一个数据对象在读记录中出现超过一次,则交易终止。

3.0修改为:一个数据对象在读记录中出现两次或两次以上时,则终止交易。

第三个修改点:

3.0增加了一种终止交易的情况:如果一个读记录中获取到一个GPO已经返回的数据,则交易终止。

这个情况我个人理解为:应该只会在Qpboc流程中出现,因为借贷记和电子现金流程,GPO只有AFL和AIP,这两个数据对象也不可能在读记录中返回。

这几个点的改动,将会导致emv内核有一些修改。
Q GPO范例:

  1. send:41  
  2. 80 A8 00 00 23 83 21 B6 00 00 00 00 00 00 00 10   
  3. 00 00 00 00 00 00 00 01 56 00 00 00 00 00 01 56   
  4. 11 03 30 00 E5 19 21 7B 00   
  5.   
  6. rec:82  
  7. 77 4E 82 02 7C 00 94 0C 10 05 08 01 18 01 02 00   
  8. 48 01 01 00 9F 36 02 06 A1 9F 26 08 C9 67 B7 1D   
  9. 1C EA 1F FD 9F 10 0F 07 02 01 03 90 00 00 01 06   
  10. 01 00 00 02 00 00 57 13 62 17 99 55 10 00 00 11   
  11. 29 5D 49 12 22 04 41 06 00 00 0F 9F 6C 02 20 00   
  12. 90 00   

发送的数据域也是根据PDOL来填充的。
为了提高交互速度,减少终端与卡片交互次数,为此提高了单次交互的数据量,所以Q的GPO返回的数据量比较大,除了AIP和AFL之外,还有应用密文,交易计数器,发卡行应用数据,二磁道数据等多个数据。

QPBOC联机和QPBOC脱机的GPO响应数据有比较大的区别(3.0规范12中的表11和表12有非常清晰的描述)。对于GPO返回数据的处理,后续在脱机数据认证的时候再做讨论了。

因为借贷记电子现金和Q在GPO之处有很大的差异,就导致了他们两类交易从GPO之后开始(读应用数据除外)的流程有了很大的变化。

 PBOC3.0在持卡人姓名一个5F20和9F0B的处理做了一些改动。原来的9F0B是对5F20在长度不足的情况下做一个补充。现在直接根绝持卡人姓名的长度,选择使用9F0B或者5F20.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值