EMV卡+NFC读卡器发送PDOL并获取数据SFI

问题描述

我尝试从我的 emv 卡中获取付款数据,并将其用于 arduino + nfc 模块。它工作正常,但我很难获得 SFI。我在VISA卡上测试过。我收到卡片(答案)的请求,例如:

6F 42 84 07 A0 00 00 00 03 10 10 A5 37 50 0D 56 49 53 41 20 49 4E 46 49 4E 49 54 45 87 01 01 9F 38 0C 9F 66 04 9F 02 06 9F 37 04 5F 2A 02 5F 2D 08 75 6B 72 75 65 6E 64

所以,是我的等待:

9F66 04
9F02 06
9F37 04
5F2A 02 

然后我发送:

9F66 (TTQ) - 0xF8,0x00,0x40,0x00
9F02 (Amount) - 0x00,0x14,9F37 (Rand num) - 0x36,0xD3,0xEC,0x39,5F2A (currency code) - 0x09,0x80

我得到了答案(来自 track2 的数据已更改):

77 66 82 02 00 00 94 04 08 02 02 00 57 13 44 41 11 11 11 11 11 97 D2 99 02 01 17 32 43 14 00 00 0F 5F 34 01 00 9F 10 07 06 01 11 03 80 20 00 9F 26 08 C9 D9 34 2A 7D 58

从这些数据中,我得到了应用程序文件定位器 (AFL) 和它:

08 02 02 00

我将其解码以发送 apdu,例如:

0x00,0xb2,0x02,0x0c,0x00

并得到答案:

70 0A 9F 07 02 C0 80 5F 28 02 08 04 90 00

而且它非常简约,没有任何有用的数据/信息(需要创建字段 55)。我在搜索 AFL 必须有不止一条记录,需要让它循环,但我只得到一条。也许TTQ是错误的?请帮忙!谢谢!

解决方法

此案例适用于 EMVCo C-3 Visa PayWave 内核的非接触式 MSD。 根据 EMVCo C-3 PayWave AFL 标签 0x94 在 GPO 回复中是可选的。

在 GPO 重放中,您已经收到所有必要的数据,包括 AIP、AFL、CSN、Track 2、IAD 和密码值。 IAD 标签 0x9F10 显示第一次生成 AC 后返回的 AAC 密码,即拒绝。 此数据足以继续并完成交易。

您可以使用 0x9F66 TTQ 值来排除 MSD 支持。从实时终端中删除了非接触式 MSD 支持。 强制非接触式 EMV 您可能会获得其他 AFL 值,或者您将再次直接在 GPO 回复中获得所有标签。

您可以在此处找到 PayWave C-3 的 TLV 解析工具 - https://iso8583.info/lib/EMV/C3/TLVs

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...