【问题标题】:EMV Contactless - GPO with PDOLEMV 非接触式 - 带 PDOL 的 GPO
【发布时间】:2019-01-22 16:30:16
【问题描述】:

我需要编写一个可以生成 GET PROCESSING OPTION 的方法,而不管带有 EMV 非接触式的 PDOL。 如何使用正确的数据格式化 GPO 命令?

这是数据:

6F 4E 84 07 A0 00 00 00 03 20 10 A5 43 50 0D 56 49 53 41 20 45 4C 45 43 54 52 4F 4E 87 01 01 9F 38 18 9F 66 04 9F 0569 06 1 9F 0203 F 05 5F 2A 02 9A 03 9C 01 9F 37 04 5F 2D 08 69 74 65 6E 64 65 66 72 BF 0C 08 9F 5A 05 31 09 78 03 80

PDOL 是: 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04

什么是正确的 GPO 命令 APDU? 谢谢。

【问题讨论】:

  • “不管 PDOL”是什么意思?要构建 GPO,您需要了解 PDOL,即使您不知道特定的数据对象(通过使用修剪和填充规则,在这种情况下您用二进制零填充它们)。在您的情况下,该命令将具有 33 个字节长的 PDOL 缓冲区。 EMV 规范非常清楚地描述了该过程。

标签: java nfc emv


【解决方案1】:

GPO命令构造如下:

CLA '80'
INS 'A8'
P1 '00'
P2 '00'
Lc var.
Data PDOL Related Data
Le '00'

根据您的 PDOL,您需要提供以下数据:

9F66 (?) 4 bytes
9F02 (amount authorized) 6 bytes
9F03 (amount other) 6 bytes
9F1A (terminal country code) 2 bytes
95 (TVR - Terminal Verification Results) 5 bytes
5F2A (terminal currency code) 2 bytes
9A (transaction date) 3 bytes
9C (transaction type) 1 bytes
9F37 (unpredictable number) 4 bytes

(您需要解析PDOL,但您也可以使用在线TVR decoder 来解析它。)

基本上,您需要使用请求标签的值(按照它们出现的顺序)填充 DOL。例如,如果您只填充金额,则 DOL 将如下所示:

000000001122334455660000000000000000000000000000000000000000000000

您的 GPO 命令将是:

80A8000023832100000000112233445566000000000000000000000000000000000000000000000000
            ^^

其中十六进制值21(即 33)是 DOL 的长度。

希望这会有所帮助。您可以参考 EMV 规范了解更多详细信息。 https://www.emvco.com/emv-technologies/contactless/

【讨论】:

  • 我尝试发送该 GPO 命令,但我得到状态 6985,没有响应数据
  • 可能您没有提供所有必需的数据,或者 DOL 中的数据格式不正确。
  • PDOL 中必须包含哪些数据?例如,在其他情况下,我为县代码输入了零
  • 您应该提供所有这些值,除了代表现金返还金额的 9F03。
  • 你知道获取所有这些数据的方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 2019-05-15
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多