Команда GPO строится следующим образом:
CLA '80'
INS 'A8'
P1 '00'
P2 '00'
Lc var.
Data PDOL Related Data
Le '00'
На основе вашего PDOL вам необходимо предоставить следующие данные:
9F66 (?) 4 bytes
9F02 (amount authorized) 6 bytes
9F03 (amount other) 6 bytes
9F1A (terminal country code) 2 bytes
95 (TVR - Terminal Verification Results) 5 bytes
5F2A (terminal currency code) 2 bytes
9A (transaction date) 3 bytes
9C (transaction type) 1 bytes
9F37 (unpredictable number) 4 bytes
(Вам нужно будет проанализировать PDOL, но вы также можете использовать сетевой декодер TVR для его анализа.)
В основном вам нужно заполнить DOL значениями для запрошенных тегов (в порядке их появления). Например, если вы заполните только сумму, DOL будет выглядеть так:
000000001122334455660000000000000000000000000000000000000000000000
И ваша команда GPO будет:
80A8000023832100000000112233445566000000000000000000000000000000000000000000000000
^^
Где шестнадцатеричное значение 21
(то есть 33) - это длина DOL.
Надеюсь, это поможет. Вы можете обратиться к спецификации EMV для более подробной информации. https://www.emvco.com/emv-technologies/contactless/