Search code examples
androidapducontactless-smartcardemv

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.

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.

Here are the steps I have taken and the issues I encountered:

  • I identify the application using PPSE
  • SELECT the application AID (A0000000031010) The File Control Info includes a PDOL which I construct
  • Send a GET PROCESSING OPTIONS

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.

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.

Thanks


Solution

  • As the EMV application has a Visa AID, I would assume that it's built for contactless kernel 3. The kernel 3 specification defines that if a card returns the status code 6984 in response to the GET PROCESSING OPTIONS command, the reader should use another interface (e.g. EMV contact interface) to communicate with the card.