2

EMV Book_3 说:

CLA:80
INS:A8
P1:00
P2:00
Lc:var
Data:处理选项数据对象列表(PDOL)相关数据
Le: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"

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

4

1 回答 1

2

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

  • 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,如上所述。别忘了最后的乐!

于 2015-01-16T14:43:50.510 回答