-
-
Notifications
You must be signed in to change notification settings - Fork 53
Home
Welcome to the iso_8583 wiki!
Welcome to the hows of iso_8583
iso_8583 is available as an npm package here https://www.npmjs.com/package/iso_8583 The best use case is with a nodejs tcp client or server sending/receiving messsages to/from an ISO 8583 interface
This is a javascript library that does message conversion between a system and an interface that accepts iso8583 message requests and send ISO 8583 Financial transaction card originated messages responses.
More info here about iso 8583 standard is here
npm install --save iso_8583
let isopack = require('iso_8583')
The library extends fields 127 and fields 127.25 to their sub fields.
If you are handling a json with field 127 or 127.25 as one string, the bitmap must be 16 character string then a 4 digit number indicating the length
In the above case the library will expand them.
If they are already broken down to subfields, nothing changes.
To invoke the package initialize with the iso8583 json or object as argument. If the json contains any fields not defined in iso8583 or has no field 0, the error is returned in an object.
If you want to handle xml iso 8583 messages, the usage is described down there.
let testData = {
"0": "0100",
"2": "4761739001010119",
"3": "000000",
"4": "000000005000",
"7": "0911131411",
"12": "131411",
"13": "0911",
"14": "2212",
"18": "4111",
"22": "051",
"23": "001",
"25": "00",
"26": "12",
"32": "423935",
"33": "111111111",
"35": "4761739001010119D22122011758928889",
"41": "12345678",
"42": "MOTITILL_000001",
"43": "My Termianl Business ",
"49": "404",
"52": "7434F67813BAE545",
"56": "1510",
"123": "91010151134C101",
"127": "000000800000000001927E1E5F7C0000000000000000500000000000000014A00000000310105C000128FF0061F379D43D5AEEBC8002800000000000000001E0302031F000203001406010A03A09000008CE0D0C840421028004880040417091180000014760BAC24959"
}
let isopack = new iso_8583(isoJson)
The object initialized has the following methods:
To validate the iso message
isopack.validateMessage()
returns true for valid message or error
To get the mti as a string:
isopack.getMti()
returns a 4 byte buffer containing the mti
isopack.getBmpsBinary()
111100100011110001000110110...
or an error object with error prop
isopack.getBitMapHex()
isopack.getBitMapHex_127_ext()
isopack.getBitMapHex_127_ext_25()
f23c46c1a8e091000000000000000022
8000008000000000
fe1e5f7c00000000
or an error object with error prop
let bufferMessage = isopack.getBufferMessage();
<Buffer 01 11 30 31 30 30 f2 3c 46 c0 20 e8 80 00 00 00 00 00 00 00 00 20 30 37 35 34 ...
Just parse the incoming buffer or string to the method
let incoming = new isopack().getIsoJSON(incoming)
let testData = {
"0": "0100",
"2": "5413330",
"3": "000000",
"4": "000000002000",
"7": "0210160607",
"11": "148893",
"12": "160607",
"13": "0210",
"14": "2512",
"18": "4111",
"22": "141",
"23": "003",
"25": "00",
"26": "12",
"35": "5413330089020011D2512601079360805F",
"41": "31327676",
"42": "4D4F424954494C4",
"43": "My Termianl Business ",
"49": "404",
"45": "0303030204E4149524F4249204B452dataString04B45",
"123": "09010001000105010103040C010001"
};
Initialize the iso object with the json as argument
let isoPack = new isoPack(testData)
isoPack.getXMLString()
Initialize with no argument
let isoPack = new isoPack()
parse the string to the method to get the iso json
let xmlTets = '<?xml version="1.0" encoding="UTF-8"?>\n' +
'<Iso8583PostXml>\n' +
'<MsgType>0200</MsgType>\n' +
'<Fields>\n' +
'<Field_002>4839123456709012</Field_002>\n' +
'<Field_003>000000</Field_003>\n' +
'<Field_004>000000001500</Field_004>\n' +
'<Field_007>0604074705</Field_007>\n' +
'<Field_011>804058</Field_011>\n' +
'<Field_012>074808</Field_012>\n' +
'<Field_013>0604</Field_013>\n' +
'<Field_014>0812</Field_014>\n' +
'<Field_015>0905</Field_015>\n' +
'<Field_022>901</Field_022>\n' +
'<Field_025>02</Field_025>\n' +
'<Field_026>05</Field_026>\n' +
'<Field_028>000000500</Field_028>\n' +
'<Field_030>000000500</Field_030>\n' +
'<Field_032>483912</Field_032>\n' +
'<Field_035>4839123456709012=08125876305082011</Field_035>\n' +
'<Field_037>D000A0030000</Field_037>\n' +
'<Field_040>507</Field_040>\n' +
'<Field_041>FOFUGUT1</Field_041>\n' +
'<Field_042>191121119111112</Field_042>\n' +
'<Field_043>Postilion Cafeteria Rondebosch ZA</Field_043>\n' +
'<Field_049>710</Field_049> <Field_056>1510</Field_056>\n' +
'<Field_059>0000000072</Field_059>\n' +
'<Field_123>211401213041013</Field_123>\n' +
'<Field_127_002>0007713856</Field_127_002>\n' +
'<Field_127_009>013040604040604016501100330000</Field_127_009>\n' +
'<Field_127_012>My Terminal Business</Field_127_012>\n' +
'<Field_127_020>20100604</Field_127_020>\n' +
'</Fields>\n' +
'</Iso8583PostXml>'
isoPack.getJsonFromXml(xmlTets)
There are other cool stuff like isoPack.attachTimeStamp() which adds times stamps to field 7,12,13, plus more When working with xml, first change the xml to json then validate.