Nested field 0

View: New views
16 Messages — Rating Filter:   Alert me  

Nested field 0

by super_foly :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I have a a particular ISO implementation that requires field 0 to be
a nested field:

IS O Da ta Ele m en t # N a m e A ttrib ute s
0 Message Header
0.1 Message Identifier n-15
0.2 Message Version n-3
0.3 Field inError n-3
0.4 Message Receiving Time n-14
0.5 Message Type Identifier n-4
0.6 Bitmap, Primary b-64
1 Bitmap, Secondary b-64

I implemented this field as required but got the following error in
Q2:
 <send>
    <isomsg direction="outgoing">
      <isomsg id="0">
        <field id="0" value="RENDEZVOUS-8583"/>
        <field id="1" value="1.0"/>
        <field id="2" value="000"/>
        <field id="3" value="12345678901234"/>
        <field id="4" value="0800"/>
      </isomsg>
      <field id="7" value="1115032036"/>
      <field id="11" value="162036"/>
      <field id="12" value="162036"/>
      <field id="13" value="1115"/>
      <field id="70" value="270"/>
    </isomsg>
    <iso-exception>
      org.jpos.iso.IF_CHAR: Problem packing field -1
      <nested-exception>
      java.lang.ClassCastException: java.util.BitSet cannot be cast
to java.lang.String
        at org.jpos.iso.ISOStringFieldPackager.pack
(ISOStringFieldPackager.java:168)
        at org.jpos.iso.packager.GenericSubFieldPackager.pack
(GenericSubFieldPackager.java:155)
        at org.jpos.iso.ISOMsgFieldPackager.pack
(ISOMsgFieldPackager.java:88)
        at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:142)
        at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
        at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
        at org.jpos.q2.iso.ChannelAdaptor$Sender.run
(ChannelAdaptor.java:248)
        at java.lang.Thread.run(Unknown Source)
      </nested-exception>

I also got the following error from within my IDE:
<log realm="test-channel/192.168.100.201:2180" at="Sat Nov 15
16:09:57 WAT 2008.637">
  <send>
    <isomsg direction="outgoing">
      <isomsg id="0">
        <field id="0" value="RENDEZVOUS-8583"/>
        <field id="2" value="1.0"/>
        <field id="3" value="000"/>
        <field id="4" value="12345678901234"/>
        <field id="5" value="0800"/>
        <field id="6"
value="000000010001000000000000000000000000000000000000000000000000000
0"/>
      </isomsg>
      <field id="7" value="1016101324"/>
      <field id="11" value="1"/>
      <field id="70" value="101"/>
    </isomsg>
    <iso-exception>
      org.jpos.iso.IFA_NUMERIC: Problem packing field 0
      <nested-exception>
      java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be
cast to java.lang.String
        at org.jpos.iso.ISOStringFieldPackager.pack
(ISOStringFieldPackager.java:168)
        at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
        at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
        at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
        at org.jpos.simulator.Test.main(Test.java:70)
      </nested-exception>
      org.jpos.iso.ISOException: org.jpos.iso.IFA_NUMERIC: Problem
packing field 0 (java.lang.ClassCastException: org.jpos.iso.ISOMsg
cannot be cast to java.lang.String)
        at org.jpos.iso.ISOStringFieldPackager.pack
(ISOStringFieldPackager.java:181)
        at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
        at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
        at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
        at org.jpos.simulator.Test.main(Test.java:70)
Nested:java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be
cast to java.lang.String
        at org.jpos.iso.ISOStringFieldPackager.pack
(ISOStringFieldPackager.java:168)
        at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
        at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
        at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
        at org.jpos.simulator.Test.main(Test.java:70)
    </iso-exception>
  </send>
</log>Exception in thread "main" org.jpos.iso.ISOException:
org.jpos.iso.IFA_NUMERIC: Problem packing field 0
(java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be cast to
java.lang.String)
        at org.jpos.iso.ISOStringFieldPackager.pack
(ISOStringFieldPackager.java:181)
        at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
        at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
        at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
        at org.jpos.simulator.Test.main(Test.java:70)

Nested:java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be
cast to java.lang.String
        at org.jpos.iso.ISOStringFieldPackager.pack
(ISOStringFieldPackager.java:168)
        at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
        at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
        at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
        at org.jpos.simulator.Test.main(Test.java:70)

Kindly asssit as I cant seem to figure it out.

Thank you.




Re: Nested field 0

by super_foly :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sample dump from the simulator attached to the EFT platform for this
implementation.

[0]    52 45 4E 44 45 5A 56 4F  55 53 2D 38 35 38 33 31   RENDEZVOUS-
85831

[16]   2E 30 30 30 30 31 32 33  34 35 36 37 38 39 30
31   .000012345678901

[32]   32 33 34 30 38 30 30 82  20 00 00 00 00 00 00 04  
2340800. .......

[48]   00 00 00 00 00 00 00 30  35 30 36 30 33 32 32
31   .......050603221

[64]   36 32 39 36 32 33 38 30  36 36   6296238066


INFO  2008-11-15 09:42:49,578 : >>Input Bitmaps As strings of 1s and
0s>>
1000001000100000
0000000000000000
0000000000000000
0000000000000000
0000010000000000
0000000000000000
0000000000000000
0000000000000000

INFO  2008-11-15 09:42:49,578 :  Field 7: 0506032216
INFO  2008-11-15 09:42:49,578 :  Field 11: 296238
INFO  2008-11-15 09:42:49,578 :  Field 70: 066
INFO  2008-11-15 09:42:49,578 : >>>>>Full TranCode: 080000




--- In jpos-dev@..., "super_foly" <super_foly@...> wrote:
>
> I have a a particular ISO implementation that requires field 0 to
be

> a nested field:
>
> IS O Da ta Ele m en t # N a m e A ttrib ute s
> 0 Message Header
> 0.1 Message Identifier n-15
> 0.2 Message Version n-3
> 0.3 Field inError n-3
> 0.4 Message Receiving Time n-14
> 0.5 Message Type Identifier n-4
> 0.6 Bitmap, Primary b-64
> 1 Bitmap, Secondary b-64
>
> I implemented this field as required but got the following error in
> Q2:
>  <send>
>     <isomsg direction="outgoing">
>       <isomsg id="0">
>         <field id="0" value="RENDEZVOUS-8583"/>
>         <field id="1" value="1.0"/>
>         <field id="2" value="000"/>
>         <field id="3" value="12345678901234"/>
>         <field id="4" value="0800"/>
>       </isomsg>
>       <field id="7" value="1115032036"/>
>       <field id="11" value="162036"/>
>       <field id="12" value="162036"/>
>       <field id="13" value="1115"/>
>       <field id="70" value="270"/>
>     </isomsg>
>     <iso-exception>
>       org.jpos.iso.IF_CHAR: Problem packing field -1
>       <nested-exception>
>       java.lang.ClassCastException: java.util.BitSet cannot be cast
> to java.lang.String
> at org.jpos.iso.ISOStringFieldPackager.pack
> (ISOStringFieldPackager.java:168)
> at org.jpos.iso.packager.GenericSubFieldPackager.pack
> (GenericSubFieldPackager.java:155)
> at org.jpos.iso.ISOMsgFieldPackager.pack
> (ISOMsgFieldPackager.java:88)
> at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:142)
> at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
> at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
> at org.jpos.q2.iso.ChannelAdaptor$Sender.run
> (ChannelAdaptor.java:248)
> at java.lang.Thread.run(Unknown Source)
>       </nested-exception>
>
> I also got the following error from within my IDE:
> <log realm="test-channel/192.168.100.201:2180" at="Sat Nov 15
> 16:09:57 WAT 2008.637">
>   <send>
>     <isomsg direction="outgoing">
>       <isomsg id="0">
>         <field id="0" value="RENDEZVOUS-8583"/>
>         <field id="2" value="1.0"/>
>         <field id="3" value="000"/>
>         <field id="4" value="12345678901234"/>
>         <field id="5" value="0800"/>
>         <field id="6"
>
value="000000010001000000000000000000000000000000000000000000000000000

