Всегда получая 6a82 и 6d00 за чтение карты EMV Visa
Я читаю данные с карты Visa, но всегда получаю ответ 6a82 и 6d00 для PSE. Я использую смарт-карту и следующие команды Выберите PSE: 00A404000E315041592E5359532E444446303100
Код обработки: 80A8000002830000
Приведенный ниже код прекрасно работает для PayPak (платежная карта Пакистана, требующая совместимости с EMV), но для визы он не работает.
startCardConnection("0");
String commandVisa = "00A4040007A000000003101000";
String command_PSE = "00A404000E315041592E5359532E444446303100";
String command_getProcessingOptionsVISA = "80A8000002830000";
String response;
response = executeCardCommand(command_PSE);
response = executeCardCommand(commandVisa);
readCardRecords(2);
response = executeCardCommand(command_getProcessingOptionsVISA);
response = executeCardCommand("80AE8000210000000000000000000000000586000000000005861802020000E44E4B11040001");
public static String executeCardCommand(String command) {
if (transmissionTrace)
System.out.println("SYS: Executing card command:" + command);
capdu = makeCommandAPDU(command);
TLV tagsList;
try {
if (card == null) {
System.out.println("SYS: ERR: Card not present/not responding!");
return null;
}
responsedAPDU = card.getBasicChannel().transmit(capdu);
showRes(responsedAPDU.getBytes());
tagsList = new TLV(responsedAPDU.getBytes());
allTagsTLV.getChildren().add(tagsList);
System.out.println(">>>>>>>>>>>>" + responsedAPDU.toString());
} catch (CardException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (TLVException e1) {
// TODO Auto-generated catch block
System.out.println("SYS: NO tags response. May be correct if not expecting tags.");
}
return allTagsTLV.getJson();
}
1 ответ
Поддержка PSE для контакта не является обязательной - как для карт, так и для терминалов. С точки зрения терминала / ядра обязателен только метод LoA (список идентификаторов AID). Как подробно описано в EMV Book 1, глава 12.3, когда PSE отсутствует (слово состояния 6A82), терминал должен создать список кандидатов, используя метод List of AIDs, основываясь на его конфигурации. Я не знаю, когда вы получаете 6D00, но вы не выполняете выбор приложения правильно, поэтому я предполагаю, что вы запускаете такие команды, как GPO и GenAC, при этом приложение не выбрано. Код, который вы цитируете, очень неправильный - он не обрабатывает никаких ошибок, неправильно выбирает приложение, не проверяет наличие PDOL, не читает записи с CDOL1, не создает DOL. Честно говоря, это может работать только по стечению обстоятельств.