ykm / ISO8583Engine

Create an ISO8583 request through a configurable xml
3 stars 2 forks source link

ISO8583Engine:

This is a simple API to create a ISO8583 Request object as well as parse the ISO8583 response using a configurable xml file.

Keys are the values ala variable declared in a program, each value's index should be unique, no on-us values in Keys section

The On-Us values are supplied at the runtime as a string -> string dictionary, we try to access these values using key values, so the values are completely dependent on the supplier, thus the xml and the program should be in synchonization, try to keep the On-Us values as general as possible, allowing minimum change in the code.

The ISO8583 Fields are organised as categories. In the sample xml, the Category "Common" contains all the fields common to both the update as well as the account info ISO8583 request. THe category "Update" contains the field belonging to update request whereas the category "AccountInfo" contains fields belonging to account request.

The Category "Response" a special one, it only contains those fields which are not present in any of the requests but in the response sent by the CBS. Thus, the Category "Response" cannot be used to create any request. If Used the engine will throw an error.

When we ask the ISO8583 engine to generate a request, we do it by supplying the categories. eg: to generate a complete update request we will have to combine categories "0" and "1".

However, you cannot combine categories containing the same field indexes, or from the category "Response"

Also the field values cannot contain + and : as they are used by the engine logic

Some standard keywords used by the engine are as follows:

"time:" accessor is used to insert datetime values, accessor is followed the datetime format, for different formats refer the "C# Datetime Format". Following the datetime format, it could be specified whether the datetime is UTC. eg: time:ddMMyyyy:utc Note: the format is placed exactly as its provided, so keep a watch on the case sensitivity.

"key:" accessor is used to access values defined in the IsoKeys section. this accessor is followed by the keyname.

"on-us:" accessor is used to access the on-us values supplied during ISO8583Message creation.

Addition: 29th June, 2012.

Add the padding information in the field itself. Padding start marked by the charachter '|'. Its positioning on the left or the right side denotes the padding positioning in the value itself. Padding will be allowed only if the Header value is "0". Optionally you can also provide the charachter with which the value will be padded. If you want to left pad a field with charachter '0' use, "0|value" as the field value to the tag. For right padding use "value|0" for padding. Note: By default the engine uses right padding and the default padding charachter is with spaces. If you want left padding with spaces use "|value" as the field value.