java - EMV 非接触式 - 带 PDOL 的 GPO

标签 java nfc emv

我需要编写一个方法,该方法可以生成 GET PROCESSING OPTION,无论 PDOL 与 EMV Contactless 无关。 如何使用正确的数据格式化 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 02 06 9 F 03 06 9F 1A 02 95 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 是什么? 谢谢。

最佳答案

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/

关于java - EMV 非接触式 - 带 PDOL 的 GPO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54312578/

相关文章:

java - 如何将 JMX 与 Spring 集成?

ios - 是否可以隐藏 NFC 阅读 session 的 iOS 系统警报

python - 如何检索重要的智能卡信息

c# - Girocard-Maestro 智能卡读卡器问题,读取持卡人姓名和 IBAN

java - 将动态 NdefRecords 发送到构造函数

apdu - 建议 EMV 卡需要回应吗?

java - 将 setVisible() 函数放在函数的开头是否与我将它放在该函数的末尾有所不同?

java - JOOQ - 未应用内联转换器

java - freemarker viewpage 可以 'user' 编辑和保护吗?

c - 使用 NXP Reader Library 读取 NFC Mifare 卡