这一节我们的工作量可就小多了
(一)文档说明
应用版本号检查
终端检查终端上的借记/贷记应用版本号与卡片上的应用版本号是否一致。应用版本号由支付系统 制定区分遵循不同版本规范的应用。应用版本号为两字节二进制变量。如果终端与卡片上的应用版本号 不一样,则终端设置TVR中的“IC卡和终端应用版本不一致”位为‘1’。
应用用途控制检查
AUC为两字节的二进制变量,定义了卡片上应用的交易能够进行的条件。可以限定卡片在哪些区域(国内、国际) 哪些类型终端(ATM、非ATM)、进行哪些类型(取现、返现、商品、服务)的交易。 如果卡片中的AUC存在,则终端应进行如下检查:
——如果终端为ATM,则AUC中的“ATM有效”位必须为‘1’;
——如果终端不是ATM,则 AUC中的“在非ATM终端上有效”位必须为‘1’;
——如果卡中AUC和发卡行国家代码同时存在,则终端须进行表17 中描述的检查。
应用生效日期检查
如果卡片上应用生效日期(标签5F25)存在,则终端应进行应用生效日期检查,通过比较应用生效 日期(标签5F25)与当前日期,判断卡片上的应用是否已开始生效。如果卡片上的应用生效日期(标签 5F25)晚于终端当前日期,则终端将TVR中的“应用尚未生效”位设为‘1’。
应用失效日期检查
应用失效日期(标签5F24)是卡片上必须存在的数据,因此终端必须进行应用失效日期检查,比较 应用失效日期 (标签5F24) 与当前日期,判断卡片上的应用是否已过期。如果卡片上的应用失效日期 (标 签5F24)早于终端当前日期,则终端将TVR中的“应用已经失效”位设为‘1’。
(二)资料解析
这里为转载自网上的内容 主要判断失效日期,生效日期 处理限制完成三个判断。
第一,应用版本号比较。
判断终端的应用版本(9F09)和卡片返回的应用版本(9F08)是否一致,如果卡片没有返回应用版本,则默认应用版本相同。如果有则比较是否相等。
这个限制条件是比较松的。
第二、应用用途控制
卡片会返回一个AUC(9F07),通过判断这个数据域来允许或者拒绝交易。
判断的逻辑也很清晰,比如一个pos终端,判断AUC的标志位给出ATM有效,除ATM外的终端无效,那POS终端肯定要拒绝这个交易了。这种测试我也是遇到过的,后来分析数据才搞清楚AUC的意义。
或者就是根据终端的国家代码和卡片的国家代码是否一致来判断为国际交易还是国内交易。AUC的各个位又明确给出了国际交易和国内交易的允许情况,终端根据当前交易的状态,以及这些位来判断交易允许或者拒绝。
第三、卡有效期判断
这个理解起来就更容易了,卡片会返回生效日期和失效日期,终端必须保证当前日期是在生效日期和失效日期之间才允许交易,否则拒绝交易。
如果因为上述三个条件不满足而拒绝交易的,TVR中都可以通过标志位明确的看出原因
(三)源码片段分析
1.判断应用版本号
if ((pdata = emvget_appdata(0x9F08, NULL)) != NULL &&
(pdata2 = emvget_appdata(0x9F09, NULL)) != NULL)
{
if (memcmp(pdata, pdata2, 2) != 0)
{
tvr_set(APP_VER_NOT_MATCHED);
}
}
(四)常见问题及分析
扫描关注我
(转载本站文章请注明作者和出处 Undefined)