> 0"/>
>       </isomsg>
>       <field id="7" value="1016101324"/>
>       <field id="11" value="1"/>
>       <field id="70" value="101"/>
>     </isomsg>
>     <iso-exception>
>       org.jpos.iso.IFA_NUMERIC: Problem packing field 0
>       <nested-exception>
>       java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be
> cast to java.lang.String
> at org.jpos.iso.ISOStringFieldPackager.pack
> (ISOStringFieldPackager.java:168)
> at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
> at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
> at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
> at org.jpos.simulator.Test.main(Test.java:70)
>       </nested-exception>
>       org.jpos.iso.ISOException: org.jpos.iso.IFA_NUMERIC: Problem
> packing field 0 (java.lang.ClassCastException: org.jpos.iso.ISOMsg
> cannot be cast to java.lang.String)
> at org.jpos.iso.ISOStringFieldPackager.pack
> (ISOStringFieldPackager.java:181)
> at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
> at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
> at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
> at org.jpos.simulator.Test.main(Test.java:70)
> Nested:java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be
> cast to java.lang.String
> at org.jpos.iso.ISOStringFieldPackager.pack
> (ISOStringFieldPackager.java:168)
> at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
> at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
> at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
> at org.jpos.simulator.Test.main(Test.java:70)
>     </iso-exception>
>   </send>
> </log>Exception in thread "main" org.jpos.iso.ISOException:
> org.jpos.iso.IFA_NUMERIC: Problem packing field 0
> (java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be cast
to

> java.lang.String)
> at org.jpos.iso.ISOStringFieldPackager.pack
> (ISOStringFieldPackager.java:181)
> at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
> at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
> at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
> at org.jpos.simulator.Test.main(Test.java:70)
>
> Nested:java.lang.ClassCastException: org.jpos.iso.ISOMsg cannot be
> cast to java.lang.String
> at org.jpos.iso.ISOStringFieldPackager.pack
> (ISOStringFieldPackager.java:168)
> at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:117)
> at org.jpos.iso.ISOMsg.pack(ISOMsg.java:311)
> at org.jpos.iso.BaseChannel.send(BaseChannel.java:437)
> at org.jpos.simulator.Test.main(Test.java:70)
>
> Kindly asssit as I cant seem to figure it out.
>
> Thank you.
>



Re: Nested field 0

by Alejandro Revilla :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Are you sure you want to handle this as field 0?

It looks to me that you could handle this as a channel level header.


Re: Nested field 0

by super_foly :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Len,
    you are write it looks like a header. however the EFT platform
owner insisted its meant to be field 0.

I am now able to send the message across to the platform; however the
dump for my echo is different from the expected value.

Expected:
*********

[0]    52 45 4E 44 45 5A 56 4F  55 53 2D 38 35 38 33 31   RENDEZVOUS-85831

[16]   2E 30 30 30 30 31 32 33  34 35 36 37 38 39 30 31   .000012345678901

[32]   32 33 34 30 38 30 30 82  20 00 00 00 00 00 00 04   2340800. .......

[48]   00 00 00 00 00 00 00 30  35 30 36 30 33 32 32 31   .......050603221

[64]   36 32 39 36 32 33 38 30  36 36   6296238066


INFO  2008-11-15 09:42:49,578 : >>Input Bitmaps As strings of 1s and 0s>>
1000001000100000
0000000000000000
0000000000000000
0000000000000000
0000010000000000
0000000000000000
0000000000000000
0000000000000000

INFO  2008-11-15 09:42:49,578 :  Field 7: 0506032216
INFO  2008-11-15 09:42:49,578 :  Field 11: 296238
INFO  2008-11-15 09:42:49,578 :  Field 70: 066
INFO  2008-11-15 09:42:49,578 : >>>>>Full TranCode: 080000


My Implementation:
********************
<log realm="test-channel/192.168.100.201:2180" at="Sat Nov 15 18:57:54
WAT 2008.14">
  <send>
    <isomsg direction="outgoing">
      <isomsg id="0">
        <field id="0" value="RENDEZVOUS-8583"/>
        <field id="1" value="1.0"/>
        <field id="2" value="000"/>
        <field id="3" value="12345678901234"/>
        <field id="4" value="0800"/>
        <field id="5"
value="0000000100000000000000000000000000000000000000000000000000000000"/>
      </isomsg>
      <field id="7" value="1016101324"/>
      <field id="11" value="162036"/>
      <field id="70" value="270"/>
    </isomsg>
  </send>
</log>

Dump:

[0]    82 20 00 00 00 00 00 00  04 00 00 00 00 00 00 00   . ..............

[16]   01 03 52 45 4E 44 45 5A  56 4F 55 53 2D 38 35 38   ..RENDEZVOUS-858

[32]   33 31 2E 30 30 30 30 31  32 33 34 35 36 37 38 39   31.0000123456789

[48]   30 31 32 33 34 30 38 30  30 30 30 30 30 30 30 30   0123408000000000

[64]   31 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30   1000000000000000

[80]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30   0000000000000000

[96]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30   0000000000000000

[112]  30 30 30 30 30 30 30 30  30 31 30 31 36 31 30 31   0000000001016101

[128]  33 32 34 31 36 32 30 33  36 32 37 30   324162036270

I need to get the bitmap to conform to the expected dump.

Thank you.


--- In jpos-dev@..., Alejandro Revilla <apr@...> wrote:
>
> Are you sure you want to handle this as field 0?
>
> It looks to me that you could handle this as a channel level header.
>



Re: Re: Nested field 0

by Mark Salter-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

super_foly wrote:
> Hi Len,
>     you are write it looks like a header. however the EFT platform
> owner insisted its meant to be field 0.
Does the numbering convention matter?  As long as the message arrives
properly structured on the EFT interface, all will be well.

Is there a good reason - perhaps a report - that means the "composite
header field" needs to be treated as an entity?

>
> I am now able to send the message across to the platform
But not using a header as Alejandro suggested, I think you are using
jPos *not* as intended and getting rather odd results...

