转载请注明出处

作者:小旭

这一块的内容,我觉得文档上讲的比较清晰,而且举例也很好,所以大部分都是拷贝文档的内容过来,一边看一边分析文档的含义。

这一部分用到2类比较重要的数据,分别是

发卡行行为代码(IAC ) 发卡行行为代码,来自读记录文件卡片返回

发卡行行为代码有三个数据元,即发卡行行为代码-拒绝、发卡行行为代码-联机、发卡行行为代码-缺省。每个发卡行行为代码由一组与终端验证结果(TVR)中的位相对应的位

组成

IAC -拒绝位设置为“1”反映了交易被脱机拒绝的终端验证结果条件

IAC -联机位设置为“1”代表需要联机授权条件

IAC -缺省位设置为“1”是当联机处理不可行时脱机拒绝所需的条件

终端行为代码(TAC)  TAC 有三个数据元,它们都是由一系列的位组成的,这些位对应于 TVR 中的数据位。终端行为代码来自emv参数下载交易。

TAC-拒绝  收单行设置的能够导致交易脱机拒绝的TVR 条件位

TAC-联机  收单行设置的能够导致交易联机的TVR 条件位

TAC-缺省 收单行设置的在交易联机无法进行的情况下能够导致脱机拒绝的TVR 条件位

这6个代码的查看方法和TVR查看方式一样,使用时也是配合TVR进行使用。

检查过程完全由终端利用先前从卡片获取的IAC数据和终端保存的TAC数据进行,无需与其它设备进行交互处理。
在处理过程中,终端比较IAC和TAC中与终端验证结果(TVR)对应的位。如果TVR和IAC或TAC中相应的位都被设置为“1”,则采纳对应的IAC或TAC。示例如下:

终端的处理步骤如下:
步骤 1:终端比较 IAC-拒绝和 TVR。如果不存在 IAC-拒绝,则采用缺省值‘0000000000’。如果IAC-拒绝和 TVR 的任何对应位同时设为‘1 ’,终端必须:
——   把授权响应码置为‘Z1’(脱机拒绝);
——   把 GENERATE AC(产生应用密文)命令的 P1 参数设为请求应用认证密文(AAC);
——   进行请求应用密文步骤。
步骤 2:终端对 TAC-拒绝和 TVR 进行类似的比较。如果不存在 TAC-拒绝,则采用缺省值‘0000000000’。如果 TAC-拒绝和 TVR 的任何对应位同时设为‘1 ’,终端必须采取与 IAC-拒绝相同的处理。

步骤 3:如果终端具有联机处理能力(仅联机的终端除外),则它应该使用 IAC-联机和TAC-联机与TVR 比较。如果 IAC-联机不存在,则使用缺省值‘FFFFFFFFFF’,如果 TAC-联机不存在,则使用缺省值‘0000000000’。如果 IAC-联机和 TVR 的任何对应位同时置为‘1’,则终端:
——  把产生应用密文(GENERATE AC)命令的 P1 参数设为授权请求密文(ARQC),以进行联机授权请求;
——  进行生成应用密文步骤。
对于仅联机的终端,如果在步骤 1 和步骤 2 中未决定脱机拒绝,则终端不必进行 IAC-联机和 TAC-联机与 TVR 的比较,而直接按照 IAC-联机或 TAC-联机和 TVR 的任何对应位同时置为‘1’的情况来处理,通过请求联机来继续进行交易。
步骤 4:如果终端是仅脱机终端或者当有联机处理能力的终端出于某种原因不能联机时,则使用 IAC——缺省和 TAC——缺省与 TVR 比较。如果没有 IAC-缺省,则使用缺省值‘FFFFFFFFFF’,如果 TAC——缺省不存在,则使用缺省值‘0000000000’。如果比较结果的任何对应位同时为‘1’,则终端:
——  把授权响应码置为‘Z3’(不能联机,脱机拒绝),仅脱机终端授权响应码置为‘Z1’;
——  把产生应用密文(GENERATE AC)命令的的 P1 参数设置为请求 AAC;
——  进行生成应用密文步骤。

