【问题标题】:How to correctly construct Get Processing Option command message如何正确构造获取处理选项命令消息
【发布时间】:2015-01-09 11:45:40
【问题描述】:

EMV Book_3 说:

CLA:80
INS:A8
P1 : 00
P2 : 00
LC : 变量
数据:处理选项数据对象列表 (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"

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

【问题讨论】:

  • 请参阅this answerthis answer,了解如何根据您从卡收到的 PDOL 正确形成 PDOL 相关数据。

标签: credit-card emv


【解决方案1】:

PDOL标签表示下一个指定字节数指定的标签代表要连接到命令末尾的数据。在您的问题中,PDOL 标签 9f 38 指定接下来的 0Chex (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,如上所述。不要忘记最后的 Le!

【讨论】:

  • 谢谢彼得!有没有办法读取不可预测数的 4 个字节或授权量的 6 个字节,或者我应该只放随机数?
  • 这些是应该预先定义的变量,因此它们应该在交易之前以某种方式保存在阅读器设备/终端中。然后可以在需要的地方插入它们。
猜你喜欢
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 2017-09-16
  • 2016-02-10
  • 1970-01-01
相关资源
最近更新 更多