>
> Expected:
> *********

> [32]   32 33 34 30 38 30 30 82  20 00 00 00 00 00 00 04   2340800. .......
> [48]   00 00 00 00 00 00 00 30  35 30 36 30 33 32 32 31   .......050603221
>
>
> My Implementation:
> ********************
> [0]    82 20 00 00 00 00 00 00  04 00 00 00 00 00 00 00   . ..............

This seems to be an additional header, is this intentional?

> [16]   01 03 52 45 4E 44 45 5A  56 4F 55 53 2D 38 35 38   ..RENDEZVOUS-858
>
> [32]   33 31 2E 30 30 30 30 31  32 33 34 35 36 37 38 39   31.0000123456789
>
> [48]   30 31 32 33 34 30 38 30  30 30 30 30 30 30 30 30   0123408000000000
>
> [64]   31 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30   1000000000000000
>
> [80]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30   0000000000000000
>
> [96]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30   0000000000000000
>
> [112]  30 30 30 30 30 30 30 30  30 31 30 31 36 31 30 31   0000000001016101
>
> [128]  33 32 34 31 36 32 30 33  36 32 37 30   324162036270

It seems you are using an ASCII bitmap, where a binary one is required.

The original extract shows :-

0.6 Bitmap, Primary b-64
1 Bitmap, Secondary b-64

I would think this means Binary 64 bits (8 bytes).

You have not shown your packager definition of fields 0.6 (primary
bitmap) and 1 (secondary bitmap).
The bitmap in the request is fine, but yours looks odd (even given it is
ASCII and not binary), probably because you are attempting something not
intended to be supported by jPos as it stands (a composite field 0 -
which would normally by the message MTI).

Your echo is also not an 0810 message, I would guess the EFT owner is
addressing the biggest issues with your message first - the message
being way too large as your bitmap is taking up twice the expected
number of bits.

>
> I need to get the bitmap to conform to the expected dump.
Make sure you are using a binary field, and if you can share your
packager that might help us see what other problems you might be causing.

My suggestion - I agree with Alejandro completely - is to use a header
for everything upto and include field 0.4, then use jPos as it's design
intends for everything else (remember to correct your bitmap definition
(to a binary form)).  The EFT interface will never know you are placing
their header filed in a jpos header (rather than field 0) and they can
interpret it however they like (and so can you).

To use jPos in this manner will need some code changes (not lease
qualifying the position of the MTI and associated processing (isRequest
etc), but also the handling of the bitmap which seems to also have been
affected by your approach.

--
Mark

Re: Nested field 0

by super_foly :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Mark/Alen,
    Thanks for your response.
I now send the header as you suggested within a channel I developed.

An extract of the channel is below:

public class EswitchPostChannel extends BaseChannel {
    /**
     * Public constructor (used by Class.forName("...").newInstance())
     */
        protected Logger logger = null;
    protected String realm = "EswitchLogger";
    protected String originalRealm = null;
        protected String header = "RENDEZVOUS-
85831.000012345678901234";
        BufferedReader reader = null;
       
       
    public EswitchPostChannel () {
        super();
    }
    /**
     * Construct client ISOChannel
     * @param host  server TCP Address
     * @param port  server port number
     * @param p     an ISOPackager
     * @see ISOPackager
     */
    public EswitchPostChannel (String host, int port, ISOPackager p) {
        super(host, port, p);
    }
    /**
     * Construct server ISOChannel
     * @param p     an ISOPackager
     * @exception IOException
     * @see ISOPackager
     */
    public EswitchPostChannel (ISOPackager p) throws IOException {
        super(p);
    }
    /**
     * constructs a server ISOChannel associated with a Server Socket
     * @param p     an ISOPackager
     * @param serverSocket where to accept a connection
     * @exception IOException
     * @see ISOPackager
     */
    public EswitchPostChannel (ISOPackager p, ServerSocket
serverSocket)
        throws IOException
    {
        super(p, serverSocket);
    }
       
    protected void sendMessageLength(int len) throws IOException {
        serverOut.write (len >> 8);
        serverOut.write (len);
    }
   
    protected int getMessageLength() throws IOException, ISOException
{        
        return -1;
    }
 
   
    protected void sendMessageHeader(ISOMsg m, int len) throws
IOException {
    try {    
    BitSet bset = (BitSet) m.getValue(-1);
                       
    String strRawBmap
= "1000001000100000000000000000000000000000000000000000000000000000";
   
    ///ISOUtil.byte2BitSet(bmap,
strRawBmap.getBytes(), 64);  
                                 header = header + m.getMTI() +
ISOUtil.bitSet2String(bset.get(0, 64));
                                 
                                 System.out.print("HEADER >>>>>>" +  
header);
                                 serverOut.write(header.getBytes());
                         
                               
                        } catch (ISOException e) {
                                System.out.print(e.getMessage());
               
                }
    }  
   
    /**
     *      * @param header Hex representation of header
     */
     public void setHeader (String header) {
         super.setHeader (
             ISOUtil.hex2byte (header.getBytes(), 0, header.length())
         );
     }
   
}

The EFT platform receives my message but I seem to have a problem
with 0.6 which expects b-64. I retreive the primary bitmap and
noticed that its sent in ASCII format to the platform. However, it
expects binary data which I have not been able to acheive in getting
across to this platform.

This is the dump from the platform of the test I carried out:

[0]    52 45 4E 44 45 5A 56 4F  55 53 2D 38 35 38 33 31   RENDEZVOUS-
85831

[16]   2E 30 30 30 30 31 32 33  34 35 36 37 38 39 30
31   .000012345678901

[32]   32 33 34 30 38 30 30   2340800


INFO  2008-11-18 20:17:12,927 : >>Input Bitmaps As strings of 1s and
0s>>
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000
0000000000000000

INFO  2008-11-18 20:17:12,937 : >>>>>Full TranCode: 080000
>>>>>2008-11-18 8:17:12:938 : 0800 00 POS Purchase -  Received
java.lang.StringIndexOutOfBoundsException: String index out of range:
4
        at java.lang.String.substring(Unknown Source)
        at
com.neptunesoftware.gateway.host.XAPIPostilionInterface.SetGWayValue(
XAPIPostilionInterface.java:42)


Please how do I pack up the BitSet in binary format as part of my
header to ensure the outcome is as below:

[0]    52 45 4E 44 45 5A 56 4F  55 53 2D 38 35 38 33 31   RENDEZVOUS-
8583

[16]   2E 30 30 30 30 31 32 33  34 35 36 37 38 39 30
31   .00001234567890

[32]   32 33 34 30 38 30 30 82  20 00 00 00 00 00 00 04  
2340800. ......

[48]   00 00 00 00 00 00 00 30  35 30 36 30 33 32 32
31   .......05060322

[64]   36 32 39 36 35 36 37 30  36 36   6296567066


INFO  2008-11-15 19:03:49,296 : >>Input Bitmaps As strings of 1s and
0s>>
1000001000100000
0000000000000000
0000000000000000
0000000000000000
0000010000000000
0000000000000000
0000000000000000
0000000000000000

