JPOS - разбор DE55 - PullRequest
       63

JPOS - разбор DE55

0 голосов
/ 28 мая 2018

Поле DE55 определено в моем упаковщике следующим образом:

   <isofield
  id="55"
  length="139"
  name="INTEGRATED CARD CIRCUIT SYSTEM RELATED DATA"
  class="org.jpos.iso.IFE_LLLBINARY"/>

Я получаю следующее сообщение (данные теста):

<log realm="debug" at="Mon May 28 09:19:15 EDT 2018.907"><unpack>F0F1F0F0E0040601204002000400000000000002F1F6F5F2F0F9F5F4F6F9F1F2F3F4F9F8F7F5F3F3F3F0F0F0F2F5F1F2F0F7F0F0F0F1F0F8F0F0F0F0F1F8F1F3F3F4F5F2F0F9F5F4F6F9F1F2F3F4F9F8F7F57EF2F5F1F2F2F2F6F0F1F2F3F4F0F9F1F7F2F0F1F8F1F340404040404040404040F1F3F69F34031F03009F3303E008C89F03060000000000009F02060000000013258407A0000000041010820258809F2701809F26082C60BF5FC4D21B725F2A0201249F1E0836313134393035349F1A0201249C01009A031806169F10120114A54100020000000000415A38AD3700FF950500000080009F090200009F370470A7D90E9F360200039F350122F1F0F4F0F2F5F0F0F0F9F9F3F9F2F4F5404040404040404040404040404040
<bitmap>{1, 2, 3, 14, 22, 23, 32, 35, 42, 55, 70, 127}</bitmap>
<unpack fld="2" packager="org.jpos.iso.IFE_LLNUM">
  <value>5209546912349875</value>
</unpack>
<unpack fld="3" packager="org.jpos.iso.IFE_NUMERIC">
  <value>333000</value>
</unpack>
<unpack fld="14" packager="org.jpos.iso.IFE_NUMERIC">
  <value>2512</value>
</unpack>
<unpack fld="22" packager="org.jpos.iso.IFE_NUMERIC">
  <value>070</value>
</unpack>
<unpack fld="23" packager="org.jpos.iso.IFE_NUMERIC">
  <value>001</value>
</unpack>
<unpack fld="32" packager="org.jpos.iso.IFE_LLNUM">
  <value>00001813</value>
</unpack>
<unpack fld="35" packager="org.jpos.iso.IFE_LLCHAR">
  <value>520XXXX91XX4XXXX=25122260123409172</value>
</unpack>
<unpack fld="42" packager="org.jpos.iso.IFE_CHAR">
  <value>01813          </value>
</unpack>
<unpack fld="55" packager="org.jpos.iso.IFE_LLLBINARY">
  <value>[B@45a877</value>
</unpack>
<unpack fld="70" packager="org.jpos.iso.IFE_CHAR">
  <value>104</value>
</unpack>
<unpack fld="127" packager="org.jpos.iso.IFE_LLLCHAR">
  <value>0009939245               </value>
</unpack>

Таким образом, DE 55 преобразуется в следующее из полевого упаковщика:

 <field id="42" value="01813          "/>
  <field id="55" value="A4BB031F0300A4BC035CCA48A403C3000000000000A402C300000000130A647FB5000000DC10106202ECD8A41B01D8A417CAB12DD7AC444BF2CAACC50201BFA41ECACCBABABBCBCDC9BBA4C80201BFE60100AA0318C308A4101201DB76A000020000000000A021B9DD04001A6E09000000D800A4B2020000A404DCF878520EA4CC020003A4C901C0" type="binary"/>
  <field id="70" value="104"/>

Вот формат DE55, получаемый сервером:

F0F1F8F1F340404040404040404040 //DE42 F1F3F6 //DE55 length Header(ebcdic) 9F34031F03009F3303E008C8 //DE55 tags 9F0306000000000000 //. 9F0206000000001325 // etc.

Вот те же данные после форматирования упаковщиком:

A4BB031F0300A4BC035CCA48 //DE55 tags A403C3000000000000 //. A402C300000000130A //.

Кто-нибудь знает, как я могу изменить поле упаковщика, чтобы получать данные в том же формате, что и введенные?

IE:

<field id="55" value="9F34031F03009F3303E008C89F03060000000000009F02060000000013258407A0000000041010820258809F2701809F26082C60BF5FC4D21B725F2A0201249F1E0836313134393035349F1A0201249C01009A031806169F10120114A54100020000000000415A38AD3700FF950500000080009F090200009F370470A7D90E9F360200039F350122" type="binary"/>
...