diff --git a/src/pack/assemble127_extensions.ts b/src/pack/assemble127_extensions.ts index 76ad777..74c8743 100644 --- a/src/pack/assemble127_extensions.ts +++ b/src/pack/assemble127_extensions.ts @@ -15,6 +15,13 @@ function assembleKeyValueString(self: ISO8583): DefaultError | Buffer { const bitmaps_127 = self.assembleBitMap_127(); const bmpsHex = self.getBitMapHex_127_ext(); let buff = Buffer.alloc(8, bmpsHex, 'hex'); + if(self.formats['127.1'] != undefined) + { + if (self.formats['127.1'].ContentType === 'an') + { + buff = Buffer.alloc(16, bmpsHex, 'ascii') + } + } const fieldkv = []; for (let i = 0; i < bitmaps_127.length; i++) { const field = '127.' + (Number(i) + 1); diff --git a/src/unpack/unpack_127_1_63.ts b/src/unpack/unpack_127_1_63.ts index 96ab221..46ba792 100644 --- a/src/unpack/unpack_127_1_63.ts +++ b/src/unpack/unpack_127_1_63.ts @@ -44,8 +44,26 @@ export default function (slice_127, isoJSON) { return unpackKeyValueStringField(this, slice_127, isoJSON); } slice_127 = slice_127.slice(6, slice_127.length); - const bitmap = T.getHex(slice_127.slice(0, 8).toString('hex')).split('').map(Number); - slice_127 = slice_127.slice(8, slice_127.length); + //const bitmap = T.getHex(slice_127.slice(0, 8).toString('hex')).split('').map(Number); + let bitmap = ""; + if(this.formats['127.1'] != undefined) + { + if (this.formats['127.1'].ContentType === 'an') + { + bitmap = T.getHex(slice_127.slice(0, 16).toString('ascii')) + .split('') + .map(Number); + slice_127 = slice_127.slice(16, slice_127.length); + } + } + else + { + bitmap = T.getHex(slice_127.slice(0, 8).toString('hex')) + .split('') + .map(Number); + slice_127 = slice_127.slice(8, slice_127.length); + } + for (let i = 0; i < 40; i++) { if (bitmap[i] === 1) { const subField = '127.' + (i + 1);