跟借贷记交易类似..
(一)文档说明
(二)资料解析
银联采用小额免密免签的交易来加快交易速度。
1.小额非接免密免签的实现,主要控制消费跟预授权的非接交易,限额通过参数下载得到。是否开启也有后台控制 需要后台切换到支持免密免签的商户来测试。
2.22域一般是 072(07表示非接,2表示不需要密码) ,没有26域(密码长度域)没有52域(密码域)。53域第一个数字为0。(0表示pin不带主账号加密,2表示pin带主账号加密)。
3.9F6C是卡片返回的。我这张卡返回的是2个字节的00。
4.BIN B表是所有的贷记卡都支持,借记卡部分支持。通过4F (AID)来判断是什么卡。
(三)源码片段分析
//判断9F6C
//支持超过一个CVM的终端应当查询卡片交易属性(Tag 9F6C)的第1字节第8位(需要联机PIN标识)、
//第2字节第8位(CDCVM已执行标识)、以及第1字节第7位(需要签名标识),决定卡片选择哪个CVM。
//如第1字节位8=“1”,终端应当执行联机PIN校验,不再查询第2字节位8和第1字节位7;如第1字节位
//8=“0”,终端应当查询第2字节位8。如第2字节位8=“1”(卡片端CDCVM已执行),终端应认为卡
//片要求CDCVM作为CVM方式并且已完成校验;如第2字节位8=“0”,则终端应当检查第1字节位7。除
//非终端支持联机PIN,否则卡片不会设置第1字节第8位。卡片逻辑不会将第1字节位8和位7都设置,但
//第2字节位8可能与第1字节位8或位7同时存在。
Bool _check_9F6C()
{
u8 ptmp[16] = {0};
int ilen = 0;
ilen = qpboc_GetData(0x9F6C, ptmp);
if(ilen <= 0)
{
return FALSE;
}
if((ptmp[0]&0x80) == 0x80) //是否需要联机pin 。需要联机pin返回false
{
return FALSE;
}
else
{
if((ptmp[1]&0x80) == 0x80) //CDCVM 是否已经执行。已经执行 反馈TRUE
{
return TRUE;
}
}
return FALSE;
}
(四)常见问题及分析
1.注意免密免签的条件(消费交易跟预授权交易.非接联机交易),
2.免密必免签,关注下打印小票的格式.不必出现持卡人签名留白..
3.GPO处理完成后,终端通过Get Data获取Tag 9F51(应用货币代码),如Tag 9F51为人民币,则该卡视为“内卡”处理;如Tag 9F51非人民币,则该卡视为“外卡”处理
扫描关注我
(转载本站文章请注明作者和出处 Undefined)