sitb-software / jsPOS

JavaScript ISO8583 ,JavaScript version of JPOS
MIT License
21 stars 10 forks source link

Generic Sub Field Packager #8

Open Gamaroff opened 8 years ago

Gamaroff commented 8 years ago

Hi. Thanks for a great library.

How would I create a Sub Field Packager?

The JPOS library has the ability to create sub fields. Here is the XML from JPOS:

 <isofieldpackager
            id="127"
            length="999999"
            name="RESERVED PRIVATE USE"
            class="org.jpos.iso.IFA_LLLLLLBINARY"
            packager="org.jpos.iso.packager.GenericSubFieldPackager">
        <isofield
                id="0"
                length="0"
                name="PLACEHOLDER"
                class="org.jpos.iso.IF_CHAR"/>
        <isofield
                id="1"
                length="8"
                name="BITMAP"
                class="org.jpos.iso.IFB_BITMAP"/>
</isofieldpackager>

I am setting up the fields so:

var packager = new Packager();
packager.fld = [ new IFA_NUMERIC(4, "MESSAGE TYPE INDICATOR"), ...

Is there a simple way to add a new sub field packager to the array with fields defined inside that?

Many thanks!

Gamaroff commented 8 years ago

I basically want to recreate this PostPackager.

I created this ISOBasePackager:

var p127 = new jspos.ISOBasePackager();
p127.fld = [
    new IF_CHAR(0, "PLACEHOLDER"),
    new IFB_BITMAP(8, "BITMAP"),
    new IFA_LLCHAR(32, "SWITCH KEY"),
    new IF_CHAR(48, "ROUTING INFORMATION"),
    new IF_CHAR(22, "POS DATA"),
    new IF_CHAR(73, "SERVICE STATION DATA"),
    new IFA_NUMERIC(2, "AUTHORIZATION PROFILE"),
    new IFA_LLCHAR(50, "CHECK DATA"),
    new IFA_LLLCHAR(128, "RETENTION DATA"),
    new IFA_LLLCHAR(255, "ADDITIONAL NODE DATA"),
    new IFA_NUMERIC(3, "CVV2"),
    new IFA_LLCHAR(32, "ORIGINAL KEY"),
    new IFA_LLCHAR(25, "TERMINAL OWNDER"),
    new IF_CHAR(17, "POS GEOGRAPHIC DATA"),
    new IF_CHAR(8, "SPONSOR BANK"),
    new IFA_LLCHAR(29, "AVS REQUEST"),
    new IF_CHAR(1, "AVS RESPONSE"),
    new IFA_LLCHAR(50, "CARDHOLDER INFORMATION"),
    new IFA_LLCHAR(50, "VALIDATION DATA"),
    new IF_CHAR(45, "BANK DETAILS"),
    new IFA_NUMERIC(8, "AUTHORIZER DATE SETTLEMENT"),
    new IFA_LLCHAR(12, "RECORD IDENTIFICATION"),
    new IFA_LLLLLCHAR(99999, "STRUCTURED DATA"),
    new IF_CHAR(253, "PAYEE NAME AND ADDRESS"),
    new IFA_LLCHAR(28, "PAYER ACCOUNT INFORMATION"),
    new IFA_LLLLCHAR(8000, "ICC DATA")
];

And then added it as Field 127:

/*127*/ new ISOMsgFieldPackager(new IFA_LLLLLLBINARY(99999, "RESERVED PRIVATE USE"), p127),

When I use the official Java JPOS library I am able to unpack field 127. When I use jsPOS field 127 is null.

Any pointers to solving this will be greatly appreciated.