Help Me ISO 8583 message Parsing

2,851 views
Skip to first unread message

parick

unread,
Oct 24, 2006, 1:04:33 AM10/24/06
to jPOS Users
I am getting ISO 8583 message as given below.

F2F2F0F0F030054128C080000000000C00000000F1F5F5F7F7F9F4F6F1F7F0F8F6F1F0F0F8F0F0F0F0F0F0F0F0F0F0F0F0F0F3F5F0F0F0F0F4F7F9F1F7F0F

6F0F3F0F9F0F7F4F7F3F3F3F6F1F1F0F1F2F0F1F1F4F0F3F0F0F8F0F1F1F0F6F6F7F6F1F2F2F2F9F5F7F7F9F4F6F1F7F0F8F6F1F0F0F87EF0F6F1F2F0F3F1

F2F8F1F9F9F9F4F2F0F34040404040404040F7F0F7F0F7F2F4F7F0F0F0F0F0F9F5F9F0F2F1F7F7F8F1F9F7F5F0F6F0F0F0F0F0F0F0F6F0F0F0F0F0F0


I want to create two functions

1> praseMessage(String strMsg)

where input

strMsg="F2F2F0F0F030054128C080000000000C00000000F1F5F5F7F7F9F4F6F1F7F0F8F6F1F0F0F8F0F0F0F0F0F0F0F0F0F0F0F0F0F3F5F0F0F0F0F4F7F9F1F7F0F6F0F3F0F9F0F7F4F7F3F3F3F6F1F1F0F1F2F0F1F1F4F0F3F0F0F8F0F1F1F0F6F6F7F6F1F2F2F2F9F5F7F7F9F4F6F1F7F0F8F6F1F0F0F87EF0F6F1F2F0F3F1F2F8F1F9F9F9F4F2F0F34040404040404040F7F0F7F0F7F2F4F7F0F0F0F0F0F9F5F9F0F2F1F7F7F8F1F9F7F5F0F6F0F0F0F0F0F0F0F6F0F0F0F0F0F0"

Expected outcome

Field 2 = 577946170861008
Field 3 = 000000
Field 4 = 000000035000
Field 11 = 047917
Field 12 = 060309074733
Field 22 = 361101201140
Field 24 = 300
Field 26 = 8011
Field 32 = 676122
Field 35 = 577946170861008=0612031281999
Field 37 = 4203
Field 41 = 70707247
Field 42 = 000009590217781
Field 49 = 975
Field 93 = 000000
Field 94 = 000000

2> String createMessage(String xmlFile)

where input

xmlFile is string which contains following values as xml.
Field 2 = 577946170861008
Field 3 = 000000
Field 4 = 000000035000
Field 11 = 047917
Field 12 = 060309074733
Field 22 = 361101201140
Field 24 = 300
Field 26 = 8011
Field 32 = 676122
Field 35 = 577946170861008=0612031281999
Field 37 = 4203
Field 41 = 70707247
Field 42 = 000009590217781
Field 49 = 975
Field 93 = 000000
Field 94 = 000000

Expected Outcome

strMsg="F2F2F0F0F030054128C080000000000C00000000F1F5F5F7F7F9F4F6F1F7F0F8F6F1F0F0F8F0F0F0F0F0F0F0F0F0F0F0F0F0F3F5F0F0F0F0F4F7F9F1F7F0F6F0F3F0F9F0F7F4F7F3F3F3F6F1F1F0F1F2F0F1F1F4F0F3F0F0F8F0F1F1F0F6F6F7F6F1F2F2F2F9F5F7F7F9F4F6F1F7F0F8F6F1F0F0F87EF0F6F1F2F0F3F1F2F8F1F9F9F9F4F2F0F34040404040404040F7F0F7F0F7F2F4F7F0F0F0F0F0F9F5F9F0F2F1F7F7F8F1F9F7F5F0F6F0F0F0F0F0F0F0F6F0F0F0F0F0F0"