My Packager is given below:

public class EswitchPackager extends ISOBasePackager implements
LogSource {
        protected Logger logger = null;
    protected String realm = "EswitchLogger";
    protected String originalRealm = null;    
             
     
    protected ISOFieldPackager fld[] = {        
           
    /*000*/new IFA_NUMERIC  ( 4, "MESSAGE IDENTIFIER"),
    /*001*/new IFB_BITMAP  ( 8, "BIT MAP"),
    /*002*/new IFA_LLNUM   ( 19, "PAN - PRIMARY ACCOUNT
NUMBER"),
    /*003*/new IFA_NUMERIC (  6, "PROCESSING CODE"),
    /*004*/new IFA_NUMERIC ( 12, "AMOUNT, TRANSACTION"),
    /*005*/new IFA_NUMERIC ( 12, "AMOUNT, SETTLEMENT"),
    /*006*/new IFA_NUMERIC ( 12, "AMOUNT, CARDHOLDER
BILLING"),
    /*007*/new IFA_NUMERIC ( 10, "TRANSMISSION DATE AND
TIME"),
            new IFA_NUMERIC (  8, "AMOUNT, CARDHOLDER BILLING FEE"),
            new IFA_NUMERIC (  8, "CONVERSION RATE, SETTLEMENT"),
            new IFA_NUMERIC (  8, "CONVERSION RATE, CARDHOLDER
BILLING"),
            new IFA_NUMERIC (  6, "SYSTEM TRACE AUDIT NUMBER"),
            new IFA_NUMERIC (  6, "TIME, LOCAL TRANSACTION"),
            new IFA_NUMERIC (  4, "DATE, LOCAL TRANSACTION"),
            new IFA_NUMERIC (  4, "DATE, EXPIRATION"),
            new IFA_NUMERIC (  4, "DATE, SETTLEMENT"),
            new IFA_NUMERIC (  4, "DATE, CONVERSION"),
            new IFA_NUMERIC (  4, "DATE, CAPTURE"),
            new IFA_NUMERIC (  4, "MERCHANTS TYPE"),
            new IFA_NUMERIC (  3, "ACQUIRING INSTITUTION COUNTRY
CODE"),
            new IFA_NUMERIC (  3, "PAN EXTENDED COUNTRY CODE"),
            new IFA_NUMERIC (  3, "FORWARDING INSTITUTION COUNTRY
CODE"),
            new IFA_NUMERIC (  3, "POINT OF SERVICE ENTRY MODE"),
            new IFA_NUMERIC (  3, "CARD SEQUENCE NUMBER"),
            new IFA_NUMERIC (  3, "NETWORK INTERNATIONAL
IDENTIFIEER"),
            new IFA_NUMERIC (  2, "POINT OF SERVICE CONDITION CODE"),
            new IFA_NUMERIC (  2, "POINT OF SERVICE PIN CAPTURE
CODE"),
            new IFA_NUMERIC (  1, "AUTHORIZATION IDENTIFICATION RESP
LEN"),
            new IFA_AMOUNT  (  9, "AMOUNT, TRANSACTION FEE"),
            new IFA_AMOUNT  (  9, "AMOUNT, SETTLEMENT FEE"),
            new IFA_AMOUNT  (  9, "AMOUNT, TRANSACTION PROCESSING
FEE"),
            new IFA_AMOUNT  (  9, "AMOUNT, SETTLEMENT PROCESSING
FEE"),
            new IFA_LLNUM   ( 11, "ACQUIRING INSTITUTION IDENT CODE"),
            new IFA_LLNUM   ( 11, "FORWARDING INSTITUTION IDENT
CODE"),
            new IFA_LLCHAR  ( 28, "PAN EXTENDED"),
            new IFA_LLNUM   ( 37, "TRACK 2 DATA"),
            new IFA_LLLCHAR (104, "TRACK 3 DATA"),
            new IF_CHAR     ( 12, "RETRIEVAL REFERENCE NUMBER"),
            new IF_CHAR     (  6, "AUTHORIZATION IDENTIFICATION
RESPONSE"),
            new IF_CHAR     (  2, "RESPONSE CODE"),
            new IF_CHAR     (  3, "SERVICE RESTRICTION CODE"),
            new IF_CHAR     (  8, "CARD ACCEPTOR TERMINAL
IDENTIFICACION"),
            new IF_CHAR     ( 15, "CARD ACCEPTOR IDENTIFICATION
CODE" ),
            new IF_CHAR     ( 40, "CARD ACCEPTOR NAME/LOCATION"),
            new IFA_LLCHAR  ( 25, "ADITIONAL RESPONSE DATA"),
            new IFA_LLCHAR  ( 76, "TRACK 1 DATA"),
            new IFA_LLLCHAR (999, "ADITIONAL DATA - ISO"),
            new IFA_LLLCHAR (999, "ADITIONAL DATA - NATIONAL"),
            new IFA_LLLCHAR (999, "ADITIONAL DATA - PRIVATE"),
            new IF_CHAR     (  3, "CURRENCY CODE, TRANSACTION"),
            new IF_CHAR     (  3, "CURRENCY CODE, SETTLEMENT"),
            new IF_CHAR     (  3, "CURRENCY CODE, CARDHOLDER
BILLING"   ),
            new IFA_BINARY  (  8, "PIN DATA"   ),
            new IFA_NUMERIC ( 16, "SECURITY RELATED CONTROL
INFORMATION"),
            new IFA_LLLCHAR (120, "ADDITIONAL AMOUNTS"),
            new IFA_LLLCHAR (999, "RESERVED ISO"),
            new IFA_LLLCHAR (999, "RESERVED ISO"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
            new IFA_BINARY  (  8, "MESSAGE AUTHENTICATION CODE
FIELD"),
            new IFA_BINARY  (  8, "BITMAP, EXTENDED"),
            new IFA_NUMERIC (  1, "SETTLEMENT CODE"),
            new IFA_NUMERIC (  2, "EXTENDED PAYMENT CODE"),
            new IFA_NUMERIC (  3, "RECEIVING INSTITUTION COUNTRY
CODE"),
            new IFA_NUMERIC (  3, "SETTLEMENT INSTITUTION COUNTRY
CODE"),
            new IFA_NUMERIC (  3, "NETWORK MANAGEMENT INFORMATION
CODE"),
            new IFA_NUMERIC (  4, "MESSAGE NUMBER"),
            new IFA_NUMERIC (  4, "MESSAGE NUMBER LAST"),
            new IFA_NUMERIC (  6, "DATE ACTION"),
            new IFA_NUMERIC ( 10, "CREDITS NUMBER"),
            new IFA_NUMERIC ( 10, "CREDITS REVERSAL NUMBER"),
            new IFA_NUMERIC ( 10, "DEBITS NUMBER"),
            new IFA_NUMERIC ( 10, "DEBITS REVERSAL NUMBER"),
            new IFA_NUMERIC ( 10, "TRANSFER NUMBER"),
            new IFA_NUMERIC ( 10, "TRANSFER REVERSAL NUMBER"),
            new IFA_NUMERIC ( 10, "INQUIRIES NUMBER"),
            new IFA_NUMERIC ( 10, "AUTHORIZATION NUMBER"),
            new IFA_NUMERIC ( 12, "CREDITS, PROCESSING FEE AMOUNT"),
            new IFA_NUMERIC ( 12, "CREDITS, TRANSACTION FEE AMOUNT"),
            new IFA_NUMERIC ( 12, "DEBITS, PROCESSING FEE AMOUNT"),
            new IFA_NUMERIC ( 12, "DEBITS, TRANSACTION FEE AMOUNT"),
            new IFA_NUMERIC ( 16, "CREDITS, AMOUNT"),
            new IFA_NUMERIC ( 16, "CREDITS, REVERSAL AMOUNT"),
            new IFA_NUMERIC ( 16, "DEBITS, AMOUNT"),
            new IFA_NUMERIC ( 16, "DEBITS, REVERSAL AMOUNT"),
            new IFA_NUMERIC ( 42, "ORIGINAL DATA ELEMENTS"),
            new IF_CHAR     (  1, "FILE UPDATE CODE"),
            new IF_CHAR     (  2, "FILE SECURITY CODE"),
            new IF_CHAR     (  5, "RESPONSE INDICATOR"),
            new IF_CHAR     (  7, "SERVICE INDICATOR"),
            new IF_CHAR     ( 42, "REPLACEMENT AMOUNTS"),
            new IFA_BINARY  ( 8, "MESSAGE SECURITY CODE"),
            new IFA_AMOUNT  ( 17, "AMOUNT, NET SETTLEMENT"),
            new IF_CHAR     ( 25, "PAYEE"),
            new IFA_LLNUM   ( 11, "SETTLEMENT INSTITUTION IDENT
CODE"),
            new IFA_LLNUM   ( 11, "RECEIVING INSTITUTION IDENT CODE"),
            new IFA_LLCHAR  ( 17, "FILE NAME"),
            new IFA_LLCHAR  ( 28, "ACCOUNT IDENTIFICATION 1"),
            new IFA_LLCHAR  ( 28, "ACCOUNT IDENTIFICATION 2"),
            new IFA_LLLCHAR (100, "TRANSACTION DESCRIPTION"),
            new IFA_LLLCHAR (999, "RESERVED ISO USE"),
            new IFA_LLLCHAR (999, "RESERVED ISO USE"),
            new IFA_LLLCHAR (999, "RESERVED ISO USE"),
            new IFA_LLLCHAR (999, "RESERVED ISO USE"),
            new IFA_LLLCHAR (999, "RESERVED ISO USE"),
            new IFA_LLLCHAR (999, "RESERVED ISO USE"),
            new IFA_LLLCHAR (999, "RESERVED ISO USE"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"   ),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"  ),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
            new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
            new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
            new IFA_LLLCHAR (50, "RESERVED PRIVATE USE"),          
            new IFA_LLLCHAR (999, "MAC 2")
        };
           
    public EswitchPackager() {
        super();
        try {
        setFieldPackager(fld);
        } catch (Exception e) {
        Logger.log (new LogEvent (this, e.getMessage()));
        }
    }
   
        /* (non-Javadoc)
         * @see org.jpos.util.LogSource#setLogger
(org.jpos.util.Logger, java.lang.String)
         */
        public void setLogger (Logger logger, String realm) {
                this.logger = logger;
                this.realm  = realm;
                if (originalRealm == null)
                    originalRealm = realm;      
        }
       
        /* (non-Javadoc)
         * @see org.jpos.util.LogSource#getRealm()
         */
        public String getRealm () {
                return realm;
        }
       
        /* (non-Javadoc)
         * @see org.jpos.util.LogSource#getLogger()
         */
        public Logger getLogger() {
                return logger;
        }
        public String getOriginalRealm() {
                return originalRealm == null ?
                    this.getClass().getName() : originalRealm;
        }

}


--- In jpos-dev@..., Mark Salter <marksalter@...> wrote:
>
> super_foly wrote:
> > Hi Len,
> >     you are write it looks like a header. however the EFT platform
> > owner insisted its meant to be field 0.
> Does the numbering convention matter?  As long as the message
arrives
> properly structured on the EFT interface, all will be well.
>
> Is there a good reason - perhaps a report - that means
the "composite

> header field" needs to be treated as an entity?
>
> >
> > I am now able to send the message across to the platform
> But not using a header as Alejandro suggested, I think you are using
> jPos *not* as intended and getting rather odd results...
>
> >
> > Expected:
> > *********
>
> > [32]   32 33 34 30 38 30 30 82  20 00 00 00 00 00 00 04  
2340800. .......
> > [48]   00 00 00 00 00 00 00 30  35 30 36 30 33 32 32
31   .......050603221
> >
> >
> > My Implementation:
> > ********************
> > [0]    82 20 00 00 00 00 00 00  04 00 00 00 00 00 00
00   . ..............
>
> This seems to be an additional header, is this intentional?
>
> > [16]   01 03 52 45 4E 44 45 5A  56 4F 55 53 2D 38 35
38   ..RENDEZVOUS-858
> >
> > [32]   33 31 2E 30 30 30 30 31  32 33 34 35 36 37 38 39  
31.0000123456789
> >
> > [48]   30 31 32 33 34 30 38 30  30 30 30 30 30 30 30 30  
0123408000000000
> >
> > [64]   31 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  
1000000000000000
> >
> > [80]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  
0000000000000000
> >
> > [96]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  
0000000000000000
> >
> > [112]  30 30 30 30 30 30 30 30  30 31 30 31 36 31 30 31  
0000000001016101
> >
> > [128]  33 32 34 31 36 32 30 33  36 32 37 30   324162036270
>
> It seems you are using an ASCII bitmap, where a binary one is
required.

>
> The original extract shows :-
>
> 0.6 Bitmap, Primary b-64
> 1 Bitmap, Secondary b-64
>
> I would think this means Binary 64 bits (8 bytes).
>
> You have not shown your packager definition of fields 0.6 (primary
> bitmap) and 1 (secondary bitmap).
> The bitmap in the request is fine, but yours looks odd (even given
it is
> ASCII and not binary), probably because you are attempting
something not
> intended to be supported by jPos as it stands (a composite field 0 -
> which would normally by the message MTI).
>
> Your echo is also not an 0810 message, I would guess the EFT owner
is
> addressing the biggest issues with your message first - the message
> being way too large as your bitmap is taking up twice the expected
> number of bits.
>
> >
> > I need to get the bitmap to conform to the expected dump.
> Make sure you are using a binary field, and if you can share your
> packager that might help us see what other problems you might be
causing.
>
> My suggestion - I agree with Alejandro completely - is to use a
header
> for everything upto and include field 0.4, then use jPos as it's
design
> intends for everything else (remember to correct your bitmap
definition
> (to a binary form)).  The EFT interface will never know you are
placing
> their header filed in a jpos header (rather than field 0) and they
can
> interpret it however they like (and so can you).
>
> To use jPos in this manner will need some code changes (not lease
> qualifying the position of the MTI and associated processing
(isRequest
> etc), but also the handling of the bitmap which seems to also have
been
> affected by your approach.
>
> --
> Mark
>



Re: Nested field 0

by super_foly :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Mark/Alen,
         Kindly assist by responding to this my last posting.
Thank you for all your support.


--- In jpos-dev@..., "super_foly" <super_foly@...> wrote:

>
> Hi Mark/Alen,
>     Thanks for your response.
> I now send the header as you suggested within a channel I developed.
>
> An extract of the channel is below:
>
> public class EswitchPostChannel extends BaseChannel {
>     /**
>      * Public constructor (used by Class.forName("...").newInstance
())

>      */
> protected Logger logger = null;
>     protected String realm = "EswitchLogger";
>     protected String originalRealm = null;
> protected String header = "RENDEZVOUS-
> 85831.000012345678901234";
> BufferedReader reader = null;
>
>
>     public EswitchPostChannel () {
>         super();
>     }
>     /**
>      * Construct client ISOChannel
>      * @param host  server TCP Address
>      * @param port  server port number
>      * @param p     an ISOPackager
>      * @see ISOPackager
>      */
>     public EswitchPostChannel (String host, int port, ISOPackager
p) {

>         super(host, port, p);
>     }
>     /**
>      * Construct server ISOChannel
>      * @param p     an ISOPackager
>      * @exception IOException
>      * @see ISOPackager
>      */
>     public EswitchPostChannel (ISOPackager p) throws IOException {
>         super(p);
>     }
>     /**
>      * constructs a server ISOChannel associated with a Server
Socket

>      * @param p     an ISOPackager
>      * @param serverSocket where to accept a connection
>      * @exception IOException
>      * @see ISOPackager
>      */
>     public EswitchPostChannel (ISOPackager p, ServerSocket
> serverSocket)
>         throws IOException
>     {
>         super(p, serverSocket);
>     }
>        
>     protected void sendMessageLength(int len) throws IOException {
>         serverOut.write (len >> 8);
>         serverOut.write (len);
>     }
>    
>     protected int getMessageLength() throws IOException,
ISOException

> {        
>         return -1;
>     }
>  
>    
>     protected void sendMessageHeader(ISOMsg m, int len) throws
> IOException {
>     try {    
>     BitSet bset = (BitSet) m.getValue(-1);
>              
>     String strRawBmap
>
= "1000001000100000000000000000000000000000000000000000000000000000";
>    
>     ///ISOUtil.byte2BitSet(bmap,
> strRawBmap.getBytes(), 64);  
> header = header + m.getMTI() +
> ISOUtil.bitSet2String(bset.get(0, 64));
         

>
> System.out.print("HEADER >>>>>>" +  
> header);
> serverOut.write(header.getBytes());
>
>
> } catch (ISOException e) {
> System.out.print(e.getMessage());
>        
>        }
>     }  
>    
>     /**
>      *      * @param header Hex representation of header
>      */
>      public void setHeader (String header) {
>          super.setHeader (
>              ISOUtil.hex2byte (header.getBytes(), 0, header.length
())
>          );
>      }
>    
> }
>
> The EFT platform receives my message but I seem to have a problem
> with 0.6 which expects b-64. I retreive the primary bitmap and
> noticed that its sent in ASCII format to the platform. However, it
> expects binary data which I have not been able to acheive in
getting
> across to this platform.
>
> This is the dump from the platform of the test I carried out:
>
> [0]    52 45 4E 44 45 5A 56 4F  55 53 2D 38 35 38 33 31  
RENDEZVOUS-
> 85831
>
> [16]   2E 30 30 30 30 31 32 33  34 35 36 37 38 39 30
> 31   .000012345678901
>
> [32]   32 33 34 30 38 30 30   2340800
>
>
> INFO  2008-11-18 20:17:12,927 : >>Input Bitmaps As strings of 1s
and

> 0s>>
> 0000000000000000
> 0000000000000000
> 0000000000000000
> 0000000000000000
> 0000000000000000
> 0000000000000000
> 0000000000000000
> 0000000000000000
>
> INFO  2008-11-18 20:17:12,937 : >>>>>Full TranCode: 080000
> >>>>>2008-11-18 8:17:12:938 : 0800 00 POS Purchase -  Received
> java.lang.StringIndexOutOfBoundsException: String index out of
range:
> 4
>         at java.lang.String.substring(Unknown Source)
>         at
> com.neptunesoftware.gateway.host.XAPIPostilionInterface.SetGWayValue
(
> XAPIPostilionInterface.java:42)
>
>
> Please how do I pack up the BitSet in binary format as part of my
> header to ensure the outcome is as below:
>
> [0]    52 45 4E 44 45 5A 56 4F  55 53 2D 38 35 38 33 31  
RENDEZVOUS-

> 8583
>
> [16]   2E 30 30 30 30 31 32 33  34 35 36 37 38 39 30
> 31   .00001234567890
>
> [32]   32 33 34 30 38 30 30 82  20 00 00 00 00 00 00 04  
> 2340800. ......
>
> [48]   00 00 00 00 00 00 00 30  35 30 36 30 33 32 32
> 31   .......05060322
>
> [64]   36 32 39 36 35 36 37 30  36 36   6296567066
>
>
> INFO  2008-11-15 19:03:49,296 : >>Input Bitmaps As strings of 1s
and

> 0s>>
> 1000001000100000
> 0000000000000000
> 0000000000000000
> 0000000000000000
> 0000010000000000
> 0000000000000000
> 0000000000000000
> 0000000000000000
>
> My Packager is given below:
>
> public class EswitchPackager extends ISOBasePackager implements
> LogSource {
> protected Logger logger = null;
>     protected String realm = "EswitchLogger";
>     protected String originalRealm = null;    
>              
>      
>     protected ISOFieldPackager fld[] = {        
>            
>     /*000*/new IFA_NUMERIC  ( 4, "MESSAGE IDENTIFIER"),
>     /*001*/new IFB_BITMAP  ( 8, "BIT MAP"),
>     /*002*/new IFA_LLNUM   ( 19, "PAN - PRIMARY ACCOUNT
> NUMBER"),
>     /*003*/new IFA_NUMERIC (  6, "PROCESSING CODE"),
>     /*004*/new IFA_NUMERIC ( 12, "AMOUNT, TRANSACTION"),
>     /*005*/new IFA_NUMERIC ( 12, "AMOUNT, SETTLEMENT"),
>     /*006*/new IFA_NUMERIC ( 12, "AMOUNT, CARDHOLDER
> BILLING"),
>     /*007*/new IFA_NUMERIC ( 10, "TRANSMISSION DATE AND
> TIME"),
>             new IFA_NUMERIC (  8, "AMOUNT, CARDHOLDER BILLING FEE"),
>             new IFA_NUMERIC (  8, "CONVERSION RATE, SETTLEMENT"),
>             new IFA_NUMERIC (  8, "CONVERSION RATE, CARDHOLDER
> BILLING"),
>             new IFA_NUMERIC (  6, "SYSTEM TRACE AUDIT NUMBER"),
>             new IFA_NUMERIC (  6, "TIME, LOCAL TRANSACTION"),
>             new IFA_NUMERIC (  4, "DATE, LOCAL TRANSACTION"),
>             new IFA_NUMERIC (  4, "DATE, EXPIRATION"),
>             new IFA_NUMERIC (  4, "DATE, SETTLEMENT"),
>             new IFA_NUMERIC (  4, "DATE, CONVERSION"),
>             new IFA_NUMERIC (  4, "DATE, CAPTURE"),
>             new IFA_NUMERIC (  4, "MERCHANTS TYPE"),
>             new IFA_NUMERIC (  3, "ACQUIRING INSTITUTION COUNTRY
> CODE"),
>             new IFA_NUMERIC (  3, "PAN EXTENDED COUNTRY CODE"),
>             new IFA_NUMERIC (  3, "FORWARDING INSTITUTION COUNTRY
> CODE"),
>             new IFA_NUMERIC (  3, "POINT OF SERVICE ENTRY MODE"),
>             new IFA_NUMERIC (  3, "CARD SEQUENCE NUMBER"),
>             new IFA_NUMERIC (  3, "NETWORK INTERNATIONAL
> IDENTIFIEER"),
>             new IFA_NUMERIC (  2, "POINT OF SERVICE CONDITION
CODE"),
>             new IFA_NUMERIC (  2, "POINT OF SERVICE PIN CAPTURE
> CODE"),
>             new IFA_NUMERIC (  1, "AUTHORIZATION IDENTIFICATION
RESP
> LEN"),
>             new IFA_AMOUNT  (  9, "AMOUNT, TRANSACTION FEE"),
>             new IFA_AMOUNT  (  9, "AMOUNT, SETTLEMENT FEE"),
>             new IFA_AMOUNT  (  9, "AMOUNT, TRANSACTION PROCESSING
> FEE"),
>             new IFA_AMOUNT  (  9, "AMOUNT, SETTLEMENT PROCESSING
> FEE"),
>             new IFA_LLNUM   ( 11, "ACQUIRING INSTITUTION IDENT
CODE"),

>             new IFA_LLNUM   ( 11, "FORWARDING INSTITUTION IDENT
> CODE"),
>             new IFA_LLCHAR  ( 28, "PAN EXTENDED"),
>             new IFA_LLNUM   ( 37, "TRACK 2 DATA"),
>             new IFA_LLLCHAR (104, "TRACK 3 DATA"),
>             new IF_CHAR     ( 12, "RETRIEVAL REFERENCE NUMBER"),
>             new IF_CHAR     (  6, "AUTHORIZATION IDENTIFICATION
> RESPONSE"),
>             new IF_CHAR     (  2, "RESPONSE CODE"),
>             new IF_CHAR     (  3, "SERVICE RESTRICTION CODE"),
>             new IF_CHAR     (  8, "CARD ACCEPTOR TERMINAL
> IDENTIFICACION"),
>             new IF_CHAR     ( 15, "CARD ACCEPTOR IDENTIFICATION
> CODE" ),
>             new IF_CHAR     ( 40, "CARD ACCEPTOR NAME/LOCATION"),
>             new IFA_LLCHAR  ( 25, "ADITIONAL RESPONSE DATA"),
>             new IFA_LLCHAR  ( 76, "TRACK 1 DATA"),
>             new IFA_LLLCHAR (999, "ADITIONAL DATA - ISO"),
>             new IFA_LLLCHAR (999, "ADITIONAL DATA - NATIONAL"),
>             new IFA_LLLCHAR (999, "ADITIONAL DATA - PRIVATE"),
>             new IF_CHAR     (  3, "CURRENCY CODE, TRANSACTION"),
>             new IF_CHAR     (  3, "CURRENCY CODE, SETTLEMENT"),
>             new IF_CHAR     (  3, "CURRENCY CODE, CARDHOLDER
> BILLING"   ),
>             new IFA_BINARY  (  8, "PIN DATA"   ),
>             new IFA_NUMERIC ( 16, "SECURITY RELATED CONTROL
> INFORMATION"),
>             new IFA_LLLCHAR (120, "ADDITIONAL AMOUNTS"),
>             new IFA_LLLCHAR (999, "RESERVED ISO"),
>             new IFA_LLLCHAR (999, "RESERVED ISO"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE"),
>             new IFA_BINARY  (  8, "MESSAGE AUTHENTICATION CODE
> FIELD"),
>             new IFA_BINARY  (  8, "BITMAP, EXTENDED"),
>             new IFA_NUMERIC (  1, "SETTLEMENT CODE"),
>             new IFA_NUMERIC (  2, "EXTENDED PAYMENT CODE"),
>             new IFA_NUMERIC (  3, "RECEIVING INSTITUTION COUNTRY
> CODE"),
>             new IFA_NUMERIC (  3, "SETTLEMENT INSTITUTION COUNTRY
> CODE"),
>             new IFA_NUMERIC (  3, "NETWORK MANAGEMENT INFORMATION
> CODE"),
>             new IFA_NUMERIC (  4, "MESSAGE NUMBER"),
>             new IFA_NUMERIC (  4, "MESSAGE NUMBER LAST"),
>             new IFA_NUMERIC (  6, "DATE ACTION"),
>             new IFA_NUMERIC ( 10, "CREDITS NUMBER"),
>             new IFA_NUMERIC ( 10, "CREDITS REVERSAL NUMBER"),
>             new IFA_NUMERIC ( 10, "DEBITS NUMBER"),
>             new IFA_NUMERIC ( 10, "DEBITS REVERSAL NUMBER"),
>             new IFA_NUMERIC ( 10, "TRANSFER NUMBER"),
>             new IFA_NUMERIC ( 10, "TRANSFER REVERSAL NUMBER"),
>             new IFA_NUMERIC ( 10, "INQUIRIES NUMBER"),
>             new IFA_NUMERIC ( 10, "AUTHORIZATION NUMBER"),
>             new IFA_NUMERIC ( 12, "CREDITS, PROCESSING FEE AMOUNT"),
>             new IFA_NUMERIC ( 12, "CREDITS, TRANSACTION FEE
AMOUNT"),

>             new IFA_NUMERIC ( 12, "DEBITS, PROCESSING FEE AMOUNT"),
>             new IFA_NUMERIC ( 12, "DEBITS, TRANSACTION FEE AMOUNT"),
>             new IFA_NUMERIC ( 16, "CREDITS, AMOUNT"),
>             new IFA_NUMERIC ( 16, "CREDITS, REVERSAL AMOUNT"),
>             new IFA_NUMERIC ( 16, "DEBITS, AMOUNT"),
>             new IFA_NUMERIC ( 16, "DEBITS, REVERSAL AMOUNT"),
>             new IFA_NUMERIC ( 42, "ORIGINAL DATA ELEMENTS"),
>             new IF_CHAR     (  1, "FILE UPDATE CODE"),
>             new IF_CHAR     (  2, "FILE SECURITY CODE"),
>             new IF_CHAR     (  5, "RESPONSE INDICATOR"),
>             new IF_CHAR     (  7, "SERVICE INDICATOR"),
>             new IF_CHAR     ( 42, "REPLACEMENT AMOUNTS"),
>             new IFA_BINARY  ( 8, "MESSAGE SECURITY CODE"),
>             new IFA_AMOUNT  ( 17, "AMOUNT, NET SETTLEMENT"),
>             new IF_CHAR     ( 25, "PAYEE"),
>             new IFA_LLNUM   ( 11, "SETTLEMENT INSTITUTION IDENT
> CODE"),
>             new IFA_LLNUM   ( 11, "RECEIVING INSTITUTION IDENT
CODE"),

>             new IFA_LLCHAR  ( 17, "FILE NAME"),
>             new IFA_LLCHAR  ( 28, "ACCOUNT IDENTIFICATION 1"),
>             new IFA_LLCHAR  ( 28, "ACCOUNT IDENTIFICATION 2"),
>             new IFA_LLLCHAR (100, "TRANSACTION DESCRIPTION"),
>             new IFA_LLLCHAR (999, "RESERVED ISO USE"),
>             new IFA_LLLCHAR (999, "RESERVED ISO USE"),
>             new IFA_LLLCHAR (999, "RESERVED ISO USE"),
>             new IFA_LLLCHAR (999, "RESERVED ISO USE"),
>             new IFA_LLLCHAR (999, "RESERVED ISO USE"),
>             new IFA_LLLCHAR (999, "RESERVED ISO USE"),
>             new IFA_LLLCHAR (999, "RESERVED ISO USE"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"   ),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"  ),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
>             new IFA_LLLCHAR (999, "RESERVED NATIONAL USE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
>             new IFA_LLLCHAR (999, "RESERVED PRIVATE USE"),
>             new IFA_LLLCHAR (50, "RESERVED PRIVATE USE"),          
>             new IFA_LLLCHAR (999, "MAC 2")
>         };
>            
>     public EswitchPackager() {
>         super();
>         try {
>         setFieldPackager(fld);
>         } catch (Exception e) {
>         Logger.log (new LogEvent (this, e.getMessage()));
>         }
>     }
>    
> /* (non-Javadoc)
> * @see org.jpos.util.LogSource#setLogger
> (org.jpos.util.Logger, java.lang.String)
> */
> public void setLogger (Logger logger, String realm) {
>        this.logger = logger;
>        this.realm  = realm;
>        if (originalRealm == null)
>            originalRealm = realm;      
> }
>
> /* (non-Javadoc)
> * @see org.jpos.util.LogSource#getRealm()
> */
> public String getRealm () {
>        return realm;
> }
>
> /* (non-Javadoc)
> * @see org.jpos.util.LogSource#getLogger()
> */
> public Logger getLogger() {
>        return logger;
> }
> public String getOriginalRealm() {
>        return originalRealm == null ?
>            this.getClass().getName() : originalRealm;
> }
>
> }
>
>
> --- In jpos-dev@..., Mark Salter <marksalter@> wrote:
> >
> > super_foly wrote:
> > > Hi Len,
> > >     you are write it looks like a header. however the EFT
platform

> > > owner insisted its meant to be field 0.
> > Does the numbering convention matter?  As long as the message
> arrives
> > properly structured on the EFT interface, all will be well.
> >
> > Is there a good reason - perhaps a report - that means
> the "composite
> > header field" needs to be treated as an entity?
> >
> > >
> > > I am now able to send the message across to the platform
> > But not using a header as Alejandro suggested, I think you are
using

> > jPos *not* as intended and getting rather odd results...
> >
> > >
> > > Expected:
> > > *********
> >
> > > [32]   32 33 34 30 38 30 30 82  20 00 00 00 00 00 00 04  
> 2340800. .......
> > > [48]   00 00 00 00 00 00 00 30  35 30 36 30 33 32 32
> 31   .......050603221
> > >
> > >
> > > My Implementation:
> > > ********************
> > > [0]    82 20 00 00 00 00 00 00  04 00 00 00 00 00 00
> 00   . ..............
> >
> > This seems to be an additional header, is this intentional?
> >
> > > [16]   01 03 52 45 4E 44 45 5A  56 4F 55 53 2D 38 35
> 38   ..RENDEZVOUS-858
> > >
> > > [32]   33 31 2E 30 30 30 30 31  32 33 34 35 36 37 38 39  
> 31.0000123456789
> > >
> > > [48]   30 31 32 33 34 30 38 30  30 30 30 30 30 30 30 30  
> 0123408000000000
> > >
> > > [64]   31 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  
> 1000000000000000
> > >
> > > [80]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  
> 0000000000000000
> > >
> > > [96]   30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  
> 0000000000000000
> > >
> > > [112]  30 30 30 30 30 30 30 30  30 31 30 31 36 31 30 31  
> 0000000001016101
> > >
> > > [128]  33 32 34 31 36 32 30 33  36 32 37 30   324162036270
> >
> > It seems you are using an ASCII bitmap, where a binary one is
> required.
> >
> > The original extract shows :-
> >
> > 0.6 Bitmap, Primary b-64
> > 1 Bitmap, Secondary b-64
> >
> > I would think this means Binary 64 bits (8 bytes).
> >
> > You have not shown your packager definition of fields 0.6 (primary
> > bitmap) and 1 (secondary bitmap).
> > The bitmap in the request is fine, but yours looks odd (even
given
> it is
> > ASCII and not binary), probably because you are attempting
> something not
> > intended to be supported by jPos as it stands (a composite field
0 -
> > which would normally by the message MTI).
> >
> > Your echo is also not an 0810 message, I would guess the EFT
owner
> is
> > addressing the biggest issues with your message first - the
message

> > being way too large as your bitmap is taking up twice the expected
> > number of bits.
> >
> > >
> > > I need to get the bitmap to conform to the expected dump.
> > Make sure you are using a binary field, and if you can share your
> > packager that might help us see what other problems you might be
> causing.
> >
> > My suggestion - I agree with Alejandro completely - is to use a
> header
> > for everything upto and include field 0.4, then use jPos as it's
> design
> > intends for everything else (remember to correct your bitmap
> definition
> > (to a binary form)).  The EFT interface will never know you are
> placing
> > their header filed in a jpos header (rather than field 0) and
they
> can
> > interpret it however they like (and so can you).
> >
> > To use jPos in this manner will need some code changes (not lease
> > qualifying the position of the MTI and associated processing
> (isRequest
> > etc), but also the handling of the bitmap which seems to also
have
> been
> > affected by your approach.
> >
> > --
> > Mark
> >
>



Re: Re: Nested field 0

by Mark Salter-5 :: Rate this Message: