Visa EMV卡SELECT命令后GPO响应异常问题求助
EMV交易GPO命令异常问题解答
一、两个AID的PDOL差异原因
A000000003000000是Visa的基础兼容AID,对应传统磁条卡迁移到EMV的简化应用,这类应用不强制要求终端提供处理参数,因此SELECT响应中无PDOL。A0000000031010是Visa的借记/贷记核心AID,完全符合EMV规范,需要终端提供交易金额、随机数等关键处理参数,所以SELECT响应会返回PDOL(标签9F38)明确要求的数据对象列表。
二、有无PDOL的GPO命令处理方式
无PDOL的情况
当SELECT响应无PDOL时,GPO命令无需携带任何PDOL对应数据,发送最小结构的指令即可:
80A80000028300
- 解析:
80A8为GPO指令码,0000是默认P1P2参数,02是后续数据长度,8300表示PDOL数据模板(标签83)长度为0,无实际参数数据。
有PDOL的情况
- 从SELECT响应中提取PDOL(标签
9F38),解析其中的标签和对应长度(比如9F2608代表标签9F26,需填充8字节数据); - 严格按照PDOL中标签的顺序,拼接终端侧对应的参数值(如应用密码、交易金额、终端随机数等);
- 将拼接后的参数数据放入GPO的
83模板中,计算总长度后填入Lc和83标签的长度域; - 构造完整GPO命令发送给卡片。
三、AID A0000000031010的GPO命令示例
以下基于Visa常见PDOL(9F2608 9F0206 9F3704 9F1A02 9505 5F2A02 9A03 9C01 9F3303 9F3403)构造示例命令,实际需以卡片返回的PDOL为准:
80A800002E832C1234567890ABCDEF000000010000ABCD123401560000000000015624052000E0F8C0000000
- 参数对应说明:
9F26(应用密码):1234567890ABCDEF9F02(交易金额,100.00元):0000000100009F37(终端随机数):ABCD12349F1A(国家代码,中国):015695(终端验证结果):00000000005F2A(交易货币代码,人民币):01569A(交易日期,2024-05-20):2405209C(交易类型,消费):009F33(终端能力):E0F8C09F34(持卡人验证方法):000000
内容的提问来源于stack exchange,提问作者tsegereda
相关产品推荐
相关产品推荐

