Sub Filed packager for DE48 : data set identifier / length indicator

203 views
Skip to first unread message

raghu

unread,
May 23, 2018, 6:24:48 AM5/23/18
to jPOS Users
Hi All,

I am trying POC integration with Postilion host (TermApp.ISO interface) , there is a requirement to send the DE48 sub fields in the request. I had defined the sub field packager and i am able to construct the sub field elements. Problem is packing / including the data set identifier / length as explained below.
The DE48 structure is defined as below in the host specifications , can you help in defining the packager to include data set identifier / length.

DE 48 Structure :

Dataset identifier  Dataset length    Dataset bit map(s)  sub-elements
(1 byte) (2 bytes)   (2+ bytes)          (variable length)

Example Hex Dump ( Dummy data):  

313130307230058900c1800031363232323330303030313033353836323733323030303030303030303030323030303030333235303835373435303030303935313830333235313235373435413130313031323534303443313031313030313530343030323036343534383939303030303435363430303237313734393920202020202030313639f000a690012020202020202020303030303935202020202039363030303133373133534731313649574c323530313353473232323230303234353335303537202020202020202020202020313353473331344750525331335347343232303839393731313232313237323731393333313630313353473531363033303030303133534736313230
3031335347373231353137322e3031372e3031352e31323531335347383133333035373834

    MTI : 1100:
   [LLVAR  n    ..19 016] 002 [2223000010358627] 
   [Fixed  n       6 006] 003 [320000] 
   [None   n         012] 004 [000000020000] 
   [Fixed  n      10 010] 007 [0325085745] 
   [Fixed  n       6 006] 011 [000095] 
   [Fixed  n      12 012] 012 [180325125745] 
   [Fixed  an     15 015] 022 [A1010125404C101] 
   [Fixed  n       3 003] 024 [100] 
   [Fixed  n       4 004] 025 [1504] 
   [Fixed  n       3 003] 029 [002] 
   [LLVAR  n    ..11 006] 032 [454899] 
   [Fixed  ans     8 008] 041 [00004564] 
   [Fixed  ans    15 015] 042 [002717499      ] 
   [Fixed  ans    19 019] 048.001 [        000095     ] 
   [Fixed  n       4 004] 048.004 [9600] 
   [LLLLVARans .9999 137] 048.016 [13SG116IWL25013SG22220024535057            13SG314GPRS13SG42208997112212727193316013SG51603000013SG6120013SG7215172.017.015.12513SG813305] 
   [Fixed  a/n     3 003] 049 [784] 

*******  In the above Hex dump below is the parsed data for DE 48 sub fields.

30313639  - DE48 LLL length (01369)
f000           - Data set Identifier ( value is hard coded / defined to be f000 for DE48 )
a6              - Length of the sub fields including Bitmap ( a6 = 166 length)
9001          - Bit Map of sub fields ( 1001 0000 0000 0001) 
2020202020202020303030303935202020202039363030303133373133534731313649574c3235303133534732323232303032343533353035372020202020202020202020203133534733313447505253313353473432323038393937313132323132373237313933333136303133534735313630333030303031335347363132303031335347373231353137322e3031372e3031352e31323531335347383133333035   - DE 48 sub fields ( 48.001  , 48.004 , 48.016 )

Packager config for DE48:

protected ISOFieldPackager fld48[] =
        {
                new IFB_BITMAP(2, "Bit Map"),
            /*F0.1*/new IF_CHAR      (19, "POS data"),
            /*F0.2*/new IF_CHAR      (2, "Authorisation profile"),
            /*F0.3*/new IF_CHAR      (4, "Card verification data"),
            /*F0.4*/new IFA_NUMERIC  (4, "Extended transaction type"),
            /*F0.5*/new IFA_LLLCHAR  (255,  "Additional node data"),
            /*F0.6*/new IFA_LLLCHAR  (999, "Inquiry response data"),
            /*F0.7*/new IF_CHAR      (48, "Routing information"),
            /*F0.8*/new IFA_LLLCHAR  (50, "Cardholder information"),
            /*F0.9*/new IF_CHAR      (29, "Address verification data"),
            /*F0.10*/new IF_CHAR     (1,  "Card verification result"),
            /*F0.11*/new IF_CHAR     (1,  "Address verification result"),
            /*F0.12*/new IFA_LLLCHAR (999,  "Retention data"),
            /*F0.13*/new IF_CHAR     (31,  "Bank details"),
            /*F0.14*/new IF_CHAR     (253,  "Payee name and address"),
            /*F0.15*/new IFA_LLLCHAR (28,  "Payer account identification"),
            /*F0.16*/new IFA_LLLLCHAR(9999,  "Structured Data"),
        };

Using the above packager definition i am able to include DE48 Sub fields Bitmap and variable length sub fields while forming the ISOMSg request.

Hex Dump using the packager: (Wrote a standalone program to set fields and generate the request )

313230307230058900C1800031363232323330303030313033353836323733323030303030303030303030323030303031303034313030333336303030303031303030303030313535313330413130313031323534303443313031313030313530343030323131303030303034353438393931303030363530343030323731373439392020202020203030373380013030303039352020202020202020202020202030303438463030303231383030303330333033303331323032303230323033303330333033303335333032303230323032303230373834

-><isomsg>
->  <field id="0" value="1200"/>
->  <field id="2" value="2223000010358627"/>
->  <field id="3" value="320000"/>
->  <field id="4" value="000000020000"/>
->  <field id="7" value="1004100336"/>
->  <field id="11" value="000001"/>
->  <field id="12" value="155130"/>
->  <field id="22" value="A1010125404C101"/>
->  <field id="24" value="100"/>
->  <field id="25" value="1504"/>
->  <field id="29" value="002"/>
->  <field id="32" value="00000454899"/>
->  <field id="41" value="10006504"/>
->  <field id="42" value="002717499"/>
->  <isomsg id="48">
->    <field id="1" value="000095"/>
->    <field id="16" value="F00021800030303031202020203030303035302020202020"/>
->  </isomsg>
->  <field id="49" value="784"/>
-></isomsg>

~Raghu.

Alejandro Revilla

unread,
May 23, 2018, 6:56:12 PM5/23/18
to jPOS Users
Because your data-set is hardcoded, perhaps you can use IFB_BINARY of length 3 as your field 0 to swallow (so to speak) the hardcoded value value f000 as well as the one byte length that we don't need. Problem is that will work on incoming messages, you'll need a special packager at pack time, in order to properly generate the length.




raghu

unread,
May 24, 2018, 10:28:05 AM5/24/18
to jPOS Users
Hi Alejandro,

I had changed the DE48 Sub field to include IFB_BINARY with 3 byte length and setting the 0 filed to data-set , now the Bit map is not getting generated and also the filed indicators are getting shifted by +1 .
special packager at pack time -- Does this mean we need a different packager for outgoing / incoming . Can this be configured at channel level saying out should use packager1 and in should use packager2.

Hex Dump:  313230307230058900C1800031363232323330303030313033353836323733323030303030303030303030323030303031303034313030333336303030303031303030303030313934393338413130313031323534303443313031313030313530343030323131303030303034353438393931303030363530343030323731373439392020202020203030323830303030393520202020202020202020202020303036303030303935373834

~Raghu.
Reply all
Reply to author
Forward
0 new messages