Я работаю над проектом, и эта ошибка вызывает у меня головную боль. Я использую библиотеку Java J8583 для создания сообщения ISO8583 и отправки на удаленный сервер. Ответ сервера представляет собой шестнадцатеричное значение: 5452414E53414354494F4E204552524F52, которое при преобразовании в ASCII: ОШИБКА ПЕРЕДАЧИ.
// function to construct Message
public IsoMessage createLoadRequest(String tag) {
IsoMessage nManagementMsg = messageFactory.newMessage(0x0800);
Date date = new Date();
String terminalID = new Utils().retrieveTerminalID();
nManagementMsg.setField(3, new IsoValue<Object>(IsoType.ALPHA, tag, 6));
nManagementMsg.setField(7, new IsoValue<Object>(IsoType.NUMERIC, utcTime.format(date), 10));
lastTransactionAuditCode = Utils.randomAlphaNumeric(6);
nManagementMsg.setField(11, new IsoValue<Object>(IsoType.NUMERIC, lastTransactionAuditCode, 6)); // System Trace Audit Number
nManagementMsg.setField(12, new IsoValue<>(IsoType.NUMERIC, localTime.format(date), 6));
nManagementMsg.setField(13, new IsoValue<>(IsoType.DATE_EXP, localDate.format(date), 4));
nManagementMsg.setField(41, new IsoValue<Object>(IsoType.ALPHA, terminalID, 8));
return nManagementMsg;
}
//function to make send Message to server
public boolean retrieveData() throws UnsupportedEncodingException {
IsoMessage networkManagementMsg = this.createLoadRequest("567YUY");
String strToSend = new String(networkManagementMsg.writeData());
if (!start()) {
return false;
}
try {
logger.info(strToSend);
outputStream.writeUTF(strToSend);
IsoMessage response = readMessage();
final String result = response.getAt(39).toString();
if (!result.equals("00")) {
logger.log(Level.WARNING, "Network Management Response contains a non-zero result code {0}", result);
return false;
}
// parse and get required data
String value = response.getAt(62).toString();
System.out.println(value);
return true;
} catch (Exception ex) {
logger.severe("Exception while loading terminal info");
ex.printStackTrace();
return false;
} finally {
stop();
}
}
Я ожидал, что ISOMessage вернется с ошибкой:
INFO: 08002238000000800000567YUY0515135835Q56U46135835051520390013
INFO: Received response: 5452414E53414354494F4E204552524F52
INFO: IsoMessage: null
java.io.IOException: Failed to parse iso message string:
5452414E53414354494F4E204552524F52




Трудно сказать без более широкого контекста вашего проекта и значений каждого поля, которое вы хотите упаковать, но ваш запрос выглядит странно. STAN (поле 11) должен был быть числовым, но содержит альфа. Кроме того, вы должны проверить кодировку идентификатора терминала (поле 41), так как он может быть 8 байтов, как вы его построили, но в некоторых системах я видел 16 байтов с использованием шестнадцатеричной кодировки.
Спасибо за ответ. Мне удалось исправить проблему, узнав больше о пакетах сообщений ISO8583. Указанные Вами ошибки были исправлены.