3

我正在使用 Java 代码和 Android NFC 功能与非接触式支付卡进行通信。

我的代码适用于一堆 Visa 和 MasterCard,但我遇到了与 Visa 卡的特定子类别有关的问题。

以下是我采取的步骤和遇到的问题:

  • 我使用 PPSE 识别应用程序
  • 选择应用程序 AID (A0000000031010) 文件控制信息包括我构建的 PDOL
  • 发送一个获取处理选项

在这一点上,我得到一个 6984 返回代码 - 据我所知 - 转换为超过 PIN 尝试限制,但我无法看到这是来自 GPO 的合法响应。

鉴于没有进行身份验证尝试,我也不希望看到这一点,而且这是非接触式交易。这是否表明该卡已在其他地方失效?

我应该注意到我正在编写的代码执行从卡访问 Track2 数据所需的最少步骤,它不是试图重新创建完整的 EMV 内核处理。

谢谢

4

3 回答 3

3

由于 EMV 应用程序具有 Visa AID,我假设它是为非接触式内核 3 构建的。内核 3 规范定义如果卡返回状态代码6984以响应 GET PROCESSING OPTIONS 命令,则读卡器应使用另一个接口(例如EMV 接触接口)与卡进行通信。

于 2014-05-27T14:19:56.860 回答
2

我遇到了你上面提到的同样的问题。就我而言,它是 Visa Blink 卡。

=> 80 A8 00 00 02 83 02 00
<= 67 00
=> 80 A8 00 00 04 83 02 00 00 00
<= 69 84

我发现该卡不喜欢短 GPO 命令(即使短命令适用于万事达卡)。所以解决方案是使用长 GPO 命令。

1/ 使用更长的没有国家代码的 GPO 命令:

80A8000023832180000000000000000000000000000000000000000000000000000000000000000000

2/ 使用更好的 GPO 命令并传递国家代码:

80A80000238321A0000000000000000001000000000000084000000000000840070203008017337000

无论哪种情况(是否通过国家/地区代码),它都有效。

于 2014-07-25T21:43:50.290 回答
0

就在两天前,我遇到了与此类似的问题。我正在使用客户使用的 VISA 非接触式卡,我也会从 GPO 获得 6984,但我的问题通过简单地将特定国家和货币代码发送到卡来解决。

我觉得很烦人你会得到“尝试另一个界面”,这基本上意味着联系人或磁条(确实有效)并且你无法得到提示你正在向卡发送错误的货币和国家代码非接触式。或者至少从我的角度来看是这样的。

于 2021-01-28T09:59:56.267 回答