如何正确构造“获取处理选项”命令消息



EMV Book_3 说:

共和级联赛: 80
INS: A8
P1 : 00
P2 : 00
Lc : var
数据:处理选项数据对象列表 (PDOL) 相关数据
乐: 00

我的 APDU 命令看起来像:"80 A8 00 00 0C PDOL 00",其中 PDOL = "9F 66 04 9F 02 06 9F 37 04 5F 2A 02" .

我收到:6A 80我正在使用的CC是Visa PayWave非接触式。完整的 FCI(文件控制信息)专有模板是:

"50 0C 56 69 73 61 20 43 6C 61 73 73 69 63 87 01 01 9F 38 0C 9F 66 04 9F 02 06 9F 37 04 5F 2A 02 5F 2D 04 62 67 65 6E"

我错过了什么?正确的"获取处理选项"命令是什么?

PDOL 标记表示由

下一个指定字节数指定的标记表示要连接到命令末尾的数据。在您的问题中,PDOL 标签 9f 38 指定下一个 0C十六进制 (12dec) 字节指示要发送到卡的数据。你有:

  • 9f 66 04 - 标签 9f 66 表示终端交易限定符。因此,PDOL 必须将终端事务限定符的 4h(十六进制)字节编码到四个字节中。

  • 9F 02 06 - 标签 9F 02 代表授权金额。PDOL 列表必须将授权的数量添加到其中,并编码为 6h 字节。

  • 9f 37 04 - 标签 9f 37 代表不可预测的数字,因此将这样的数字编码为 4 个字节并将其添加到列表中

....

以类似方式翻译其余部分。列表必须按照从卡接收的标签数据中指定的顺序排列,例如在您的列表中,TTQ 必须排在第一位,然后是授权金额等。根据结果,数据的总大小应为 4+6+4+2= 16 = 10h 字节。因此,带有示例数据的最终命令将如下所示:

                        <------the data concatenated together--------->
=> 80 a8 00 00 12 83 10 f3 20 40 00 00 00 00 01 00 00 04 04 06 03 05 08 00 
注意

:注意 Lc、12h 的值及其后面的两个字节。十六进制值0x83必须紧跟在 lc 之后,它之后的字节应该是数据的实际长度,即 10h,因此如上所述,Lc = 10h + 2 = 12h。别忘了最后的乐!

相关内容

  • 没有找到相关文章