I have some issues with the GET PROCESSING OPTIONS (GPO) command for a VISA card.
Following is my response to the SELECT command for the VISA application:
Your GPO command seems to have quite a lot of issues:
80 A8 0000 01 00000001 000000001000 823DDE7A 1240 0
^^ ^^^^^ ^^^^^^^^ ^^^^ ^^
4. 1. 2. 3. 5.
First of all, your GPO command sends several data bytes without context. You need to wrap your data items into a PDOL related data object:
83 10 wwwwwwww xxxxxxxxxxxx yyyyyyyy zzzz
Your Terminal Transaction Qualifiers (9F66
) have RFU bits set. Valid TTQ could look like this: B620C000
, with
B6
:
20
:
C0
:
00
: RFUYour Terminal Country Code is not valid. A terminal country code must be a 3-digit numeric value BCD-encoded into the two bytes. Assuming that you wanted to use "124" (Cananda), the correct country code would be 0124
(Austria: 0040
, UK: 0826
, USA: 0840
).
The Lc byte (set to 01
= one data byte) does not reflect the actual data length. In your case, the actual data length would be 16 bytes, so Lc should be set to 10
. Considering that you also need to include the tag and length for the PDOL related data object, your Lc byte should be set to 12
(18 bytes).
The hexadecimal string that you presented as your GPO command is not aligned to bytes, so you are missing one nibble of the Le field. You Le field shoud be set to Le
.
So your GPO command could look like this:
80 A8 0000 12 83 10 B620C000 000000001000 823DDE7A 0124 00