PBOC流程解析(七) 终端行为分析/卡片行为分析

POS规范 -- IC卡操作流程 2016/09/18

终端行为分析/卡片行为分析

(一)文档说明

终端行为分析

具体说明可以查看文档规范

卡片行为分析使用的终端数据

(二)资料解析

当卡片收到终端的应用密文请求时,卡片就执行卡风险管理检查,来决定是否要 改变终端设定的交易处理。IC卡可以决定后继交易的处理方式:

  • ● 同意脱机完成
  • ● 联机授权
  • ● 拒绝交易
  • ● 拒绝交易

GAC返回格式1(CDA比较复杂暂不讨论)对象连接而成,各数据对象之间没有分隔符(标签和长度)

值  					存在性 
密文信息数据  				必备 
应用交易计数器(ATC) 			必备 
应用密文(AC)  				必备 
发卡行应用数据  				可选 

举例:

send:根据8C得到CDOL1 9F0206 9F0306 9F1A02 9505 5F2A02 9A03 9C01 9F3704 9F2103 9F4E14
组包数据如下:
000000000002
000000000000
0156
000004E000
0156
160601
00
719B5D0B
095214
0000000000000000000000000000000000000000
得到发送: 80AE8000340000000000020000000000000156000004E000015616060100719B5D0B095214000000000000000000000000000000000000000000
得到返回:  801E 80 18D7 A013030A566F8FAF 070D0103A02002010A010000000000B53DAF03 9000
80      : 9F27 (1字节定长)
18D7	: 9F36 (2字节定长)
A013030A566F8FAF	:  9F26 (8字节定长)
070D0103A02002010A010000000000B53DAF03		:  9F10 (变长)

接下来我们就要按照报文组织55域数据上送进行交易了

(三)源码片段分析

终端行为分析–终端比较IAC和TAC中与终端验证结果(TVR)对应的位

static GenAC check_tvr(uchar * auth_code) 
{
    extern uchar * g_tvr;
    int i;
    uchar iac_default[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
    uchar iac_decline[] = {0x00, 0x00, 0x00, 0x00, 0x00}; /* default value */
    uchar * ptmp;
    if (auth_code == NULL)  /* use AAR to indicate an error */
	{
        return GAC_AAR;
    }
    if ((ptmp = emvget_appdata(0x9F0E, NULL)) == NULL) /* IAC-Decline */
	{ 
        ptmp = iac_decline;
    }
    for (i = 0; i < 5; i ++) 
   	{
        if ((*(ptmp + i) & *(g_tvr + i)) || (g_emvconfig._tac_denial[i] & *(g_tvr + i))) 
        {
            auth_code[0] = 'Z';
            auth_code[1] = '1';
            return GAC_AAC;
        }
    }
    ....省略
 }

(四)常见问题及分析

1.这个步骤比较多异常,不过可以查看一下TVR(95),以及比较下IAC-拒绝的条件,便可查出来原因.

2.如果只考虑脱机数据认证为SDA/DDA的情况下,这里已经交易成功(脱机),或者去联机交易(已经得到ARQC)

3.后续相关处理 联机处理 如果卡片返回ARQC,终端则向主机发送联机报文,报文中包括ARQC。 交易结束 如果要求联机处理,但终端无法联机发送报文,则执行附加的终端和卡片处理。 终端用发卡行行为码IAC-缺省和终端行为码TAC-缺省来执行附加分析(类似终端行为分析)以决定在第2个GENERATE AC命令中要求的密文类型(AAC或TC)。

这个时候首先又需要检查IAC-缺省和TAC缺省执行终端行为分析(这部分在之前终端行为分析中有表详细的描述),并且根绝结果发送第二次GAC指令。
如果第二次GAC指令能够成功返回TC,那么脱机交易批准,如果返回ACC,则交易拒绝,,这个时候不可能再返回ARQC了
如果脱机成功则响应码为Y3,但是,如果终端在第一次GAC就获取TC批准脱机交易的话,响应码是Y1,所以通过Y1和Y3就可以知道是哪一种脱机批准。


扫描关注我

(转载本站文章请注明作者和出处 Undefined

Post Directory