Что не так в вычислении заголовка для ISO8583?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Что не так в вычислении заголовка для ISO8583?

Сообщение Anonymous »

Мне нужно внедрить или интегрировать ISO8583 с использованием Java. Я использую jpos для реализации. В коде все выглядит нормально; но на уровне сервера выяснилось, что формат не соответствует ожиданиям. Сетевая команда говорит, что заголовок не принадлежит им.
Код следующий (обновлено):

Код: Выделить всё

   // Load the ISO 8583 packager from the resources folder
InputStream is = ISO8583MessageHandler.class.getClassLoader().getResourceAsStream("iso93ascii.xml");
if (is == null) {
throw new IllegalArgumentException("iso8583.xml is not found in resources!");
}
// Load the ISO 8583 packager
GenericPackager packager = new GenericPackager(ISO8583MessageHandler.class.getClassLoader().getResourceAsStream("iso93ascii.xml"));
packager.setLogger(LOGGER, "client");

// PostChannel for 2 bytes header
PostChannel channel = new PostChannel(serverIP, serverPort, packager);
channel.setLogger(LOGGER, "client");

ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.setMTI("1804");
isoMsg.set(11, TransactionUtils.generateSTAN()); // Unique STAN
isoMsg.set(12, new SimpleDateFormat("yyMMddHHmmss").format(new Date())); // yyMMddHHmmss
isoMsg.set(24, "831"); // Function code

// Serialize the message once
isoMsg.recalcBitMap();
byte[] packedMessage = isoMsg.pack();

// Prepare the header
/*byte[] header = new byte[2];
int length = (packedMessage.length);
System.out.println("Length " + length);
header[0] = (byte) (length >> 8); // High byte
header[1] = (byte) (length);      // Low byte

isoMsg.setHeader(header);
byte[] finalPackedMessage = isoMsg.pack();*/

// Now dump the full message
System.out.println("Message Hex Dump:: ");
System.out.println(ISOUtil.hexString(packedMessage));
System.out.println("Message ASCII Dump:: ");
System.out.println(TransactionUtils.hexToAscii(ISOUtil.hexString(packedMessage)));
//            System.out.println("Full Message Hex Dump:: ");
//            System.out.println(TransactionUtils.toFormattedHexDump(fullMessage));

channel.connect();
channel.send(isoMsg);

System.out.println("ISO Network Management Call Sent...");

ISOMsg response = channel.receive();
System.out.println("Received Network Management Response from the Server!");
printISOMessage(response);
Приведенный выше код предназначен для вызова управления сетью (сигнала). В соответствии с документом интеграции требование протокола выглядит примерно так:
Изображение

Требование к заголовку:
Изображение

Файл iso93ascii.xml: И журналы:

Код: Выделить всё


3138303430303330303130303030303030303030313134383339323430313032313434333430383331


Message Hex Dump::
3138303430303330303130303030303030303030313134383339323430313032313434333430383331
Message ASCII Dump::
18040030010000000000114839240102144340831


Try 0 172.xx.xx.xx:63xx
Connection established to 172.xx.xx.xx:63xx




3138303430303330303130303030303030303030313134383339323430313032313434333430383331













Что я на самом деле делаю не так, очень ценю вашу поддержку в этом отношении.


Подробнее здесь: https://stackoverflow.com/questions/777 ... or-iso8583
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»