对于仅联机的终端,当无法进行联机时,它可以选择正常的处理TAC/IAC-缺省,也可以选择跳过TAC/IAC——缺省的处理。对于跳过TAC/IAC——缺省处理的终端应该直接按照TAC/IAC——缺省与TVR匹配进行处理,并且在第2个GENERATE AC请求AAC。对于正常处理TAC/IAC——缺省的终端,应该根据TAC/IAC——缺省与TVR匹配的结果生成应用密文,这时仅联机的终端可能脱机完成交易。
步骤 5:如果在以上的比较中没有出现对应位同时为‘1 ’的情况,则终端:
——  把授权响应码置为‘Y1’(脱机批准);
——  把 GENERATE AC(请求应用密文)命令的 P1 参数设置为请求交易证书(TC);
——  进行请求应用密文步骤。

这里的GENERATE AC就是我们所说的第一次GAC,如果脱机批准了,获取到的TC值需要在上送交易明细时上送到后台。如果卡片返回ARQC,那么在联机交易结束后,还需要再做第二次GAC,这个内容后续再讨论。

上述5个步骤,文档描述也是很清晰了,不需要再做什么多余的解释了。

再列举一个GAC1指令的例子来看看

GAC1时候指令的数据源主要是利用卡片返回的CDOL1来组织数据

sned:58
80 AE 40 00 34 00 00 00 00 01 00 00 00 00 00 00
00 01 56 00 80 00 00 00 01 56 20 11 01 00 55 7B
D7 85 19 39 29 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00
rec:35
80 1E 40 01 41 D1 F6 B3 7D 6A CA F8 E2 07 02
01 03 90 00 02 01 0A 01 00 00 09 00 93 3C 7F 1B
FF 90 00 

接受返回的数据总共是30个,返回数据采用80作为模板(77时需要解析TLV),而是将数据域第一个字节是9F27,应用密文信息bit8-bit7,bit6到bit1还需要终端做判断,终端要根据bit6到bit1对交易的执行做出分析和判断。当前为40(0100 0000),即当前密文为TC(ARQC的情况和ACC就再看文档了,这里不描述了)

后面两个字节ATC 0140 ,再后面8个字节为应用密文,即TC值。再后面的是发卡行应用数据。

处理完GAC1的数据后,终端行为分析就结束了。

如果GAC1过程中,卡片能够成功返回TC,则脱机消费已经成功(目前只考虑了脱机数据认证方式为SDA和DDA的情况,CDA的情况比较复杂,后面专门写一篇作讨论),终端后续就要进入报文处理流程。

如果每次脱机交易能走完这一步都很开心,因为只要走到这一步,终端就要开始打单了…………

