zemuldo / iso_8583

:credit_card::moneybag: JavaScript library for iso 8583 messaging. Handles message validation & conversion between interfaces using iso 8583 standard. Contributors are welcome.
https://zemuldo.github.io/iso_8583/
MIT License
85 stars 50 forks source link

Custom Format Support - variable binary field within first 127 fields #124

Open arajput opened 1 year ago

arajput commented 1 year ago

First thanks for this awesome library. I am using this for some IFSF messages encode/decode at client side application. i have some custom requirement t support subfields at 48 position. It has bitmap + 48.1, 48.2, 48.3 ... very much same as 127.25
i can not use "LLLVAR ans" because it is at host side the field content is treated as binary similar to fixed binary field.

here is test case attached for the above requirement.

import test from 'ava';
import iso8583 from '../lib/8583.js';

/*
Support custom iso 8583 formats
Support Case: Binary var field encode decode
*/
test('iso8583 Ext - binary var field must be encoded', t => {
  const format = {
    2: {
      ContentType: 'b',
      Label: 'F1',
      LenType: 'llvar',
      MaxLen: 99
    },

  };
  const data = {
    0: '0800',
    '2': '1004000000000000303030303030303030343048' 
    // #2 is prepard by encodng subfields - 8bytes bitmap followed by subfields data
  };
  let isopack = new iso8583(data, format);
  let buff = isopack.getRawMessage();
  const iso1 = new iso8583(undefined, format).getIsoJSON(buff, {lenHeader: false});
  t.deepEqual(iso1, data);
  let isopack1 = new iso8583(iso1);
  t.is(isopack1.Msg['2'], '1004000000000000303030303030303030343048');
});
arajput commented 1 year ago

Please see my observation in the code.

Screen Shot 2022-08-27 at 9 06 56 AM
arajput commented 1 year ago

i have following commit that has helped me for my case https://github.com/arajput/iso_8583/commit/54dc08b688cc3621c660c355cf121c40f0acac75

zemuldo commented 1 year ago

I will check this over the weekend. I am happy to review a pull request if you send it.