In this section:
Table of Contents | ||
---|---|---|
|
Introduction
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:
- ISO 8583 Message Format: A message format used to convert from native ISO to XML ISO and vice versa.
- ISO 8583 Transport: A transport protocol for sending and receiving custom ISO 8583 messages.
- ISO 8583 Message Listener: A message listener used to listen for custom ISO 8583 messages and generate virtual responses.
Using Variables
If you intend to run the ISO 8583 extension in Load Test, note that the test_suite_loc
variable is the only variable that can be used in input fields. Load Test does not support the project_loc
and workspace_loc
variables for Parasoft Marketplace extensions used in .tst projects. The test_suite_loc
variable enables you to specify an external file path relative to the location of the .tst project file, for example:
${test_suite_loc}\Packager\GenericExamplePackager.xml
Implementation
This extension suite is implemented as com.parasoft.soavirt.iso8583.main-<VERSION>.jar, which depends upon the following jars provided with the distribution:
jPOS
- jpos-2.1.1.jar
JDOM
- jdom2-2.0.6.jar
ISO-8583 Extensions
- com.parasoft.soavirt.messages.iso8583.jar
- com.parasoft.soavirt.transport.iso8583.jar
- com.parasoft.virtualize.listener.iso8583e.jar
Requirements
- SOAtest and/or Virtualize 9.5.x or higher.
Installation
The extensions can be installed from the UI or command line.
UI Installation
- Go to Parasoft > Preferences and click System Properties.
- Click Add JARs and choose com.parasoft.soavirt.iso8583.main.jar. All required dependencies will be loaded.
- Click Apply.
- Restart SOAtest/Virtualize.
Command Line Installation
Add the com.parasoft.soavirt.iso8583.main.jar file to the system.properties.classpath
property in your settings properties file.
For example:
system.properties.classpath=<PATH_TO_JAR>/com.parasoft.soavirt.iso8583.main.jar
Once the classpath is modified, all of the required dependencies will be loaded.
Usage
Virtualize
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).
- Double click the PVA's node on the Virtualize server tree
- Click the Transport > Custom tab and configure the listener.
- If multiple listeners are installed, first choose the ISO 8583 listener from the Select Implementation drop-down menu.
Once the PVA is tied to a listener, ISO 8583 Responder tools can be added to the PVA to properly serve ISO 8583 responses.
ISO 8583 Message Listener Settings
You can configure the following settings for the ISO 8583 Message Listener.
Channel Settings
Scroll Table Layout | ||
---|---|---|
|
Channel Name | Defines the ISO 8583 channel to use when sending/receiving messages. All the default channel implementations (for example, 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 Settings
Scroll Table Layout | ||
---|---|---|
|
Packager Name | Defines the packager that will be used to pack and unpack the ISO 8583 messages. Generally, |
---|---|
Packager Path | Defines the path to a generic packager description XML file. This field is only used for generic packagers (for example, |
Header Settings
Scroll Table Layout | ||
---|---|---|
|
Header Length | Specifies the header length for the outgoing response. |
---|
Connection Management Settings
Scroll Table Layout | ||
---|---|---|
|
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. |
ISO 8583 Message Format Settings
You can configure the following settings for the ISO 8583 Message Format.
Scroll Table Layout | ||
---|---|---|
|
Packager Name | Defines the packager used to pack and unpack the ISO 8583 messages. Generally, |
---|---|
Packager Path | Defines the path to a generic packager description XML file. This field is only used for generic packagers (for example, |
ISO 8583 Transport Settings
You can configure the following settings for the ISO 8583 Transport.
Channel Settings
Scroll Table Layout | ||
---|---|---|
|
Channel Name | Defines the ISO 8583 channel to use when sending/receiving messages. All the default channel implementations (for example, channel implementations that need only a port, host, and packager) included in the jPOS library are available for use. If empty, the listener will not start. 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 Settings
Scroll Table Layout | ||
---|---|---|
|
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. |
Header Settings
Scroll Table Layout | ||
---|---|---|
|
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
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.
Default Packagers
Scroll Table Layout | ||
---|---|---|
|
Packager Name | Packager Description |
---|---|
Base1Packager | VISA Base1 binary packager. |
Base1SubFieldPackager | VISA Base1 binary subfield packager. |
BASE24Packager | BASE24 ASCII packager. |
BERTLVAsciiHexPackager | BER TLV ASCII packager. |
BERTLVBinaryPackager | BER TLV BINARY packager. |
BERTLVEbcdicHexPackager | BER TLV EBCDIC packager. |
BinaryHexTaggedSequencePackager | TLV BINARY 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. |
GICCSubFieldPackager | Packager for subfields of GICC. |
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. |
MasterCardEBCDICSubFieldPackager | MasterCard EBCDIC subfield packager. |
PackagerWrapper | Wraps another ISO packager. |
PostPackager | ISO 8583 v1987 packager for Postilion. |
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
Custom packagers can be implemented in two ways to provide support for custom ISO 8583 messages.
Table of Content Zone | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 packager 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 The following ISO field packagers are provided by default (all class names should be prefixed with
Complex ISO Field DefinitionsUse the following format to define complex ISO field definitions:
The 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
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:
Scroll Table Layout | ||
---|---|---|
|
Channel Name | Channel Description |
---|---|
AmexChannel | American Express channel. |
ASCIIChannel | ISO base channel extension with four ASCII character message length header. |
BASE24Channel | ACI's BASE24 over an X.25 link. |
BASE24TCPChannel | ACI's BASE24 over a TCP link. |
BCDChannel | ISO base channel extension with the following message format
Where |
CSChannel | CS Standard Channel. |
FSDChannel | ISO base channel extension with the following message format
Where |
GICCChannel | GICC channel. |
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 Where |
NCCChannel | ISO base channel extension with the following message format Where |
PADChannel | ISO Channel suitable to be used to connect to an X.25 PAD. |
PostChannel | ISO base channel extension with the following message format
Where |
RawChannel | ISO base channel extension with the following message format
Where |
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. |
Third-party Content
This tool set includes items that have been sourced from third parties as outlined below.
- jPOS (GNU AGPL v3.0)
- JDOM library (JDOM license)
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.