juks / iso-8583-socket-queue

ISO 8583 gateway
MIT License
194 stars 111 forks source link

ASCII format message exchange #12

Closed shoaibjdev closed 7 years ago

shoaibjdev commented 7 years ago

Hi,

I wanted to understand if it's possible to have ASCII message format instead of binary with this ISO gateway? Couldn't find it in the documents. If ASCII format is not supported out of the box could you advise how should I got about modifying/adjusting the source to achieve it.

juks commented 7 years ago

Hi!

What do you mean ASCII format? Could you please provide a sample message?

Besides with traditional binary format, SocketQueue supports ISO8583 fields sent via HTTP as JSON arrays. This is much easier way rather then dealing with binary data.

shoaibjdev commented 7 years ago

Hi, Sorry about the terminology, with ASCII I mean encoding for the messages being sent to upstream Host. For reference, check the section Encoding in the below link . http://j8583.sourceforge.net/desc8583en.html https://github.com/chochos/j8583/wiki/ISO8583#binary-encoding

Most of the bank's upstream servers support ASCII only such as Oracle Flexcube, Infosys Finacle etc As a client i'm able to post either as JSON over HTTP or even iso8583 format as described in the ReadMe section but i'm unable to understand why the message when getting decomposed at upstream server level is failing. My doubt is SocketQueue is only supporting binary encoding which upstream server is not support. Please advise if it's possible to change encoding from binary to ASCII for the upstream relay.

juks commented 7 years ago

Ok, now I got it. The default syntax configuration for SocketQueue is not entirely binary. It uses the binary format for binary mask field.

You can tweak the format for every single field, you can also add packers/unpackers of your own.

Bundled configurations: https://github.com/juks/SocketQueue/tree/master/lib/iso8583/lib/packager

Bundled packagers: https://github.com/juks/SocketQueue/tree/master/lib/iso8583/lib/packer

i'm unable to understand why the message when getting decomposed at upstream server level is failing

I can say this can be really hard or even almost impossible to engineer the 8583 syntax for a remote system from scratch when you unable somehow to obtain the log output or talk to an engineer on the other side.

juks commented 7 years ago

At least you need some verification tools for target syntax like those at https://iso8583.info/tools/

shoaibjdev commented 7 years ago

Thank you @juks for the advise, that's what I was looking for - Customization of ISO packager/packer here. I'll try and create some packers as per banking interface specs and update once it works.

juks commented 7 years ago

You welcome!

Comparing the message that is known to be 100% correct, being send manually via telnet or netcat against what is send by SocketQueue — this can also save lots of time.

I mean I would start with building the shortest message available just with a text editor, then making the remote server to respond it.