Any help Appreciated. Please provide configuration details also .I am
new to jpos.

chhil

unread,
Oct 24, 2006, 2:36:15 AM10/24/06
to jpos-...@googlegroups.com
It would be a lot easier if you had a specification to work from than raw messages.
The message can give you an idea of what the fields may contain but if they add additional fields in your message you will not be able to parse those out as your packager wont have it defined.
Packager is something that lays out what your fields forming the ISOMsg contain and the data type/encoding to use to pouplate them.

In any case...your data seems to be in EBCDIC (notice the F's in the messages).

If you go through your message and try to map the raw data to the output fields you will notice fields are fixed length as there is no length indicator present in front of them, except the last 2 which have a 2 digit length indicator in front of it.
F0F6F0F0F0F0F0F0 where F0F6 = 06 length and the remainder 6 F0's is the data 000000.

Bare in mind there seems to be additional fields in your raw message.

So you basically need to define a xml file (as an example see so87ascii.xml) with your fields in it.

Here is some pseudo code...

 GenericPackager p = new GenericPackager("path/to/your/packager xml file");
ISOMsg m = new ISOMsg();
m.setPackager(pc);
m.unpack (raw message)

System.out.println(m.getValue(field number)); will display the contents of your fields.

I would advise you to go through some of the test java code that is part of jpos to see how the packagers are used and what the field data type naming conventions are... and of course purchasing the user guide will be money well spent.

-chhil

parick

unread,
Oct 24, 2006, 4:56:25 AM10/24/06
to jPOS Users

Thanks for ur quick response.

Well i am in the analysis phase to check this product is suitable for
my application.Once it is finalized i will be ordering the guide.

How can i constuct raw message from str .? It is a byte array and not
a sting.

I am getting file not found error even if the file present in the
location . What could be the reason.?
com.message.iso.ISOException: org.xml.sax.SAXParseException: File
"C:/JPOS/jpos/src/config/packager/isotest.xml" not found.
(org.xml.sax.SAXParseException: File
"C:/JPOS/jpos/src/config/packager/amex.xml" not found.)

try {
p = new
GenericPackager("C:/JPOS/jpos/src/config/packager/isotest.xml");


ISOMsg m = new ISOMsg();

m.setPackager(p);
String str=
"F2F2F0F0F030054128C080000000000C00000000F1F5F5F7F7F9F4F6F1F7F0F8F6F1F0F0F8F0F0F0F0F0F0F0F0F0F0F0F0F0F3F5F0F0F0F0F4F7F9F1F7F0F6F0F3F0F9F0F7F4F7F3F3F3F6F1F1F0F1F2F0F1F1F4F0F3F0F0F8F0F1F1F0F6F6F7F6F1F2F2F2F9F5F7F7F9F4F6F1F7F0F8F6F1F0F0F87EF0F6F1F2F0F3F1F2F8F1F9F9F9F4F2F0F34040404040404040F7F0F7F0F7F2F4F7F0F0F0F0F0F9F5F9F0F2F1F7F7F8F1F9F7F5F0F6F0F0F0F0F0F0F0F6F0F0F0F0F0F0";

//m.unpack (str);
//System.out.println("Test by patrick"+ m.getValue(2));
}

Thanks in advance
patick

parick

unread,
Oct 24, 2006, 8:23:22 AM10/24/06
to jPOS Users
I could solve sax error by replacing the xerces.jar .

Now I am getting following error . But the field 55 is not present in
the bitmap. Any help appreciated. The code & xml pasted below the
error message.

Error
------
error unpacking field 55
com.message.iso.ISOException: com.message.iso.IFB_LLLCHAR: Problem
unpacking field 55 (java.lang.ArrayIndexOutOfBoundsException: 370)
at
com.message.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:209)
at com.message.iso.ISOBasePackager.unpack(ISOBasePackager.java:234)
at com.message.iso.ISOMsg.unpack(ISOMsg.java:267)
at com.message.iso.gui.TestISOMSG.main(TestISOMSG.java:185)
Nested:java.lang.ArrayIndexOutOfBoundsException: 370
at
com.message.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:88)
at
com.message.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:204)
at com.message.iso.ISOBasePackager.unpack(ISOBasePackager.java:234)
at com.message.iso.ISOMsg.unpack(ISOMsg.java:267)
at com.message.iso.gui.TestISOMSG.main(TestISOMSG.java:185)
com.message.iso.ISOException: com.message.iso.IFB_LLLCHAR: Problem
unpacking field 55 (java.lang.ArrayIndexOutOfBoundsException: 370)
at
com.message.iso.ISOStringFieldPackager.unpack(ISOStringFieldPackager.java:209)
at com.message.iso.ISOBasePackager.unpack(ISOBasePackager.java:234)
at com.message.iso.ISOMsg.unpack(ISOMsg.java:267)
at com.message.iso.gui.TestISOMSG.main(TestISOMS

Pls find the code potion given below.
------------------------------------------------
GenericPackager p;
try {
p = new
GenericPackager("C:/JPOS/jpos/src/config/packager/isotest.xml");// Iso
test is pasted below/


ISOMsg m = new ISOMsg();
m.setPackager(p);
String
str="F2F2F0F0F030054128C080000000000C00000000F1F5F5F7F7F9F4F6F1F7F0F8F6F1F0F0F8F0F0F0F0F0F0F0F0F0F0F0F0F0F3F5F0F0F0F0F4F7F9F1F7F0F6F0F3F0F9F0F7F4F7F3F3F3F6F1F1F0F1F2F0F1F1F4F0F3F0F0F8F0F1F1F0F6F6F7F6F1F2F2F2F9F5F7F7F9F4F6F1F7F0F8F6F1F0F0F87EF0F6F1F2F0F3F1F2F8F1F9F9F9F4F2F0F34040404040404040F7F0F7F0F7F2F4F7F0F0F0F0F0F9F5F9F0F2F1F7F7F8F1F9F7F5F0F6F0F0F0F0F0F0F0F6F0F0F0F0F0F0";

m.unpack (str.getBytes());


System.out.println("Test by patrick"+ m.getValue(2));
}

catch (ISOException e)
{
e.printStackTrace();
}


ISOTest.xml
-----------------
<?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.IFE_NUMERIC"/>
<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.IFE_NUMERIC"/>
<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_NUMERIC"/>
<isofield
id="29"
length="9"
name="AMOUNT, SETTLEMENT FEE"
pad="true"
class="org.jpos.iso.IFE_NUMERIC"/>
<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="287"
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="255"
name="INTEGRATED CARD CIRCUIT SYSTEM RELATED DATA"
class="org.jpos.iso.IFB_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_NUMERIC"/>
<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>

chhil

unread,
Oct 24, 2006, 1:23:33 PM10/24/06
to jpos-...@googlegroups.com
If field 55 is being parsed then that would mean your message bitmap is indicating its presence.
Attach a logger to the packager and this will get you a lot more information about the fields and bitmap.

      Logger logger = new Logger();
        logger.addListener(new SimpleLogListener(System.out));
        packager.setLogger(logger, "blah");


-chhil

On 10/24/06, parick <patric...@gmail.com > wrote:

I could solve sax error by replacing the xerces.jar .

Now I am getting following error . But the field 55 is not present in
the bitmap. Any help appreciated.  The code  & xml pasted below the
error message.

Error
------
error unpacking field 55
com.message.iso.ISOException: com.message.iso.IFB_LLLCHAR: Problem
unpacking field 55 (java.lang.ArrayIndexOutOfBoundsException: 370)
        at
com.message.iso.ISOStringFieldPackager.unpack (ISOStringFieldPackager.java:209)

        at com.message.iso.ISOBasePackager.unpack(ISOBasePackager.java:234)
        at com.message.iso.ISOMsg.unpack(ISOMsg.java:267)
        at com.message.iso.gui.TestISOMSG.main (TestISOMSG.java:185)

Nested:java.lang.ArrayIndexOutOfBoundsException: 370
        at
com.message.iso.AsciiInterpreter.uninterpret(AsciiInterpreter.java:88)
        at
com.message.iso.ISOStringFieldPackager.unpack (ISOStringFieldPackager.java:204)

        at com.message.iso.ISOBasePackager.unpack(ISOBasePackager.java:234)
        at com.message.iso.ISOMsg.unpack(ISOMsg.java:267)
        at com.message.iso.gui.TestISOMSG.main (TestISOMSG.java:185)

com.message.iso.ISOException: com.message.iso.IFB_LLLCHAR: Problem
unpacking field 55 (java.lang.ArrayIndexOutOfBoundsException: 370)
        at
com.message.iso.ISOStringFieldPackager.unpack (ISOStringFieldPackager.java:209)

        at com.message.iso.ISOBasePackager.unpack(ISOBasePackager.java:234)
        at com.message.iso.ISOMsg.unpack(ISOMsg.java:267)
        at com.message.iso.gui.TestISOMSG.main (TestISOMS

Mark Salter

unread,
Oct 25, 2006, 1:16:11 AM10/25/06
to jpos-...@googlegroups.com
parick wrote:
> I could solve sax error by replacing the xerces.jar .
>
> Now I am getting following error . But the field 55 is not present in
> the bitmap. Any help appreciated. The code & xml pasted below the
> error message.
jPOS is only using the bitmap it sees in the message to try and unpack
it. It is pulling a field length from the wrong place and getting a
length that is too big to fit within the range of the message.

> GenericPackager p;
> try {
> p = new
> GenericPackager("C:/JPOS/jpos/src/config/packager/isotest.xml");// Iso
> test is pasted below/
> ISOMsg m = new ISOMsg();
> m.setPackager(p);
> String
> str="F2F2F0F0F030054128C080000000000C00000000F1F5F5F7F7F9F4F6F1F7F0F8F6F1F0F0F8F0F0F0F0F0F0F0F0F0F0F0F0F0F3F5F0F0F0F0F4F7F9F1F7F0F6F0F3F0F9F0F7F4F7F3F3F3F6F1F1F0F1F2F0F1F1F4F0F3F0F0F8F0F1F1F0F6F6F7F6F1F2F2F2F9F5F7F7F9F4F6F1F7F0F8F6F1F0F0F87EF0F6F1F2F0F3F1F2F8F1F9F9F9F4F2F0F34040404040404040F7F0F7F0F7F2F4F7F0F0F0F0F0F9F5F9F0F2F1F7F7F8F1F9F7F5F0F6F0F0F0F0F0F0F0F6F0F0F0F0F0F0";
> m.unpack (str.getBytes());

Here is the problem...

you need to :-

byte[] rawMessage = ISOUtil.hex2byte(str);
m.unpack(rawMessage);

Otherwise your MTI is F2F2 and your 'bitmap' starts F0F0F030054...
(possibly including field 55 (and others))

> System.out.println("Test by patrick"+ m.getValue(2));

To see a quick view of the message (data), try :-

m.dump(System.out,"");

--
Mark

parick

unread,
Oct 25, 2006, 11:52:49 PM10/25/06
to jPOS Users
!!! Thank you very much Mark....The problem resolved.

Once again thanks to chhil , ur quick response helped me a lot.

Thanks & Regards
Patrick....

chhil

unread,
Oct 26, 2006, 12:08:10 AM10/26/06
to jpos-...@googlegroups.com
We are glad to be of help... and I do appreciate the effort you went through to come to speed with the basics of jpos. The creator(s) of JPOS have made it very versatile and must have for EFT programmers. Its an open source project with  an excellent  user group that create,enhance,use and support it.

-chhil
Reply all
Reply to author
Forward
0 new messages