获取处理选项在Visa非接触式卡上意外返回6984代码

时间:2014-05-27 07:55:13

标签: android apdu contactless-smartcard emv

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

我的代码与一堆Visa和万事达卡一起使用,但我遇到了Visa卡特定子类别的问题。

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

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

此时我收到6984返回代码 - 据我所知 - 转换为PIN Try Limit超出但我无法看到这是来自GPO的合法回复。

我也不希望看到这一点,因为那里没有认证尝试,而且它是非接触式交易。这是否表明该卡已在其他地方失效?

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

由于

3 个答案:

答案 0 :(得分:3)

由于EMV应用程序具有Visa AID,我认为它是为非接触式内核3构建的。内核3规范定义了如果卡返回状态代码6984以响应GET PROCESSING OPTIONS命令,读者应使用另一个界面(例如EMV联系人界面)与卡通信。

答案 1 :(得分: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

在任何一种情况下(无论是否传递国家代码)都可以。

答案 2 :(得分:0)

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

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