Adding field 55 makes Jpos complain about field 53 when unpacking

397 views
Skip to first unread message

tobias.a...@gmail.com

unread,
Oct 16, 2014, 2:31:07 AM10/16/14
to jpos-...@googlegroups.com
Hi,

I am working against amex spec and writing a bank simulator with help of Jpos. I have an issue with unpacking field 55. 
The problem is when I don't send field 55 then unpacking of field 53 works, but when adding field 55 then Jpos complains that it could not unpack field 55. 

I really appreciate if someone could help me with this?

Here is the data:

<log realm="simulator_amex.server.session/127.0.0.1:58887" at="Thu Oct 16 08:22:08 CEST 2014.396">
  <session-start/>
</log>
<log realm="channel/127.0.0.1:58887" at="Thu Oct 16 08:22:08 CEST 2014.401" lifespan="5ms">
  <receive>
    <iso-exception>
      org.jpos.iso.IFE_LLCHAR: Problem unpacking field 53 (org.jpos.iso.ISOException: Field length 34 too long. Max: 8) unpacking field=53, consumed=143
      org.jpos.iso.ISOException: org.jpos.iso.IFE_LLCHAR: Problem unpacking field 53 (org.jpos.iso.ISOException: Field length 34 too long. Max: 8) unpacking field=53, consumed=143
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:266)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:454)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:962)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:733)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:156)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
    </iso-exception>
    --- data ---
    0000  F1 F1 F0 F0 70 34 25 E0  08 C0 9A 00 F1 F6 F4 F4  ....p4%.........
0010  F4 F4 F2 F2 F2 F2 F3 F3  F3 F3 F1 F1 F1 F1 F0 F0  ................
0020  F4 F0 F0 F0 F0 F0 F0 F0  F0 F0 F0 F0 F2 F1 F0 F0  ................
0030  F1 F2 F3 F4 F5 F6 F0 F9  F0 F1 F3 F1 F1 F6 F5 F9  ................
0040  F4 F5 F1 F2 F0 F1 F0 F3  F6 F5 F0 F0 F0 F0 F0 E6  ................
0050  F5 F4 F0 F0 F0 F1 F0 F0  F1 F9 F0 F0 F5 F3 F1 F1  ................
0060  F6 F0 F0 F0 F0 F9 F0 F1  F2 F3 F4 F5 F6 F0 F2 F5  ................
0070  F0 F0 F0 F2 F9 F3 F3 F4  F2 F5 F1 F7 F5 F3 F9 40  ...............@
0080  40 40 40 40 F7 F5 F2 F0  F1 F2 F3 F0 F8 F1 F2 F3  @@@@............
0090  F4 F5 F6 F7 F8 F0 F5 F6  C1 C7 D5 E2 00 01 6C 6D  ..............lm
00a0  EB 98 6D 9C 0E E5 06 01  0A 03 A4 00 00 84 58 F8  ..m...........X.
00b0  22 00 45 00 00 00 80 00  08 09 15 00 00 00 00 00  ".E.............
00c0  65 00 07 52 07 52 5C 00  00 00 00 00 00 00 00 80  e..R.R\.........

  </receive>
</log>
<log realm="simulator_amex.server.session/127.0.0.1:58887" at="Thu Oct 16 08:22:08 CEST 2014.402">
  <session-error>
    <iso-exception>
      org.jpos.iso.IFE_LLCHAR: Problem unpacking field 53 (org.jpos.iso.ISOException: Field length 34 too long. Max: 8) unpacking field=53, consumed=143
      org.jpos.iso.ISOException: org.jpos.iso.IFE_LLCHAR: Problem unpacking field 53 (org.jpos.iso.ISOException: Field length 34 too long. Max: 8) unpacking field=53, consumed=143
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:266)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:454)
at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:962)
at org.jpos.iso.BaseChannel.receive(BaseChannel.java:733)
at org.jpos.iso.ISOServer$Session.run(ISOServer.java:156)
at org.jpos.util.ThreadPool$PooledThread.run(ThreadPool.java:72)
    </iso-exception>
  </session-error>
</log>
<log realm="simulator_amex.server.session/127.0.0.1:58887" at="Thu Oct 16 08:22:08 CEST 2014.404">
  <session-end/>
</log>

And here is the packager definition:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager SYSTEM "genericpackager.dtd">
 
 <isopackager>
  <isofield
      id="0"
      length="4"
      name="MESSAGE TYPE INDICATOR"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="1"
      length="16"
      name="BIT MAP"
      class="org.jpos.iso.IFB_BITMAP"/>
  <isofield
      id="2"
      length="19"
      name="PAN - PRIMARY ACCOUNT NUMBER"
      pad="false"
      class="org.jpos.iso.IFE_LLNUM"/>
  <isofield
      id="3"
      length="6"
      name="PROCESSING CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="4"
      length="12"
      name="AMOUNT, TRANSACTION"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="5"
      length="12"
      name="AMOUNT, SETTLEMENT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="6"
      length="12"
      name="AMOUNT, CARDHOLDER BILLING"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="7"
      length="10"
      name="TRANSMISSION DATE AND TIME"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="8"
      length="8"
      name="AMOUNT, CARDHOLDER BILLING FEE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="9"
      length="8"
      name="CONVERSION RATE, SETTLEMENT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="10"
      length="8"
      name="CONVERSION RATE, CARDHOLDER BILLING"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="11"
      length="6"
      name="SYSTEM TRACE AUDIT NUMBER"
      pad="true"
      class="org.jpos.iso.IF_ECHAR"/>
  <isofield
      id="12"
      length="12"
      name="DATE AND TIME, LOCAL TRANSACTION"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="13"
      length="4"
      name="DATE, EFFECTIVE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="14"
      length="4"
      name="DATE, EXPIRATION"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="15"
      length="6"
      name="DATE, SETTLEMENT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="16"
      length="4"
      name="DATE, CONVERSION"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="17"
      length="4"
      name="DATE, CAPTURE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="18"
      length="4"
      name="MERCHANTS TYPE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="19"
      length="3"
      name="ACQUIRING INSTITUTION COUNTRY CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="20"
      length="3"
      name="PAN EXTENDED COUNTRY CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="21"
      length="3"
      name="FORWARDING INSTITUTION COUNTRY CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="22"
      length="12"
      name="POINT OF SERVICE DATA CODE"
      pad="true"
      class="org.jpos.iso.IF_CHAR"/>
  <isofield
      id="23"
      length="3"
      name="CARD SEQUENCE NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="24"
      length="3"
      name="FUNCTION CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="25"
      length="4"
      name="MESSAGE REASON CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="26"
      length="4"
      name="CARD ACCEPTOR BUSINESS CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="27"
      length="1"
      name="AUTHORIZATION IDENTIFICATION RESP LEN"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="28"
      length="9"
      name="AMOUNT, TRANSACTION FEE"
      pad="true"
      class="org.jpos.iso.IFE_AMOUNT"/>
  <isofield
      id="29"
      length="9"
      name="AMOUNT, SETTLEMENT FEE"
      pad="true"
      class="org.jpos.iso.IFE_AMOUNT"/>
  <isofield
      id="30"
      length="24"
      name="AMOUNT, ORIGINAL"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC">
  </isofield>
  <isofield
      id="31"
      length="48"
      name="ACQUIRER REFERENCE DATA"
      class="org.jpos.iso.IFE_LLCHAR">
  </isofield>
  <isofield
      id="32"
      length="11"
      name="ACQUIRING INSTITUTION IDENT CODE"
      pad="false"
      class="org.jpos.iso.IFE_LLNUM"/>
  <isofield
      id="33"
      length="11"
      name="FORWARDING INSTITUTION IDENT CODE"
      pad="false"
      class="org.jpos.iso.IFE_LLNUM"/>
  <isofield
      id="34"
      length="28"
      name="PAN EXTENDED"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="35"
      length="37"
      name="TRACK 2 DATA"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="36"
      length="104"
      name="TRACK 3 DATA"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="37"
      length="12"
      name="RETRIEVAL REFERENCE NUMBER"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="38"
      length="6"
      name="AUTHORIZATION IDENTIFICATION RESPONSE"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="39"
      length="3"
      name="RESPONSE CODE"
      class="org.jpos.iso.IFE_CHAR">
  </isofield>
  <isofield
      id="40"
      length="3"
      name="SERVICE RESTRICTION CODE"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="41"
      length="8"
      name="CARD ACCEPTOR TERMINAL IDENTIFICACION"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="42"
      length="15"
      name="CARD ACCEPTOR IDENTIFICATION CODE"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="43"
      length="99"
      name="CARD ACCEPTOR NAME/LOCATION"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="44"
      length="25"
      name="ADITIONAL RESPONSE DATA"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="45"
      length="76"
      name="TRACK 1 DATA"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="46"
      length="999"
      name="ADITIONAL DATA - ISO"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="47"
      length="301"
      name="ADITIONAL DATA - NATIONAL"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="48"
      length="40"
      name="ADITIONAL DATA - PRIVATE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="49"
      length="3"
      name="CURRENCY CODE, TRANSACTION"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="50"
      length="3"
      name="CURRENCY CODE, SETTLEMENT"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="51"
      length="3"
      name="CURRENCY CODE, CARDHOLDER BILLING"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="52"
      length="8"
      name="PIN DATA"
      class="org.jpos.iso.IFB_BINARY"/>
  <isofield
      id="53"
      length="8"
      name="SECURITY RELATED CONTROL INFORMATION"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="54"
      length="120"
      name="ADDITIONAL AMOUNTS"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="55"
      length="256"
      name="INTEGRATED CARD CIRCUIT SYSTEM RELATED DATA"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="56"
      length="35"
      name="ORIGINAL DATA ELEMENTS"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="57"
      length="3"
      name="AUTHORIZATION LIFE CYCLE CODE"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="58"
      length="11"
      name="AUTHORIZING AGENT INSTITUTION IDENTIFICATION CODE"
      class="org.jpos.iso.IFE_LLNUM"/>
  <isofield
      id="59"
      length="99"
      name="TRANSPORT DATA"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="60"
      length="300"
      name="NATIONAL USE DATA"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="61"
      length="100"
      name="NATIONAL USE DATA"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="62"
      length="60"
      name="PRIVATE USE DATA"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="63"
      length="205"
      name="PRIVATE USE DATA"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="64"
      length="8"
      name="MESSAGE AUTHENTICATION CODE FIELD"
      class="org.jpos.iso.IFB_BINARY"/>
  <isofield
      id="65"
      length="1"
      name="BITMAP, EXTENDED"
      class="org.jpos.iso.IFB_BINARY"/>
  <isofield
      id="66"
      length="1"
      name="SETTLEMENT CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="67"
      length="2"
      name="EXTENDED PAYMENT CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="68"
      length="3"
      name="RECEIVING INSTITUTION COUNTRY CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="69"
      length="3"
      name="SETTLEMENT INSTITUTION COUNTRY CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="70"
      length="3"
      name="NETWORK MANAGEMENT INFORMATION CODE"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="71"
      length="4"
      name="MESSAGE NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="72"
      length="4"
      name="MESSAGE NUMBER LAST"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="73"
      length="6"
      name="DATE ACTION"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="74"
      length="10"
      name="CREDITS NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="75"
      length="10"
      name="CREDITS REVERSAL NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="76"
      length="10"
      name="DEBITS NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="77"
      length="10"
      name="DEBITS REVERSAL NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="78"
      length="10"
      name="TRANSFER NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="79"
      length="10"
      name="TRANSFER REVERSAL NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="80"
      length="10"
      name="INQUIRIES NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="81"
      length="10"
      name="AUTHORIZATION NUMBER"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="82"
      length="12"
      name="CREDITS, PROCESSING FEE AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="83"
      length="12"
      name="CREDITS, TRANSACTION FEE AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="84"
      length="12"
      name="DEBITS, PROCESSING FEE AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="85"
      length="12"
      name="DEBITS, TRANSACTION FEE AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="86"
      length="16"
      name="CREDITS, AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="87"
      length="16"
      name="CREDITS, REVERSAL AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="88"
      length="16"
      name="DEBITS, AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="89"
      length="16"
      name="DEBITS, REVERSAL AMOUNT"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="90"
      length="42"
      name="ORIGINAL DATA ELEMENTS"
      pad="true"
      class="org.jpos.iso.IFE_NUMERIC"/>
  <isofield
      id="91"
      length="1"
      name="FILE UPDATE CODE"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="92"
      length="2"
      name="FILE SECURITY CODE"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="93"
      length="5"
      name="RESPONSE INDICATOR"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="94"
      length="7"
      name="SERVICE INDICATOR"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="95"
      length="42"
      name="REPLACEMENT AMOUNTS"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="96"
      length="18"
      name="MESSAGE SECURITY CODE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="97"
      length="17"
      name="AMOUNT, NET SETTLEMENT"
      pad="false"
      class="org.jpos.iso.IFE_AMOUNT"/>
  <isofield
      id="98"
      length="25"
      name="PAYEE"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="99"
      length="11"
      name="SETTLEMENT INSTITUTION IDENT CODE"
      pad="false"
      class="org.jpos.iso.IFE_LLNUM"/>
  <isofield
      id="100"
      length="11"
      name="RECEIVING INSTITUTION IDENT CODE"
      pad="false"
      class="org.jpos.iso.IFE_LLNUM"/>
  <isofield
      id="101"
      length="17"
      name="FILE NAME"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="102"
      length="28"
      name="ACCOUNT IDENTIFICATION 1"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="103"
      length="28"
      name="ACCOUNT IDENTIFICATION 2"
      class="org.jpos.iso.IFE_LLCHAR"/>
  <isofield
      id="104"
      length="100"
      name="TRANSACTION DESCRIPTION"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="105"
      length="999"
      name="RESERVED ISO USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="106"
      length="999"
      name="RESERVED ISO USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="107"
      length="999"
      name="RESERVED ISO USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="108"
      length="999"
      name="RESERVED ISO USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="109"
      length="999"
      name="RESERVED ISO USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="110"
      length="999"
      name="RESERVED ISO USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="111"
      length="999"
      name="RESERVED ISO USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="112"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="113"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="114"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="115"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="116"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="117"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="118"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="119"
      length="999"
      name="RESERVED NATIONAL USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="120"
      length="999"
      name="RESERVED PRIVATE USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="121"
      length="999"
      name="RESERVED PRIVATE USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="122"
      length="999"
      name="RESERVED PRIVATE USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="123"
      length="999"
      name="RESERVED PRIVATE USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="124"
      length="3"
      name="DEBIT FUNCTION CODE"
      class="org.jpos.iso.IFE_CHAR"/>
  <isofield
      id="125"
      length="999"
      name="RESERVED PRIVATE USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="126"
      length="999"
      name="RESERVED PRIVATE USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="127"
      length="999"
      name="RESERVED PRIVATE USE"
      class="org.jpos.iso.IFE_LLLCHAR"/>
  <isofield
      id="128"
      length="8"
      name="MAC 2"
      class="org.jpos.iso.IFB_BINARY"/>
</isopackager> 

Victor Salaman

unread,
Oct 16, 2014, 3:48:06 AM10/16/14
to jpos-...@googlegroups.com
Hi:

You have defined in your packager that the max length for field 53 would be 8. Your incoming data says otherwise. The exception you are getting is because the length of field 53 in the incoming data is 34 bytes long, which is longer than the 8 you have defined. I would say your incoming data is incorrect. Who is generating it?

/V

--
--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage. Please support jPOS, contact: sa...@jpos.org
 
Join us in IRC at http://webchat.freenode.net/?channels=jpos
 
You received this message because you are subscribed to the "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users
---
You received this message because you are subscribed to the Google Groups "jPOS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jpos-users/2e38293c-96cc-4533-9171-f59490e3ee3e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Victor Salaman

unread,
Oct 16, 2014, 4:10:13 AM10/16/14
to jpos-...@googlegroups.com

BTW, whoever doctored your raw data probably made a mistake and overrode data from another field. If you look at your raw data for field 52, you see that it’s “F0F1F2F3F0F8F1F2” and raw data for field 53 started with F3 F4, which would explain why the next field (53) had length 34. If we change the length to F0 F4 (04), the message unpacks correctly.

Also note that your packager had several mistakes:

Your field 22 should be defined as an EBCDIC char.

    
<isofield
            id="22"
            length="12"
            name="POINT OF SERVICE DATA CODE"
            pad="true"

            class="org.jpos.iso.IFE_CHAR"/>

Here is the result of the unpack now:

<log realm="main" at="Thu Oct 16 03:57:16 EDT 2014.497" lifespan="41ms">
  <unpack>
    F1F1F0F0703425E008C09A00F1F6F4F4F4F4F2F2F2F2F3F3F3F3F1F1F1F1F0F0F4F0F0F0F0F0F0F0F0F0F0F0F2F1F0F0F1F2F3F4F5F6F0F9F0F1F3F1F1F6F5F9F4F5F1F2F0F1F0F3F6F5F0F0F0F0F0E6F5F4F0F0F0F1F0F0F1F9F0F0F5F3F1F1F6F0F0F0F0F9F0F1F2F3F4F5F6F0F2F5F0F0F0F2F9F3F3F4F2F5F1F7F5F3F94040404040F7F5F2F0F1F2F3F0F8F1F2F0F4F5F6F7F8F0F5F6C1C7D5E200016C6DEB986D9C0EE506010A03A400008458F8220045000000800008091500000000006500075207525C000000000000000080
    <bitmap>{2, 3, 4, 11, 12, 14, 19, 22, 24, 25, 26, 27, 37, 41, 42, 49, 52, 53, 55}</bitmap>
    <unpack fld="2" packager="org.jpos.iso.IFE_LLNUM">
      <value>4444222233331111</value>
    </unpack>
    <unpack fld="3" packager="org.jpos.iso.IFE_NUMERIC">
      <value>004000</value>
    </unpack>
    <unpack fld="4" packager="org.jpos.iso.IFE_NUMERIC">
      <value>000000002100</value>
    </unpack>
    <unpack fld="11" packager="org.jpos.iso.IF_ECHAR">
      <value>123456</value>
    </unpack>
    <unpack fld="12" packager="org.jpos.iso.IFE_NUMERIC">
      <value>090131165945</value>
    </unpack>
    <unpack fld="14" packager="org.jpos.iso.IFE_NUMERIC">
      <value>1201</value>
    </unpack>
    <unpack fld="19" packager="org.jpos.iso.IFE_NUMERIC">
      <value>036</value>
    </unpack>
    <unpack fld="22" packager="org.jpos.iso.IFE_CHAR">
      <value>500000W54000</value>
    </unpack>
    <unpack fld="24" packager="org.jpos.iso.IFE_NUMERIC">
      <value>100</value>
    </unpack>
    <unpack fld="25" packager="org.jpos.iso.IFE_NUMERIC">
      <value>1900</value>
    </unpack>
    <unpack fld="26" packager="org.jpos.iso.IFE_NUMERIC">
      <value>5311</value>
    </unpack>
    <unpack fld="27" packager="org.jpos.iso.IFE_NUMERIC">
      <value>6</value>
    </unpack>
    <unpack fld="37" packager="org.jpos.iso.IFE_CHAR">
      <value>000090123456</value>
    </unpack>
    <unpack fld="41" packager="org.jpos.iso.IFE_CHAR">
      <value>02500029</value>
    </unpack>
    <unpack fld="42" packager="org.jpos.iso.IFE_CHAR">
      <value>3342517539     </value>
    </unpack>
    <unpack fld="49" packager="org.jpos.iso.IFE_NUMERIC">
      <value>752</value>
    </unpack>
    <unpack fld="52" packager="org.jpos.iso.IFB_BINARY">
      <value type='binary'>F0F1F2F3F0F8F1F2</value>
    </unpack>
    <unpack fld="53" packager="org.jpos.iso.IFE_LLCHAR">
      <value>5678</value>
    </unpack>
    <unpack fld="55" packager="org.jpos.iso.IFE_LLLBINARY">
      <value type='binary'>C1C7D5E200016C6DEB986D9C0EE506010A03A400008458F8220045000000800008091500000000006500075207525C000000000000000080</value>
    </unpack>
</log>

<isomsg>
  <!-- org.jpos.iso.packager.GenericPackager[amex.xml] -->
  <field id="0" value="1100"/>
  <field id="2" value="4444222233331111"/>
  <field id="3" value="004000"/>
  <field id="4" value="000000002100"/>
  <field id="11" value="123456"/>
  <field id="12" value="090131165945"/>
  <field id="14" value="1201"/>
  <field id="19" value="036"/>
  <field id="22" value="500000W54000"/>
  <field id="24" value="100"/>
  <field id="25" value="1900"/>
  <field id="26" value="5311"/>
  <field id="27" value="6"/>
  <field id="37" value="000090123456"/>
  <field id="41" value="02500029"/>
  <field id="42" value="3342517539     "/>
  <field id="49" value="752"/>
  <field id="52" value="F0F1F2F3F0F8F1F2" type="binary"/>
  <field id="53" value="5678"/>
  <field id="55" value="C1C7D5E200016C6DEB986D9C0EE506010A03A400008458F8220045000000800008091500000000006500075207525C000000000000000080" type="binary"/>
</isomsg>

tobias.a...@gmail.com

unread,
Oct 16, 2014, 5:16:44 AM10/16/14
to jpos-...@googlegroups.com
Hi,

this will really help me alot. I was trying to do what you did to decode the message manually from unpacked format (F1F1F0....) but was struggeling. How are you doing it so that you discovered that field 52 was not correct?

The message is actually being constructed by Amex Java SDK that we are using for communicating with Amex. Since this is code written and released by Amex I have no possibility to modify that. I am writing a simulator to validate that our systems are working as per requirement. But if the message is wrong as you are saying then I need to contact Amex for further investigations
<div title="MDH:QlRXLCB3aG9ldmVyIGRvY3RvcmVkIHlvdXIgcmF3IGRhdGEgcHJvYmFibHkgbWFkZSBhIG1pc3Rh a2UgYW5kIG92ZXJyb2RlIGRhdGEgZnJvbSBhbm90aGVyIGZpZWxkLiBJZiB5b3UgbG9vayBhdCB5 b3VyIHJhdyBkYXRhIGZvciBmaWVsZCA1MiwgeW91IHNlZSB0aGF0IGl0J3MgIkYwRjFGMkYzRjBG OEYxRjIiIGFuZCByYXcgZGF0YSBmb3IgZmllbGQgNTMgc3RhcnRlZCB3aXRoIEYzIEY0LCB3aGlj aCB3b3VsZCBleHBsYWluIHdoeSB0aGUgbmV4dCBmaWVsZCAoNTMpIMKgaGFkIGxlbmd0aCAzNC4g SWYgd2UgY2hhbmdlIHRoZSBsZW5ndGggdG8gRjAgRjQgKDA0KSwgdGhlIG1lc3NhZ2UgdW5wYWNr cyBjb3JyZWN0bHkuPGRpdj48YnI+PC9kaXY+PGRpdj5BbHNvIG5vdGUgdGhhdCB5b3VyIHBhY2th Z2VyIGhhZCBzZXZlcmFsIG1pc3Rha2VzOjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+WW91ciBm aWVsZCAyMiBzaG91bGQgYmUgZGVmaW5lZCBhcyBhbiBFQkNESUMgY2hhci48L2Rpdj48ZGl2Pjxi cj48L2Rpdj48ZGl2PmBgYGAgeG1sPC9kaXY+PGRpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0O2lz b2ZpZWxkPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyBpZD0iMjIiPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyBsZW5ndGg9IjEyIjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgbmFtZT0iUE9JTlQgT0YgU0VSVklDRSBEQVRBIENPREUiPC9kaXY+PGRpdj4m bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBwYWQ9InRydWUiPC9kaXY+ PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBjbGFzcz0ib3Jn Lmpwb3MuaXNvLklGRV9DSEFSIi8mZ3Q7PC9kaXY+PC9kaXY+PGRpdj5gYGBgPC9kaXY+PGRpdj48 YnI+PC9kaXY+PGRpdj5IZXJlIGlzIHRoZSByZXN1bHQgb2YgdGhlIHVucGFjayBub3c6PC9kaXY+ PGRpdj48YnI+PC9kaXY+PGRpdj5gYGBgIHhtbDwvZGl2PjxkaXY+PGRpdj48ZGl2PiZsdDtsb2cg cmVhbG09Im1haW4iIGF0PSJUaHUgT2N0IDE2IDAzOjU3OjE2IEVEVCAyMDE0LjQ5NyIgbGlmZXNw YW49IjQxbXMiJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZsdDt1bnBhY2smZ3Q7PC9kaXY+PGRpdj4m bmJzcDsgJm5ic3A7IEYxRjFGMEYwNzAzNDI1RTAwOEMwOUEwMEYxRjZGNEY0RjRGNEYyRjJGMkYy RjNGM0YzRjNGMUYxRjFGMUYwRjBGNEYwRjBGMEYwRjBGMEYwRjBGMEYwRjBGMkYxRjBGMEYxRjJG M0Y0RjVGNkYwRjlGMEYxRjNGMUYxRjZGNUY5RjRGNUYxRjJGMEYxRjBGM0Y2RjVGMEYwRjBGMEYw RTZGNUY0RjBGMEYwRjFGMEYwRjFGOUYwRjBGNUYzRjFGMUY2RjBGMEYwRjBGOUYwRjFGMkYzRjRG NUY2RjBGMkY1RjBGMEYwRjJGOUYzRjNGNEYyRjVGMUY3RjVGM0Y5NDA0MDQwNDA0MEY3RjVGMkYw RjFGMkYzRjBGOEYxRjJGMEY0RjVGNkY3RjhGMEY1RjZDMUM3RDVFMjAwMDE2QzZERUI5ODZEOUMw RUU1MDYwMTBBMDNBNDAwMDA4NDU4RjgyMjAwNDUwMDAwMDA4MDAwMDgwOTE1MDAwMDAwMDAwMDY1 MDAwNzUyMDc1MjVDMDAwMDAwMDAwMDAwMDAwMDgwPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZs dDtiaXRtYXAmZ3Q7ezIsIDMsIDQsIDExLCAxMiwgMTQsIDE5LCAyMiwgMjQsIDI1LCAyNiwgMjcs IDM3LCA0MSwgNDIsIDQ5LCA1MiwgNTMsIDU1fSZsdDsvYml0bWFwJmd0OzwvZGl2PjxkaXY+Jm5i c3A7ICZuYnNwOyAmbHQ7dW5wYWNrIGZsZD0iMiIgcGFja2FnZXI9Im9yZy5qcG9zLmlzby5JRkVf TExOVU0iJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O3ZhbHVlJmd0OzQ0 NDQyMjIyMzMzMzExMTEmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7 L3VucGFjayZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0O3VucGFjayBmbGQ9IjMiIHBh Y2thZ2VyPSJvcmcuanBvcy5pc28uSUZFX05VTUVSSUMiJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZu YnNwOyAmbmJzcDsgJmx0O3ZhbHVlJmd0OzAwNDAwMCZsdDsvdmFsdWUmZ3Q7PC9kaXY+PGRpdj4m bmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNrJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7 dW5wYWNrIGZsZD0iNCIgcGFja2FnZXI9Im9yZy5qcG9zLmlzby5JRkVfTlVNRVJJQyImZ3Q7PC9k aXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7dmFsdWUmZ3Q7MDAwMDAwMDAyMTAwJmx0 Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0Oy91bnBhY2smZ3Q7PC9kaXY+ PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDt1bnBhY2sgZmxkPSIxMSIgcGFja2FnZXI9Im9yZy5qcG9z Lmlzby5JRl9FQ0hBUiImZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7dmFs dWUmZ3Q7MTIzNDU2Jmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0Oy91 bnBhY2smZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDt1bnBhY2sgZmxkPSIxMiIgcGFj a2FnZXI9Im9yZy5qcG9zLmlzby5JRkVfTlVNRVJJQyImZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbHQ7dmFsdWUmZ3Q7MDkwMTMxMTY1OTQ1Jmx0Oy92YWx1ZSZndDs8L2Rpdj48 ZGl2PiZuYnNwOyAmbmJzcDsgJmx0Oy91bnBhY2smZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7 ICZsdDt1bnBhY2sgZmxkPSIxNCIgcGFja2FnZXI9Im9yZy5qcG9zLmlzby5JRkVfTlVNRVJJQyIm Z3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7dmFsdWUmZ3Q7MTIwMSZsdDsv dmFsdWUmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNrJmd0OzwvZGl2Pjxk aXY+Jm5ic3A7ICZuYnNwOyAmbHQ7dW5wYWNrIGZsZD0iMTkiIHBhY2thZ2VyPSJvcmcuanBvcy5p c28uSUZFX05VTUVSSUMiJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O3Zh bHVlJmd0OzAzNiZsdDsvdmFsdWUmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDsvdW5w YWNrJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7dW5wYWNrIGZsZD0iMjIiIHBhY2th Z2VyPSJvcmcuanBvcy5pc28uSUZFX0NIQVIiJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAm bmJzcDsgJmx0O3ZhbHVlJmd0OzUwMDAwMFc1NDAwMCZsdDsvdmFsdWUmZ3Q7PC9kaXY+PGRpdj4m bmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNrJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7 dW5wYWNrIGZsZD0iMjQiIHBhY2thZ2VyPSJvcmcuanBvcy5pc28uSUZFX05VTUVSSUMiJmd0Ozwv ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O3ZhbHVlJmd0OzEwMCZsdDsvdmFsdWUm Z3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNrJmd0OzwvZGl2PjxkaXY+Jm5i c3A7ICZuYnNwOyAmbHQ7dW5wYWNrIGZsZD0iMjUiIHBhY2thZ2VyPSJvcmcuanBvcy5pc28uSUZF X05VTUVSSUMiJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O3ZhbHVlJmd0 OzE5MDAmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7L3VucGFjayZn dDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0O3VucGFjayBmbGQ9IjI2IiBwYWNrYWdlcj0i b3JnLmpwb3MuaXNvLklGRV9OVU1FUklDIiZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5i c3A7ICZsdDt2YWx1ZSZndDs1MzExJmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJz cDsgJmx0Oy91bnBhY2smZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDt1bnBhY2sgZmxk PSIyNyIgcGFja2FnZXI9Im9yZy5qcG9zLmlzby5JRkVfTlVNRVJJQyImZ3Q7PC9kaXY+PGRpdj4m bmJzcDsgJm5ic3A7ICZuYnNwOyAmbHQ7dmFsdWUmZ3Q7NiZsdDsvdmFsdWUmZ3Q7PC9kaXY+PGRp dj4mbmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNrJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAm bHQ7dW5wYWNrIGZsZD0iMzciIHBhY2thZ2VyPSJvcmcuanBvcy5pc28uSUZFX0NIQVIiJmd0Ozwv ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O3ZhbHVlJmd0OzAwMDA5MDEyMzQ1NiZs dDsvdmFsdWUmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNrJmd0OzwvZGl2 PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7dW5wYWNrIGZsZD0iNDEiIHBhY2thZ2VyPSJvcmcuanBv cy5pc28uSUZFX0NIQVIiJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O3Zh bHVlJmd0OzAyNTAwMDI5Jmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0 Oy91bnBhY2smZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDt1bnBhY2sgZmxkPSI0MiIg cGFja2FnZXI9Im9yZy5qcG9zLmlzby5JRkVfQ0hBUiImZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbHQ7dmFsdWUmZ3Q7MzM0MjUxNzUzOSAmbmJzcDsgJm5ic3A7ICZsdDsvdmFs dWUmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNrJmd0OzwvZGl2PjxkaXY+ Jm5ic3A7ICZuYnNwOyAmbHQ7dW5wYWNrIGZsZD0iNDkiIHBhY2thZ2VyPSJvcmcuanBvcy5pc28u SUZFX05VTUVSSUMiJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJmx0O3ZhbHVl Jmd0Ozc1MiZsdDsvdmFsdWUmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDsvdW5wYWNr Jmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbHQ7dW5wYWNrIGZsZD0iNTIiIHBhY2thZ2Vy PSJvcmcuanBvcy5pc28uSUZCX0JJTkFSWSImZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZu YnNwOyAmbHQ7dmFsdWUgdHlwZT0nYmluYXJ5JyZndDtGMEYxRjJGM0YwRjhGMUYyJmx0Oy92YWx1 ZSZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0Oy91bnBhY2smZ3Q7PC9kaXY+PGRpdj4m bmJzcDsgJm5ic3A7ICZsdDt1bnBhY2sgZmxkPSI1MyIgcGFja2FnZXI9Im9yZy5qcG9zLmlzby5J RkVfTExDSEFSIiZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDt2YWx1ZSZn dDs1Njc4Jmx0Oy92YWx1ZSZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJmx0Oy91bnBhY2sm Z3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZsdDt1bnBhY2sgZmxkPSI1NSIgcGFja2FnZXI9 Im9yZy5qcG9zLmlzby5JRkVfTExMQklOQVJZIiZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZsdDt2YWx1ZSB0eXBlPSdiaW5hcnknJmd0O0MxQzdENUUyMDAwMTZDNkRFQjk4NkQ5 QzBFRTUwNjAxMEEwM0E0MDAwMDg0NThGODIyMDA0NTAwMDAwMDgwMDAwODA5MTUwMDAwMDAwMDAw NjUwMDA3NTIwNzUyNUMwMDAwMDAwMDAwMDAwMDAwODAmbHQ7L3ZhbHVlJmd0OzwvZGl2PjxkaXY+ Jm5ic3A7ICZuYnNwOyAmbHQ7L3VucGFjayZndDs8L2Rpdj48ZGl2PiZsdDsvbG9nJmd0Ozxicj48 L2Rpdj48ZGl2PiZsdDtpc29tc2cmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJmx0OyEtLSBvcmcuanBv cy5pc28ucGFja2FnZXIuR2VuZXJpY1BhY2thZ2VyW2FtZXgueG1sXSAtLSZndDs8L2Rpdj48ZGl2 PiZuYnNwOyAmbHQ7ZmllbGQgaWQ9IjAiIHZhbHVlPSIxMTAwIi8mZ3Q7PC9kaXY+PGRpdj4mbmJz cDsgJmx0O2ZpZWxkIGlkPSIyIiB2YWx1ZT0iNDQ0NDIyMjIzMzMzMTExMSIvJmd0OzwvZGl2Pjxk aXY+Jm5ic3A7ICZsdDtmaWVsZCBpZD0iMyIgdmFsdWU9IjAwNDAwMCIvJmd0OzwvZGl2PjxkaXY+ Jm5ic3A7ICZsdDtmaWVsZCBpZD0iNCIgdmFsdWU9IjAwMDAwMDAwMjEwMCIvJmd0OzwvZGl2Pjxk aXY+Jm5ic3A7ICZsdDtmaWVsZCBpZD0iMTEiIHZhbHVlPSIxMjM0NTYiLyZndDs8L2Rpdj48ZGl2 PiZuYnNwOyAmbHQ7ZmllbGQgaWQ9IjEyIiB2YWx1ZT0iMDkwMTMxMTY1OTQ1Ii8mZ3Q7PC9kaXY+ PGRpdj4mbmJzcDsgJmx0O2ZpZWxkIGlkPSIxNCIgdmFsdWU9IjEyMDEiLyZndDs8L2Rpdj48ZGl2 PiZuYnNwOyAmbHQ7ZmllbGQgaWQ9IjE5IiB2YWx1ZT0iMDM2Ii8mZ3Q7PC9kaXY+PGRpdj4mbmJz cDsgJmx0O2ZpZWxkIGlkPSIyMiIgdmFsdWU9IjUwMDAwMFc1NDAwMCIvJmd0OzwvZGl2PjxkaXY+ Jm5ic3A7ICZsdDtmaWVsZCBpZD0iMjQiIHZhbHVlPSIxMDAiLyZndDs8L2Rpdj48ZGl2PiZuYnNw OyAmbHQ7ZmllbGQgaWQ9IjI1IiB2YWx1ZT0iMTkwMCIvJmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZs dDtmaWVsZCBpZD0iMjYiIHZhbHVlPS
...

Victor Salaman

unread,
Oct 16, 2014, 6:12:13 AM10/16/14
to jpos-...@googlegroups.com

Hi:

After a while you develop the skill of reading hex dumps :)

One thing that would help you, is if you turn on logging for the package.

import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISOPackager;
import org.jpos.iso.ISOUtil;
import org.jpos.iso.packager.GenericPackager;
import org.jpos.util.Logger;
import org.jpos.util.SimpleLogListener;

public class TST1
{
    public static void main(String[] args) throws ISOException
    {
        Logger.getLogger("Q2").addListener(new SimpleLogListener(System.out));

        String s="F1F1F0F0703425E008C09A00F1F6F4F4" +
                 "F4F4F2F2F2F2F3F3F3F3F1F1F1F1F0F0" +
                 "F4F0F0F0F0F0F0F0F0F0F0F0F2F1F0F0" +
                 "F1F2F3F4F5F6F0F9F0F1F3F1F1F6F5F9" +
                 "F4F5F1F2F0F1F0F3F6F5F0F0F0F0F0E6" +
                 "F5F4F0F0F0F1F0F0F1F9F0F0F5F3F1F1" +
                 "F6F0F0F0F0F9F0F1F2F3F4F5F6F0F2F5" +
                 "F0F0F0F2F9F3F3F4F2F5F1F7F5F3F940" +
                 "40404040F7F5F2F0F1F2F3F0F8F1F2F0" +
                 "F4F5F6F7F8F0F5F6C1C7D5E200016C6D" +
                 "EB986D9C0EE506010A03A400008458F8" +
                 "22004500000080000809150000000000" +
                 "6500075207525C000000000000000080";

        byte[] rawBytes = ISOUtil.hex2byte(s);

        try
        {
            ISOPackager packager = new GenericPackager("amex.xml");
            packager.setLogger(Logger.getLogger("Q2"),"main");

            ISOMsg m = new ISOMsg();
            m.setPackager(packager);
            m.unpack(rawBytes);
        }
        catch (ISOException e)
        {
            e.printStackTrace();
        }
    }
}

That would produce debug information as your packager is unpacking the data. Hopefully you can determine what happened by looking where unpacked stopped and how sane is the data before it stopped.

Within your code that uses the AMEX Java SDK, comment/remove the line of code that sets PIN data (the one you are setting to ‘01230812345678’) and the SDK won’t produce the incorrect message. In other words, the SDK might be correct and you might just be using it incorrectly. The pinblock data should 8 bytes (binary) and you're setting the field to 16 bytes and that's confusing the SDK, therefore producing incorrect data.

I hope this helps,

/V


--
--
jPOS is licensed under AGPL - free for community usage for your open-source project. Licenses are also available for commercial usage. Please support jPOS, contact: sa...@jpos.org
 
Join us in IRC at http://webchat.freenode.net/?channels=jpos
 
You received this message because you are subscribed to the "jPOS Users" group.
Please see http://jpos.org/wiki/JPOS_Mailing_List_Readme_first
To post to this group, send email to jpos-...@googlegroups.com
To unsubscribe, send email to jpos-users+...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/jpos-users
---
You received this message because you are subscribed to the Google Groups "jPOS Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jpos-users+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages