简体   繁体   English

GET PROCESSING OPTIONS 在 Visa 非接触式卡上意外返回 6984 代码

[英]GET PROCESSING OPTIONS returns 6984 code unexpectedly on a Visa contactless card

I'm using Java code and Android NFC capabilities to communicate with contactless payment cards.我正在使用 Java 代码和 Android NFC 功能与非接触式支付卡进行通信。

I have code which works with a bunch of Visa and MasterCards but I have run into an issue with a specific subcategory of Visa card.我的代码适用于一堆 Visa 和万事达卡,但我遇到了 Visa 卡特定子类别的问题。

Here are the steps I have taken and the issues I encountered:以下是我采取的步骤和遇到的问题:

  • I identify the application using PPSE我使用 PPSE 识别应用程序
  • SELECT the application AID (A0000000031010) The File Control Info includes a PDOL which I construct选择应用程序 AID (A0000000031010) 文件控制信息包括我构造的 PDOL
  • Send a GET PROCESSING OPTIONS发送 GET 处理选项

At this point I get a 6984 return code which - as far as I can see - translates to PIN Try Limit exceeded but I have not been able to see that this is a legitimate response from a GPO.在这一点上,我得到一个 6984 返回代码 - 据我所知 - 转换为超过 PIN 尝试限制,但我无法看到这是来自 GPO 的合法响应。

Nor would I expect to have seen this given there's been no auth attempt, and it's a contactless transaction.鉴于没有进行身份验证尝试,我也不希望看到这种情况,而且这是一种非接触式交易。 Does this suggest that the card has been invalidated elsewhere ?这是否表明该卡已在其他地方失效?

I should note that the code I'm writing is performing minimal steps required to access Track2 data from the card, it is not trying to recreate the full EMV kernel processing.我应该注意到,我正在编写的代码正在执行从卡访问 Track2 数据所需的最少步骤,它并没有尝试重新创建完整的 EMV 内核处理。

Thanks谢谢

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

I ran into the same problem you mentioned above.我遇到了你上面提到的同样问题。 In my case, it's Visa Blink card.就我而言,它是 Visa Blink 卡。

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

I figured out that the card doesn't like short GPO command (even though the short command works fine with Mastercard).我发现该卡不喜欢短 GPO 命令(即使短命令与万事达卡一起工作正常)。 So solution is using long GPO command.所以解决方案是使用长 GPO 命令。

1/ Use longer GPO command with no country code: 1/ 使用更长的没有国家代码的 GPO 命令:

80A8000023832180000000000000000000000000000000000000000000000000000000000000000000

2/ Use better GPO command with passing country code: 2/ 使用更好的 GPO 命令传递国家代码:

80A80000238321A0000000000000000001000000000000084000000000000840070203008017337000

In either case (passing country code or not), it works.在任何一种情况下(是否通过国家代码),它都有效。

I had similar issue to this one just 2 days ago.就在 2 天前,我遇到了与此类似的问题。 I was working on VISA contactless card that client uses, I would also get 6984 from GPO but my issue was resolved by simply sending specific country and currency code to the card.我正在研究客户使用的 VISA 非接触式卡,我也会从 GPO 获得 6984,但我的问题是通过向卡发送特定的国家和货币代码来解决的。

I find it very annoying that you will get "try another interface", which basically means contact or magnet-stripe (which does work) and you have no way to get a hint that you are sending wrong currency and country code to the card for contactless.我觉得很烦人,你会得到“尝试另一个界面”,这基本上意味着接触或磁条(有效),你无法得到提示你向卡发送了错误的货币和国家代码非接触式。 Or at least that is how it looked from my point of view.或者至少在我看来是这样的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM