Ошибка Parser при запросе команды GPO для карты EMV
У меня есть некоторые проблемы с командой GET PROCESSING OPTIONS (GPO) для карты VISA.
Ниже приведен мой ответ на команду SELECT для приложения VISA:
6F408407A0000000031010A535500A564953412044454249549F380C9F66049F02069F37049F1A025F2D02656EBF0C1242034761735F550255539F5A0511084008409000
Я извлек из этого следующий PDOL: 9F66049F02069F37049F1A02
Я не уверен насчет тега 9F66
,
Моя команда GPO выглядит следующим образом:
80a800000100000001000000001000823DDE7A12400
Но я получаю ошибку парсера в ответ:
6A80
1 ответ
Кажется, у вашей команды GPO много проблем:
80 A8 0000 01 00000001 000000001000 823DDE7A 1240 0
^^ ^^^^^ ^^^^^^^^ ^^^^ ^^
4. 1. 2. 3. 5.
Прежде всего, ваша команда GPO отправляет несколько байтов данных без контекста. Вам нужно обернуть ваши элементы данных в объект данных, связанный с PDOL:
83 10 wwwwwwww xxxxxxxxxxxx yyyyyyyy zzzz
Ваши терминальные квалификаторы транзакций (
9F66
) установите биты RFU. Действительный TTQ может выглядеть так:B620C000
, сB6
:- Режим Mag-Stripe поддерживается @bit 8
- Режим EMV поддерживается @bit 6
- Поддерживается контактный чип EMV @bit 5
- поддерживается онлайн режим @bit 4
- поддерживается онлайн-код @bit 3
- подпись поддерживается @bit 2
- другие биты = RFU
20
:- онлайн-криптограмма не требуется @bit 8
- не требуется CMV @bit 7
- (контактный чип) поддерживается автономный ПИН @bit 6
- другие биты = RFU
C0
:- поддерживается обработка обновлений эмитента @Bit 8
- потребительское устройство CVM поддерживается @Bit 7
- другие биты = RFU
00
: РФС
Ваш код страны терминала недействителен. Код страны терминала должен представлять собой трехзначное числовое значение, кодированное BCD в два байта. Предполагая, что вы хотите использовать "124" (Кананда), правильный код страны будет
0124
(Австрия:0040
, СОЕДИНЕННОЕ КОРОЛЕВСТВО:0826
, СОЕДИНЕННЫЕ ШТАТЫ АМЕРИКИ:0840
).Байт Lc (установлен в
01
= один байт данных) не отражает фактическую длину данных. В вашем случае фактическая длина данных будет 16 байтов, поэтому Lc должен быть установлен в10
, Учитывая, что вам также необходимо включить тег и длину для объекта данных, связанных с PDOL, ваш байт Lc должен быть установлен в12
(18 байт).Шестнадцатеричная строка, которую вы представили в качестве команды GPO, не выровнена по байтам, поэтому вам не хватает одного куска поля Le. Вы Le поле должно быть установлено в
Le
,
Таким образом, ваша команда GPO может выглядеть так:
80 A8 0000 12 83 10 B620C000 000000001000 823DDE7A 0124 00