In this section:
The ISO 8583 Extensions are custom extensions for Parasoft's continuous testing solutions. On the client side, they can be used to send and receive custom ISO 8583 messages. On the server side, they can be used to create and send custom virtualized responses.
The following custom extensions are provided for ISO 8583 integration:
This extension suite is implemented as com.parasoft.soavirt.iso8583.main-<version>.jar, which depends upon the following jars provided with the distribution:
The extensions can be installed from the UI or command line.
Add the com.parasoft.soavirt.iso8583.main-<version>.jar file to the system.properties.classpath
property in your localsettings properties file.
For example:
system.properties.classpath=<path to jar>/com.parasoft.soavirt.iso8583.main-1.0.0.jar
Once the classpath is modified, all of the required dependencies will be loaded.
Virtualize Message Responders that need to use the ISO 8583 transport must be configured to use the custom ISO 8583 listener at the PVA level (see Adding Projects, Virtual Assets, and Responder Suites for additional information).
Once the PVA is tied to a listener, ISO 8583 Responder tools can be added to the PVA to properly serve ISO 8583 responses (see Using ISO 8583).
You can configure the following settings for the ISO 8583 Message Listener
Channel Name | Defines the ISO 8583 channel to use when sending/receiving messages. All the default channel implementations (e.g., channel implementations that need only a port, host, and packager) included in the jPOS library are available for use. For details, see Channels. |
---|---|
Host | Defines the host to use when making connections. |
Port | Defines the port to use when making connections. |
Timeout | Defines how many seconds to wait before timing a connection out. |
Packager Name | Defines the packager that will be used to pack and unpack the ISO 8583 messages. Generally, GenericPackager will be used here along with a generic packager XML description. However, all packagers mentioned in the Packagers section are available for use if a predefined ISO packager is more suitable. If a custom ISO packager is implemented (e.g., ISOPackager interface), it must be included on the SOAtest/Virtualize classpath and the fully-qualified class name must be provided (for example org.jpos.iso.packager.GenericPackager). For details, see Packagers. |
---|---|
Packager Path | Defines the path to a generic packager description XML file. This field is only used for generic packagers (e.g., GenericPackager and X92GenericPackager). |
Header Length | Specifies the header length for the outgoing response. |
---|
Keep connection alive | Enable this option to keep the client connection alive and reused for subsequent publishing. |
---|---|
Close connection after test execution | Enable this option to close the client connection directly after publishing. |
You can configure the following settings for the ISO 8583 Message Format.
Packager Name | Defines the packager used to pack and unpack the ISO 8583 messages. Generally, GenericPackager will be used here along with a generic packager XML description. However, all the packagers mentioned in the Packagers section are available for use if a predefined ISO packager is more suitable. If a custom ISO packager is implemented (e.g., ISOPackager interface), it must be included on the SOAtest/Virtualize classpath and the fully-qualified class name must be provided (for example org.jpos.iso.packager.GenericPackager). For details, see Packagers. |
---|---|
Packager Path | Defines the path to a generic packager description XML file. This field is only used for generic packagers (e.g., GenericPackager and X92GenericPackager) |
You can configure the following settings for the ISO 8583 Transport.
Channel Name | Defines the ISO 8583 channel to use when sending/receiving messages. All the default channel implementations (e.g., channel implementations that need only a port, host, and packager) included in the jPOS library are available for use. For details, see Channels. |
---|---|
Host | Defines the host to use when making connections. |
Port | Defines the port to use when making connections. |
Timeout | Defines how many seconds to wait before timing a connection out. |
Packager Name | Defines the packager that will be used when creating the channel. This field works the same as its equivalent in the ISO 8583 Message Format Settings. |
---|---|
Packager Path | Defines the path to a generic packager description XML file. This field works the same as its equivalent in the ISO 8583 Message Format Settings. |
Request Header | Defines the custom header to send with requests. This field also doubles as the response header size template—enabling the header in the response to be read properly. |
---|
Packagers define how ISO 8583 messages are structured, including the number of fields in the message and the field data types. They allow the binary data of an ISO 8583 message to be consumed into a generic ISO message that can be easily manipulated and formatted by different packagers. A number of packers are provided by default, and customer packagers can be used to support special cases.
They also provide extensibility to the jPOS API in that custom packagers can be defined to describe custom ISO 8583 messages making it possible to support virtually any type of ISO 8583 message.
Packager Name | Packager Description |
---|---|
Base1Packager | VISA Base1 binary packager. |
Base1SubFieldPackager | VISA Base1 binary subfield packager. |
BASE24Packager | BASE24 ASCII packager. |
CTCSubElementPackager | Validating packager for subelements in field 48. |
CTCSubFieldPackager | Validating packager for subfields in field 48. |
DummyPackager | Dummy packager. Throws exceptions if the message is packed/unpacked. |
EuroPackager | EuroPay packager. |
EuroSubFieldPackager | EuroPay subfield packager. |
FSDPackager | FSD ISO message packager. |
GenericPackager | Uses an XML description to describe the ISO message. |
GenericSubFieldPackager | Uses an XML description to describe the ISO subfields. |
GenericTaggedFieldsPackager | Packager for fields containing TLV subfields without a bitmap. |
GenericValidatingPackager | Uses an XML description to validate the ISO message. |
ISO87APackager | ISO 8583 v1987 ASCII packager. |
ISO87APackagerBBitmap | ISO 8583 v1987 ASCII packager using binary bitmap. |
ISO87BPackager | ISO 8583 v1987 BINARY packager. |
ISO93APackager | ISO 8583 v1993 ASCII packager. |
ISO93BPackager | ISO 8583 v1993 BINARY packager. |
LogPackager | Packs and unpacks ISO messages from jPOS logs. |
MasterCardEBCDICSubFieldPackager | MasterCard EBCDIC subfield packager. |
PackagerWrapper | Wraps another ISO packager. |
PostPackager | ISO 8583 v1987 packager for Postilion |
VAPSMSPackager | ISO 8583 v1987 BINARY packager for VISA’s VAP Single Message (Deprecated). |
VAPVIPPackager | ISO 8583 v1987 BINARY packager for VISA’s VAP Single Message (Deprecated). |
X92GenericPackager | Uses an XML description to describe ANSI X9.2 ISO messages. |
X92Packager | ANSI X9.2 packager. |
XML2003Packager | Packs and unpacks ISO 8583 v2003 messages into XML representation. |
XMLPackager | Packs and unpacks ISO 8583 messages into XML representation. |
Custom packagers can be implemented in two ways to provide support for custom ISO 8583 messages.
Generic Packager XML DescriptionIn this implementation, the jPOS library provides a generic packager that can handle most ISO 8583 messages. The generic packager uses an XML description of the ISO 8583 message to properly pack and unpack custom ISO 8583 messages. To define a generic packager description, start by declaring the XML doctype:
The ISO packger definition follows the doctype:
The ISO field definitions are placed inside the ISO packager definition. ISO field definitions can be primitive ISO 8583 types or complex types. Primitive ISO Field DefinitionsUse the following format to define primitive ISO field definitions:
The id attribute defines the field number, the length attribute defines the length of data, the name attribute defines the field name, the pad attribute (optional) specifies whether the field should be padded with characters, and the class attribute defines the field packager which correlates to the data type of the field. Custom field packagers can also be created if necessary by implementing an ISOFieldPackager and including the implementation on the SOAtest/Virtualize classpath. The following ISO field packagers are provided by default (all class names should be prefixed with "org.jpos.iso" in the XML definition).
Complex ISO Field DefinitionsUse the following format to define complex ISO field definitions:
The id, length, name, and class attributes have the same meaning as they do for primitive ISO field definitions. An additional packager attribute must be defined to describe how this complex ISO field should be packaged with the rest of the ISO message, followed by the sub-field descriptions, which are defined like primitive ISO fields. An example custom packager for VISA’s Base1 ISO 8583 messages provided with the jPOS examples is included for reference; see base1.xml, which is included in the plugin's zip file. ISOPackager InterfaceIn this implementation, the jPOS library also provides a Java interface that can be used to define custom packagers. If the generic packager, or one of the default packagers, cannot support a certain ISO 8583 message, then a custom ISO packager can be implemented. |
Channels define how the ISO 8583 client and server communicate with each other. They ensure that the generic ISO messages are properly formatted before they are sent over the wire and are properly reconstructed at the other end. The channel handles the connections and the protocols used to transfer the ISO 8583 messages between client and server. As with the packagers, the jPOS library provides many channels that should handle most cases. However, if the proper channel does not exist, custom ISO 8583 channels can be implemented by extending the BaseChannel class.
The following channels are provided by default:
Channel Name | Channel Description |
---|---|
AmexChannel | American Express channel. |
ASCIIChannel | ISO base channel extension with four ASCII character message length header. |
BCDChannel | ISO base channel extension with the following message format [LEN][TPDU][ISOMSG] Where LEN is 2 hex bytes. |
CSChannel | CS Standard Channel. |
FSDChannel | ISO base channel extension with the following message format [LEN][TPDU][ISOMSG] Where LEN is 2 bytes in network byte order. |
GZIPChannel | ISO base channel extension that GZIP compresses data that is sent over the channel. |
HEXChannel | ISO base channel extension with a four ASCII hex character message length header. |
LogChannel | ISO base channel extension that extracts ISOMSG blocks from the ISO logger. |
NACChannel | ISO base channel extension with the following message format [LEN][TPDU][ISOMSG] Where LEN is 2 bytes in network byte order. |
NCCChannel | ISO base channel extension with the following message format [LEN][TPDU][ISOMSG] Where LEN is 2 bytes in binary-coded decimal (BCD) format. |
PADChannel | ISO Channel suitable to be used to connect to an X.25 PAD. |
PostChannel | ISO base channel extension with the following message format [LEN][ISOMSG] Where LEN is 2 bytes in network byte order (NBO). |
RawChannel | ISO base channel extension with the following message format [LEN][ISOMSG] Where LEN is 4 bytes in network byte order (NBO). |
RBPChannel | Record Boundary Preservation channel. |
TelnetXMLChannel | Exchanges XML based ISO-8583 messages through a telnet session the telnet commands are ignored. |
VAPChannel | VISA’s VAP framing (deprecated). |
X25Channel | ISO Channel suitable to be used to connect to an X.25 PAD. |
XMLChannel | ISO base channel extension that exchanges XML based ISO-8583 messages. |
This tool set includes items that have been sourced from third parties as outlined below.
Parasoft's ISO extensions are being released under the GNU AGPL v3.0 license.
Additional license details are available in this plugin's licenses folder.