章节目录:
Table of Contents | ||
---|---|---|
|
关于扩展
ISO 8583 Extensions 是 Parasoft 的持续测试解决方案的自定义扩充套件。在客户端,可以使用它们来发送和接收自定义的 ISO 8583 消息。在服务端,可以使用它们来创建和发送自定义的虚拟化消息。
将为 ISO 8583 集成提供以下自定义扩展:
- ISO 8583 Message Format:该消息格式用于将本机 ISO 转换为 XML ISO,反之亦然。
- ISO 8583 Transport:该传输协议用于发送和接收自定义的 ISO 8583 消息。
- ISO 8583 Message Listener:该消息监听器用于监听自定义的 ISO 8583 消息和生成虚拟响应。
实现
此扩展套件实现为 com.parasoft.soavirt.iso8583.main-<version>.jar,这取决于发行版提供的以下 jar:
jPOS
- jpos-1.9.2.jar
JDOM
- jdom-1.1.3.jar
Apache Commons CLI
- commons-cli-1.2.jar
ISO-8583 扩展
- com.parasoft.soavirt.messages.iso8583-<version>.jar
- com.parasoft.soavirt.transport.iso8583-<version>.jar
- com.parasoft.virtualize.listener.iso8583-<version>.jar
要求
- SOAtest 和/或 Virtualize 9.5.x 及更高版本。
安装
可以从 UI 或命令行安装该扩展。
UI 安装
- 选择 Parasoft> 首选项。
- 在系统属性首选项页面,点击添加 JARs。
- 在打开的文件选择器中,选择 com.parasoft.soavirt.iso8583.main-<version>.jar。将加载所有必需的依赖项。
- 重启 SOAtest/Virtualize。
命令行安装
将 com.parasoft.soavirt.iso8583.main-<version>.jar 文件添加到设置属性文件中的 system.properties.classpath
属性。
例如:
system.properties.classpath=<path to jar>/com.parasoft.soavirt.iso8583.main-1.0.0.jar
classpath 更改完成后,将加载所有必需的依赖项。
使用说明
Virtualize
需要使用 ISO 8583 传输的 Virtualize 消息响应器必须配置为在 PVA 级别上使用自定义的 ISO 8583 监听器(更多信息,请参阅Adding Projects, Virtual Assets, and Responder Suites)。
- 双击 Virtualize 服务树上 PVA 的节点
- 点击传输> 自定义选项卡,并配置监听器。
- 如果安装了多个监听器,则首先从选择实现下拉菜单选择 ISO 8583 Listener。
将 PVA 绑定到监听器上后,即可将 ISO 8583 响应器工具添加到 PVA,从而正确提供 ISO 8583 响应。
SOAtest
- 右键点击测试套件并选择新建> 测试。
- 添加测试向导中将有两个具有相同名称的 ISO 8583 客户端可用。在常用工具类中选择 ISO 8583 Client,然后点击完成。其他 ISO Client 是 SOAtest 附带的内置工具,由 ISO 8583 扩展替换。
- 点击传输选项卡,然后从传输下拉菜单选择自定义扩展。
- 从选择实现下拉菜单选择 ISO 8583,对工具进行配置。打包器选项是在“转换选项”选项卡和Packager Settings下的传输设置中配置的。
ISO 8583 Message Listener 设置
可以为 ISO 8583 Message Listener 配置以下设置
通道设置
Scroll Table Layout | ||
---|---|---|
|
Channel Name | 定义在发送/接收消息时要使用的 ISO 8583 通道。jPOS 库中包含的所有默认的通道实现(如,仅需端口、主机和打包器的通道实现)都可使用。详情请参阅Channels。 |
---|---|
Host | 定义在创建连接时要使用的主机。 |
端口 | 定义在创建连接时要使用的端口。 |
Timeout | 定义连接超时之前可以等待多少秒。 |
打包器设置
Scroll Table Layout | ||
---|---|---|
|
Packager Name | 定义将要用来打包和解包 ISO 8583 消息的打包器。总的来说,这里将使用 GenericPackager 和通用打包器 XML 说明。然而,如果预定义的 ISO 打包器更合适,则可以使用“打包器”部分中提到的所有打包器。如果实现了自定义的 ISO 打包器(如,ISOPackager 接口),则其必须包含在 SOAtest/Virtualize classpath 中,并且必须提供完全限定的类名。详情请参阅Packagers。 |
---|---|
Packager Path | 定义通用打包器说明 XML 文件的路径。 该字段仅用于通用的打包器(如 GenericPackager 和 X92GenericPackager)。 |
头设置
Scroll Table Layout | ||
---|---|---|
|
Header Length | 指定传出响应的头长度。 |
---|
连接管理设置
Scroll Table Layout | ||
---|---|---|
|
保持连接 | 启用此选项,让客户端保持连接并重复,以便后续的发布。 |
---|---|
测试执行之后关闭连接 | 启用此选项,在发布后直接关闭客户端连接。 |
ISO 8583 Message Format 设置
可以为 ISO 8583 Message Format 配置以下设置。
Scroll Table Layout | ||
---|---|---|
|
Packager Name | 定义用来打包和解包 ISO 8583 消息的打包器。总的来说,这里将使用 GenericPackager 和通用打包器 XML 说明。然而,如果预定义的 ISO 打包器更合适,则可以使用“打包器”部分中提到的所有打包器。如果实现了自定义的 ISO 打包器(如,ISOPackager 接口),则其必须包含在 SOAtest/Virtualize classpath 中,并且必须提供完全限定的类名。详情请参阅Packagers。 |
---|---|
Packager Path | 定义通用打包器说明 XML 文件的路径。 该字段仅用于通用的打包器(如 GenericPackager 和 X92GenericPackager) |
ISO 8583 Transport 设置
可以为 ISO 8583 Transport 配置以下设置。
通道设置
Scroll Table Layout | ||
---|---|---|
|
Channel Name | 定义在发送/接收消息时要使用的 ISO 8583 通道。jPOS 库中包含的所有默认的通道实现(如,仅需端口、主机和打包器的通道实现)都可使用。详情请参阅Channels。 |
---|---|
Host | 定义在创建连接时要使用的主机。 |
Port | 定义在创建连接时要使用的端口。 |
Timeout | 定义连接超时之前可以等待多少秒。 |
打包器设置
Scroll Table Layout | ||
---|---|---|
|
Packager Name | 定义创建通道时将使用的打包器。 该字段与 ISO 8583 Message Format Settings中的对等内容具有相同的工作原理。 |
---|---|
Packager Path | 定义通用打包器说明 XML 文件的路径。 该字段的工作原理等同于 ISO 8583 Message Format Settings。 |
头设置
Scroll Table Layout | ||
---|---|---|
|
Request Header | 定义要与请求一起发送的自定义头。该字段还可作为响应头大小模板,允许正确读取响应中的头信息。 |
---|
打包器
打包器定义如何组织 ISO 8583 消息,包括消息中的字段数和字段数据类型。它们允许将 ISO 8583 消息的二进制数据转换成通用的 ISO 消息,以便不同的打包器轻松操作和格式化。默认情况下,提供大量的打包器,并且自定义打包器可以用来支持特殊情况。
它们还为 jPOS API 提供了可扩展性,可以定义自定义打包器来描述自定义 ISO 8583 消息,从而支持几乎所有类型的 ISO 8583 消息。
默认打包器
Scroll Table Layout | ||
---|---|---|
|
打包器名称 | 打包器说明 |
---|---|
Base1Packager | VISA Base1 二进制打包器。 |
Base1SubFieldPackager | VISA Base1 二进制子字段打包器。 |
BASE24Packager | BASE24 ASCII 打包器。 |
CTCSubElementPackager | 验证用于字段 48 中子元素的打包器。 |
CTCSubFieldPackager | 验证用于字段 48 中子字段的打包器。 |
DummyPackager | Dummy 打包器。如果消息被打包或解包,将抛出异常。 |
EuroPackager | EuroPay 打包器。 |
EuroSubFieldPackager | EuroPay 子字段打包器。 |
FSDPackager | FSD ISO 消息打包器。 |
GenericPackager | 使用 XML 说明对 ISO 消息进行描述。 |
GenericSubFieldPackager | 使用 XML 说明对 ISO 子字段进行描述。 |
GenericTaggedFieldsPackager | 用于包含没有位图的 TLV 子字段的字段的打包器。 |
GenericValidatingPackager | 使用 XML 说明对 ISO 消息进行验证。 |
ISO87APackager | ISO 8583 v1987 ASCII 打包器。 |
ISO87APackagerBBitmap | 使用二进制位图的 ISO 8583 v1987 ASCII 打包器。 |
ISO87BPackager | ISO 8583 v1987 BINARY 打包器。 |
ISO93APackager | ISO 8583 v1993 ASCII 打包器。 |
ISO93BPackager | ISO 8583 v1993 BINARY 打包器。 |
LogPackager | 打包和解压来自 jPOS 日志的 ISO 消息。 |
MasterCardEBCDICSubFieldPackager | MasterCard EBCDIC 子字段打包器。 |
PackagerWrapper | 包装其他的 ISO 打包器。 |
PostPackager | 用于 Postilion 的 ISO 8583 v1987 打包器 |
VAPSMSPackager | 用于 VISA VAP Single Message(已弃用)的 ISO 8583 v1987 BINARY 打包器。 |
VAPVIPPackager | 用于 VISA VAP Single Message(已弃用)的 ISO 8583 v1987 BINARY 打包器。 |
X92GenericPackager | 使用 XML 说明对 ANSI X9.2 ISO 消息进行描述。 |
X92Packager | ANSI X9.2 打包器。 |
XML2003Packager | 将 ISO 8583 v2003 消息打包和解包到 XML 表示形式中。 |
XMLPackager | 将 ISO 8583 消息打包和解包到 XML 表示形式中。 |
自定义打包器
自定义打包器有两种实现方式,以给自定义 ISO 8583 消息提供支持。
Table of Content Zone | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
通用打包器 XML 说明在这个实现中,jPOS 库提供了可以处理大部分 ISO 8583 消息的通用打包器。通用打包器使用 ISO 8583 的 XML 说明,正确地打包和解包自定义的 ISO 8583 消息。 若要定义通用打包器说明,则通过声明 XML 文档类型进行启用:
ISO 打包器定义遵循以下文档类型:
ISO 字段定义放置在 ISO 打包器定义中。ISO 字段定义可以是基本的 ISO 8583 类型,也可以是复杂类型。 基本 ISO 字段定义使用功能以下格式定义基本 ISO 字段定义:
id 属性定义字段号,length 属性定义数据长度,name 属性定义字段名,pad 属性(可选)指定字段是否应该填充字符,class 属性定义与字段数据类型相关联的字段打包器。如果需要,自定义字段打包器也可以通过实现 ISOFieldPackager 并包括在 SOAtest/Virtualize classpath 上的实现来创建。 默认提供以下 ISO 字段打包器(所有类名应以 XML 定义中的“org.jpos.iso”作为前缀)。
复杂 ISO 字段定义使用以下格式定义复杂 ISO 字段定义:
Id、length、name 和 class 属性与基本 ISO 字段定义具有相同的含义。但是,此处多了一个 packager 属性必须定义,它用来说明如何在子字段说明(其定义类似于基本的 ISO 字段)后使用 ISO 消息的其余部分打包该复杂 ISO 字段。 作为参考,本文还提供了自定义打包器示例,该示例为 VISA Base1 ISO 8583 消息提供了 jPOS 示例;请参阅插件的 zip 文件中包含的 base1.xml。 ISOPackager 接口在这个实现中,jPOS 库还提供了一个可用来定义自定义打包器的 Java 接口。如果通用打包器或其中一个默认的打包器不支持某个 ISO 8583 消息,则可实现一个自定义的 ISO 打包器。 |
通道
通道定义了 ISO 8583 客户端和服务端之间如何通讯。它们确保在通过电线发送并在另一端进行了适当的重构之前,对通用 ISO 消息进行了正确地格式化。通道处理用于在客户端和服务端之间对 ISO 8583 消息进行转换的连接和协议。与打包器一样,jPOS 库提供了许多通道,可以处理大多数情况。但是,如果不存在合适的通道,则可以通过继承 BaseChannel 类来实现自定义 ISO 8583 通道。
默认提供以下通道:
Scroll Table Layout | ||
---|---|---|
|
Channel Name | 通道说明 |
---|---|
AmexChannel | 美国特快通道。 |
ASCIIChannel | ISO 基本通道扩展,具有四个 ASCII 字符消息长度头。 |
BCDChannel | ISO 基本通道扩展,具有以下消息格式 [LEN][TPDU][ISOMSG] 其中 LEN 为 2 个十六进制字节。 |
CSChannel | CS 标准通道。 |
FSDChannel | ISO 基本通道扩展,具有以下消息格式 [LEN][TPDU][ISOMSG] 其中按照 NBO(network byte order,网络字节顺序),LEN 为 2 个字节。 |
GZIPChannel | ISO 基本通道扩展,GZIP 压缩通过通道发送的数据。 |
HEXChannel | ISO 基本通道扩展,具有四个 ASCII 十六进制的字符消息长度头信息。 |
LogChannel | ISO 基本通道扩展,从 ISO 日志程序中提取 ISOMSG 块。 |
NACChannel | ISO 基本通道扩展,具有以下消息格式 [LEN][TPDU][ISOMSG] 其中按照 NBO(network byte order,网络字节顺序),LEN 为 2 个字节。 |
NCCChannel | ISO 基本通道扩展,具有以下消息格式 [LEN][TPDU][ISOMSG] 其中按照 BCD (binary-coded decimal,二进制编码的十进制)格式,LEN 为 2 个字节。 |
PADChannel | ISO 通道适用于连接到 X.25 PAD。 |
PostChannel | ISO 基本通道扩展,具有以下消息格式 [LEN][ISOMSG] 其中按照 NBO,LEN 为 2 个字节(NBO)。 |
RawChannel | ISO 基本通道扩展,具有以下消息格式 [LEN][ISOMSG] 其中按照 NBO,LEN 为 4 个字节(NBO)。 |
RBPChannel | 记录边界保存通道。 |
TelnetXMLChannel | 通过 telnet 会话交换基于 XML 的 ISO-8583 消息,telnet 命令将被忽略。 |
VAPChannel | VISA 的 VAP 框架(不建议)。 |
X25Channel | ISO 通道适用于连接到 X.25 PAD。 |
XMLChannel | ISO 基本通道扩展,交换基于 XML 的 ISO-8583 消息。 |
第三方内容
此工具集包括来自第三方的资源项,如下:
- jPOS (GNU AGPL v3.0)
- JDOM library (JDOM license)
Parasoft 的 ISO 扩展根据 GNU AGPL v3.0 许可证发布。
更多许可证详情可在该插件的 licenses 文件夹中获得。