Пакет iso8583 сообщение
Я пытаюсь сделать пакет iso8583 с библиотекой j8583 для замены и старой программой iso8583, которую мы запускаем (у меня нет исходного кода) . Пакет генерируется иначе, чем пакет, сгенерированный старым программным обеспечением. обратите внимание на "F" в старой упаковке.
код
messageFactory.setAssignDate(false);
messageFactory.setUseBinaryMessages(true);
IsoMessage isoMessage = messageFactory.newMessage(0x1804);
isoMessage.setBinary(true);
isoMessage.setBinaryBitmap(true);
isoMessage.setValue(3, "000000", IsoType.NUMERIC, 6);
isoMessage.setValue(11, "000001", IsoType.NUMERIC, 6);
isoMessage.setValue(12, "151021095555", IsoType.NUMERIC, 12);
isoMessage.setValue(24, "831", IsoType.NUMERIC, 3);
isoMessage.setValue(25, "8700", IsoType.NUMERIC, 4);
isoMessage.write(outputStream, 2);
Старая посылка
0x0000: 0a13 ad7c d6d0 0a2f 6a3b 8f1e 0800 4500 ...|.../j;....E.
0x0010: 0055 73ae 4000 4006 41de 0a00 0888 94ab .Us.@.@.A.......
0x0020: dde3 b88b 540c c290 a52c 976a 3432 5018 ....T....,.j42P.
0x0030: 01c9 855e 0000 002d f1f8 f0f4 2030 0180 ...^...-.....0..
0x0040: 0000 0000 f0f0 f0f0 f0f0 f1f5 f3f0 f2f9 ................
0x0050: f1f5 f1f0 f2f0 f2f1 f1f1 f3f1 f8f3 f1f8 ................
0x0060: f7f0 f0
новый пакет
0x0000: 0a13 ad7c d6d0 0a2f 6a3b 8f1e 0800 4500 ...|.../j;....E.
0x0010: 0042 39a7 4000 4006 7bf8 0a00 0888 94ab .B9.@.@.{.......
0x0020: dde3 bcce 540c b124 15aa 1a6e e56b 5018 ....T..$...n.kP.
0x0030: 01c9 854b 0000 1804 2030 0180 0000 0000 ...K.....0......
0x0040: 0000 0000 0001 1510 2109 5555 0831 8700 ........!.UU.1..
1 ответ
1) В старом примере пакета данных вы можете увидеть байты с 'F'. Наглядно видно, что происходит кодирование данных в формате EBCDIC.
2) В пакете New поля упакованы в BCD - числовые поля используют половину байта на цифру.
Например, из ваших двоичных данных:
- Старый 0x "
f1f8 f0f4
"- MTI, закодированный как EBCDIC - Новый 0x "
1804
"- MTI, закодированный как BCD
Измените режим кодирования ваших полей (если ваша Java-библиотека поддерживает эту опцию).