EMV技术学习和研究(九)终端行为分析相关推荐

  1. EMV技术学习和研究

    今天在工作中碰到一些问题,就找到了这篇文章,个人感觉很好,保存下来,以供随时学习. 转载地址:EMV技术学习和研究 作者:小旭 目的: 应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是 ...

  2. EMV技术学习和研究(一)开篇

    在这个行业也3年多了,一直想写写关于EMV和PBOC的内容,但是总觉得自己懂得还不够,对EMV和PBOC的理解还不够深入. 但是后来想想,如果还不开始自己写一点东西的话,可能这个事情也就永远的搁浅了, ...

  3. EMV技术学习和研究(五)脱机数据认证之DDA

    转载请注明出处 作者:小旭 有了前面对SDA的熟悉,接下来再研究DDA就会感觉比较轻松一点了. 用于动态数据认证的数据和SDA部分所描述的一样,也是基于SFI的来组织的. 特别说明一下:之前有一个地方 ...

  4. EMV技术学习和研究(十一)QPBOC

    转载请注明出处 作者:小旭 Q在选择完应用之后,是有一步交易预处理,交易预处理是对交易限额的处理,在交易开始之前首先对交易金额做出计算和判断.有点类似于借贷记交易中终端风险管理中所完成的步骤.关于交易 ...

  5. EMV技术学习和研究(七)持卡人验证

    转载请注明出处 作者:小旭 持卡人认证部分,EMV和PBOC是有区别的,EMV有脱机加密PIN认证,PBOC没有:PBOC有持卡人身份证件验证,但是EMV没有. 持卡人验证主要基于两个数据要素,AIP ...

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

    转载请注明出处 作者:小旭 借贷记和Qpboc在应用初始化和读应用数据方面的流程还是比较相似. 先看借贷记和电子现金的处理流程 应用选择完成后,终端获取到了PDOL数据(特别说明:这个不是必须的,卡片 ...

  7. EMV技术学习和研究(十二)交易限额

    转载请注明出处 作者:小旭 EMV参数里面有几个限额,但是感觉这几个限额都比较容易混淆和模糊,下面一个一个的来讨论一下. 终端最低限额(9F1B).终端电子现金交易限额(9F7B).非解最低限额(DF ...

  8. EMV技术学习和研究(二)应用选择

    转载请注明出处 作者:小旭 目的: 应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的.终端的AID列表是通过AID下载交易从服务端获取,卡片的AID是在做卡片个人 ...

  9. EMV规范学习与研究(三)——应用初始化

    应用初始化目的: ①通知卡片新交易开始: ②将交易所需的数据发送给卡片: ③从卡片上返回AIP和AFL: ④决定交易是否被允许执行: 应用初始化步骤:(GPO命令的格式) 设置TVR和TSI中所有位为 ...

最新文章

  1. J - 哈密顿绕行世界问题
  2. XML请求数据和解析
  3. boost::uuids::random_generator相关的测试程序
  4. DCMTK:使用JPEG-LS传输语法压缩DICOM文件
  5. 深入浅出LVS:企业集群平台负载均衡的三种模式和算法实现
  6. 最新突破!科学家研发出世界首款精神控制手臂机器人;近日Kubernetes 1.15 正式发布;雷军公布小米手机产品线布局……...
  7. Qt工作笔记-Qt5 利用QJson从文件读取Json并解析
  8. 设置element-iu中table滚动条位置
  9. php 改变页面元素,动态更改网页HTML元素(对象)内容_经验交流
  10. k型热电偶材料_热电偶温度计的二三事
  11. R语言ETL工程:插入与合并(add/bind)
  12. js中普通函数与函数对象
  13. matlab堆积式玫瑰图,[转帖]堆积式南丁格尔玫瑰图模板
  14. 计算机设计大赛感言,电子设计大赛获奖感言精选
  15. EDG获得S11冠军
  16. Solr与MongoDB集成,实时增量索引[转]
  17. 12.14黄金白银欧美盘走势分析及期货原油操作建议
  18. Lake Shore—EMPX-H2 型低温探针台
  19. 两年过去了,4399依旧坚挺,Flash还能继续?
  20. python中加减乘除_Python基础算法综合:加减乘除四则运算方法

热门文章

  1. request.setattribute详解
  2. A5M2数据库工具下载
  3. 基于微信小程序的电影院购票平台——计算机毕业设计
  4. 趋势一次一单EA,不加仓不网格,每单带止损止盈,风险可控
  5. input 标签 autofill属性生效导致的输入框背景色变成黄色(或其他色)的解决办法
  6. 移动开发的项目管理心得
  7. ubuntu 安装mysql 源码,命令ubuntu上用源代码安装mysql的详细操作说明
  8. 分享几个实用的chatgpt网址
  9. Sonatype Nexus Repository Manager
  10. 【数据库数据恢复】linux操作系统下MYSQL数据库恢复案例