章节目录:

关于扩展

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 消息和生成虚拟响应。

使用变量

如果打算在 Load Test 中运行 ISO 8583 扩展插件,请注意 test_suite_loc 变量只可用于 input 字段。Load Test 不支持 .tst 项目中所使用 Parasoft Marketplace 扩展的 project_loc 和 workspace_loc 变量。使用 test_suite_loc 变量可以指定相对于 .tst 项目文件位置的外部文件路径。例如:

${test_suite_loc}\Packager\GenericExamplePackager.xml

实现

此扩展套件实现为 com.parasoft.soavirt.iso8583.main-<version>.jar,这取决于发行版提供的以下 jar:

jPOS

  • jpos-2.1.1.jar

JDOM

  • jdom2-2.0.6.jar

ISO-8583 扩展

  • com.parasoft.soavirt.messages.iso8583.jar
  • com.parasoft.soavirt.transport.iso8583.jar
  • com.parasoft.virtualize.listener.iso8583e.jar

要求

  • SOAtest 和/或 Virtualize 9.5.x 及更高版本。

安装

可以从 UI 或命令行安装该扩展。

UI 安装

  1. 选择 Parasoft> 首选项

  2. 在系统属性首选项页面,点击添加 JARs

  3. 在打开的文件选择器中,选择 com.parasoft.soavirt.iso8583.main.jar。将加载所有必需的依赖项。
  4. 重启 SOAtest/Virtualize。

命令行安装

将 com.parasoft.soavirt.iso8583.main.jar 文件添加到设置属性文件中的 system.properties.classpath 属性。

例如:

system.properties.classpath=<path to jar>/com.parasoft.soavirt.iso8583.main.jar

classpath 更改完成后,将加载所有必需的依赖项。

使用说明

Virtualize

需要使用 ISO 8583 传输的 Virtualize 消息响应器必须配置为在 PVA 级别上使用自定义的 ISO 8583 监听器(更多信息,请参阅添加项目、虚拟资产和响应器套件)。

  1. 双击 Virtualize 服务树上 PVA 的节点
  2. 点击传输> 自定义选项卡,并配置监听器。
  3. 如果安装了多个监听器,则首先从选择实现下拉菜单选择 ISO 8583 Listener。

将 PVA 绑定到监听器上后,即可将 ISO 8583 响应器工具添加到 PVA,从而正确提供 ISO 8583 响应。

ISO 8583 Message Listener 设置

可以为 ISO 8583 Message Listener 配置以下设置。

通道设置

Channel Name

定义在发送/接收消息时要使用的 ISO 8583 通道。jPOS 库中包含的所有默认的通道实现(如,仅需端口、主机和打包器的通道实现)都可使用。详情请参阅Channels

Host定义在创建连接时要使用的主机。
Port

定义在创建连接时要使用的端口。 

Timeout

定义连接超时之前可以等待多少秒。 

打包器设置

Packager Name

定义将要用来打包和解包 ISO 8583 消息的打包器。总的来说,这里将使用 GenericPackager 和通用打包器 XML 说明。然而,如果预定义的 ISO 打包器更合适,则可以使用“打包器”部分中提到的所有打包器。如果实现了自定义的 ISO 打包器(如,ISOPackager 接口),则其必须包含在 SOAtest/Virtualize classpath 中,并且必须提供完全限定的类名。详情请参阅Packagers

Packager Path

定义通用打包器说明 XML 文件的路径。

该字段仅用于通用的打包器(如 GenericPackager 和 X92GenericPackager)。

头设置

Header Length指定传出响应的头长度。

连接管理设置

保持连接

启用此选项,让客户端保持连接并重复,以便后续的发布。

测试执行之后关闭连接

启用此选项,在发布后直接关闭客户端连接。


ISO 8583 Message Format 设置

可以为 ISO 8583 Message Format 配置以下设置。

Packager Name

定义用来打包和解包 ISO 8583 消息的打包器。总的来说,这里将使用 GenericPackager 和通用打包器 XML 说明。然而,如果预定义的 ISO 打包器更合适,则可以使用“打包器”部分中提到的所有打包器。如果实现了自定义的 ISO 打包器(如,ISOPackager 接口),则其必须包含在 SOAtest/Virtualize classpath 中,并且必须提供完全限定的类名。详情请参阅Packagers

Packager Path

定义通用打包器说明 XML 文件的路径。

该字段仅用于通用的打包器(如 GenericPackager 和 X92GenericPackager)

ISO 8583 Transport 设置

可以为 ISO 8583 Transport 配置以下设置。

通道设置

Channel Name

定义在发送/接收消息时要使用的 ISO 8583 通道。jPOS 库中包含的所有默认的通道实现(如,仅需端口、主机和打包器的通道实现)都可使用。如果为空,监听器将不会启动。详情请参阅Channels

Host定义在创建连接时要使用的主机。
Port

定义在创建连接时要使用的端口。 

Timeout

定义连接超时之前可以等待多少秒。 

打包器设置

Packager Name

定义创建通道时将使用的打包器。

该字段与 ISO 8583 Message Format Settings中的对等内容具有相同的工作原理。

Packager Path

定义通用打包器说明 XML 文件的路径。

该字段的工作原理等同于 ISO 8583 Message Format Settings

头设置

Request Header

定义要与请求一起发送的自定义头。该字段还可作为响应头大小模板,从而正确读取响应中的头。

打包器

打包器定义如何组织 ISO 8583 消息,包括消息中的字段数和字段数据类型。它们允许将 ISO 8583 消息的二进制数据转换成通用的 ISO 消息,以便不同的打包器轻松操作和格式化。默认情况下,提供大量的打包器,并且自定义打包器可以用来支持特殊情况。

它们还为 jPOS API 提供了可扩展性,可以定义自定义打包器来描述自定义 ISO 8583 消息,从而支持几乎所有类型的 ISO 8583 消息。

默认打包器

打包器名称打包器说明

Base1Packager

VISA Base1 二进制打包器。

Base1SubFieldPackager

VISA Base1 二进制子字段打包器。

BASE24Packager

BASE24 ASCII 打包器。

BERTLVAsciiHexPackagerBER TLV ASCII 打包器。
BERTLVBinaryPackagerBER TLV BINARY 打包器。
BERTLVEbcdicHexPackagerBER TLV EBCDIC 打包器。
BinaryHexTaggedSequencePackager TLV BINARY 打包器。

CTCSubElementPackager

验证用于字段 48 中子元素的打包器。

CTCSubFieldPackager

验证用于字段 48 中子字段的打包器。

DummyPackager

Dummy 打包器。如果消息被打包或解包,将抛出异常。

EuroPackager

EuroPay 打包器。

EuroSubFieldPackager

EuroPay 子字段打包器。

FSDPackager

FSD ISO 消息打包器。

GenericPackager

使用 XML 说明对 ISO 消息进行描述。

GenericSubFieldPackager

使用 XML 说明对 ISO 子字段进行描述。

GenericTaggedFieldsPackager

用于包含没有位图的 TLV 子字段的字段的打包器。

GenericValidatingPackager

使用 XML 说明对 ISO 消息进行验证。

GICCSubFieldPackager用于 GICC 子字段的打包器。

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 打包器。

MasterCardEBCDICSubFieldPackager

MasterCard EBCDIC 子字段打包器。

PackagerWrapper

包装其他的 ISO 打包器。

PostPackager

用于 Postilion 的 ISO 8583 v1987 打包器

X92GenericPackager

使用 XML 说明对 ANSI X9.2 ISO 消息进行描述。

X92Packager

ANSI X9.2 打包器。

XML2003Packager

将 ISO 8583 v2003 消息打包和解包到 XML 表示形式中。

XMLPackager

将 ISO 8583 消息打包和解包到 XML 表示形式中。

自定义打包器

自定义打包器有两种实现方式,以给自定义 ISO 8583 消息提供支持。

通用打包器 XML 说明

在这个实现中,jPOS 库提供了可以处理大部分 ISO 8583 消息的通用打包器。通用打包器使用 ISO 8583 的 XML 说明,正确地打包和解包自定义的 ISO 8583 消息。

若要定义通用打包器说明,则通过声明 XML 文档类型进行启用:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager PUBLIC
	"-//jPOS/jPOS Generic Packager DTD 1.0//EN"
	"http://jpos.org/dtd/generic-packager-1.0.dtd"> 

ISO 打包器定义遵循以下文档类型:

<isopackager>
	<!-- ISO Field Definitions -->
</isopackager>

ISO 字段定义放置在 ISO 打包器定义中。ISO 字段定义可以是基本的 ISO 8583 类型,也可以是复杂类型。

基本 ISO 字段定义

使用功能以下格式定义基本 ISO 字段定义:

<isofield
	id="0"
	length="4"
	name="MESSAGE TYPE INDICATOR"
	pad="true"
	class="org.jpos.iso.IFB_NUMERIC"/>

id 属性定义字段号,length 属性定义数据长度,name 属性定义字段名,pad 属性(可选)指定字段是否应该填充字符,class 属性定义与字段数据类型相关联的字段打包器。如果需要,自定义字段打包器也可以通过实现 ISOFieldPackager 并包括在 SOAtest/Virtualize classpath 上的实现来创建。 

默认提供以下 ISO 字段打包器(所有类名应以 XML 定义中的“org.jpos.iso”作为前缀)。

类名类说明类名类说明

IF_CHAR

定长的字母数字(ASCII)

IFB_LLCHAR

可变长度的字母数字(BINARY,最大长度为 99)

IF_ECHAR

定长的字母数字(EBCDIC)

IFB_LLHBINARY

可变长度的二进制十六进制(BINARY,最大长度为 99)

IF_NOP

定长的空(哑)字段

IFB_LLHCHAR

可变长度的字母数字十六进制(BINARY,最大长度为 99)

IF_TBASE

定长的令牌字段

IFB_LLHECHAR

可变长度的字母数字十六进制(EBCDIC,最大长度为 99)

IF_TCHAR

使用令牌的定长字母数字

IFB_LLHFBINARY

定长的二进制十六进制(BINARY,最大长度为 99)

IF_UNUSED

定长的空(哑)字段,如果字段正在使用则抛出异常。

IFB_LLHNUM

可变长度的数字十六进制(BINARY,最大长度为 99)

IFA_AMOUNT

定长的数量以 0 填充(ASCII)

IFB_LLLBINARY

可变长度的二进制(BINARY,最大长度为 999)

IFA_AMOUNT2003

ISO 8583-2003 定长的数量以 0 填充(ASCII)

IFB_LLLCHAR

可变长度的字母数字(BINARY,最大长度为 999)

IFA_BINARY

定长的二进制(ASCII)

IFB_LLLHBINARY

可变长度的二进制十六进制(BINARY,最大长度为 999)

IFA_BITMAP

定长的位图(ASCII)

IFB_LLLHCHAR

可变长度的字母数字十六进制(BINARY,最大长度为 999)

IFA_FLLCHAR

定长的字母数字(ASCII,长度为 99)

IFB_LLLHECHAR

可变长度的字母数字十六进制(EBCDIC,最大长度为 999)

IFA_FLLNUM

定长的数字(ASCII,长度为 99)

IFB_LLLHNUM

可变长度的数字十六进制(BINARY,最大长度为 999)

IFA_LBINARY

可变长度的二进制(ASCII,最大长度为 9)

IFB_LLLLBINARY

可变长度的二进制(BINARY,最大长度为 9999)

IFA_LCHAR

可变长度的字母数字(ASCII,最大长度为 9)

IFB_LLLNUM

可变长度的数字(BINARY,最大长度为 999)

IFA_LLABINARY

可变长度的二进制(ASCII,最大长度为 99)

IFB_LLNUM

可变长度的数字(BINARY,最大长度为 99)

IFA_LLBINARY

可变长度的二进制(ASCII,最大长度为 99)

IFB_NUMERIC

定长的数字(ASCII)

IFA_LLBNUM

可变长度的数字(ASCII BCD,最大长度为 99)

IFE_AMOUNT

定长的数量(EBCDIC)

IFA_LLCHAR

可变长度的字母数字(ASCII,最大长度为 99)

IFE_BINARY

定长的二进制(EBCDIC)

IFA_LLLABINARY

可变长度的二进制(ASCII,最大长度为 999)

IFE_BITMAP

定长的位图(EBCDIC)

IFA_LLLCHAR

可变长度的字母数字(ASCII,最大长度为 999)

IFE_CHAR

定长的字母数字(EBCDIC)

IFA_LLLLBINARY

可变长度的二进制(ASCII,最大长度为 9999)

IFE_LLBINARY

可变长度的二进制(EBCDIC,最大长度为 99)

IFA_LLLLCHAR

可变长度的字母数字(ASCII,最大长度为 9999)

IFE_LLCHAR

可变长度的字母数字(EBCDIC,最大长度为 99)

IFA_LLLLLBINARY

可变长度的二进制(ASCII,最大长度为 99999)

IFE_LLLBINARY

可变长度的二进制(EBCDIC,最大长度为 999)

IFA_LLLLLCHAR

可变长度的字母数字(ASCII,最大长度为 99999)

IFE_LLLCHAR

可变长度的字母数字(EBCDIC,最大长度为 999)

IFA_LLLNUM

可变长度的数字(ASCII,最大长度为 999)

IFE_LLLEBINARY

可变长度的二进制 EBCDIC(EBCDIC,最大长度为 999)

IFA_NUMERIC

定长的数字(ASCII)

IFE_LLLLBINARY

可变长度的二进制(EBCDIC,最大长度为 9999)

IFA_TTLBINARY

使用令牌的可变长度二进制(ASCII,最大长度为 9)

IFE_LLLLCHAR

可变长度的字母数字(EBCDIC,最大长度为 9999)

IFA_TTLCHAR

使用令牌的可变长度字母数字(ASCII,最大长度为 9)

IFE_LLNUM

可变长度的数字(EBCDIC,最大长度为 99)

IFA_TTLLBINARY

使用令牌的可变长度二进制(ASCII,最大长度为 99)

IFE_NUMERIC

定长的数字(EBCDIC)

IFA_TTLLCHAR

使用令牌的可变长度字母数字(ASCII,最大长度为 99)

IFE_SIGNED_
NUMERIC

定长带符号的数字(EBCDIC)

IFA_TTLLLBINARY

使用令牌的可变长度二进制(ASCII,最大长度为 999)

IFEA_LLCHAR

深奥的可变长度字母数字(ASCII EBCDIC,最大长度为 99)

IFA_TTLLLCHAR

使用令牌的可变长度字母数字(ASCII,最大长度为 999)

IFEB_LLLNUM

深奥的可变长度数字(EBCDIC,最大长度为 999)

IFA_TTLLLLBINARY

使用令牌的可变长度二进制(ASCII,最大长度为 9999)

IFEB_LLNUM

深奥的可变长度数字(EBCDIC,最大长度为 99)

IFA_TTLLLLCHAR

使用令牌的可变长度字母数字(ASCII,最大长度为 9999)

IFEMC_LLCHAR

深奥的可变长度字母数字( EBCDIC,最大长度为 99)

IFB_AMOUNT

定长的数量(BINARY)

IFEP_LLCHAR

欧洲支付可变长度的字母数字( EBCDIC,最大长度为 99)

IFB_AMOUNT2003

ISO 8583-2003(BINARY)定长的数量

IFEPE_LLCHAR

信用卡可变长度的字母数字(EBCDIC,最大长度为 99)

IFB_BINARY

定长的二进制(BINARY)

IFIPM_LLLCHAR

使用令牌的可变长度字母数字(最大长度为 999)

IFB_BITMAP

定长的位图(BINARY)

IFMC_LLBINARY

使用令牌的可变长度二进制(最大长度为 99)

IFB_FLLLNUM

定长的数字(BINARY,长度为 999)

IFMC_LLCHAR

使用令牌的可变长度字母数字(最大长度为 99)

IFB_FLLNUM

定长的数字(BINARY,长度为 99)

IFMC_LLLBINARY

使用令牌的可变长度二进制(最大长度为 999)

IFB_FNUMERIC

定长的数字(ASCII)

IFMC_LLLCHAR

使用令牌的可变长度字母数字(最大长度为 999)

IFB_LLBINARY

可变长度的二进制(BINARY,最大长度为 99)

 


复杂 ISO 字段定义

使用以下格式定义复杂 ISO 字段定义:

<isofieldpackager
	id="127"
	length="255"
	name="FILE RECORS(S) ACTION/DATA"
	class="org.jpos.iso.IFB_LLHBINARY"
	packager="org.jpos.iso.packager.GenericSubFieldPackager"/>


<!-- ISO Field Definitions -->
</isofieldpackager>

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 通道。

默认提供以下通道:

通道名称通道说明

AmexChannel

美国特快通道。 

ASCIIChannel

ISO 基本通道扩展,具有四个 ASCII 字符消息长度头。 

BASE24Channel通过 X.25 链接的 ACI's BASE24。
BASE24TCPChannel通过 TCP 链接的 ACI's BASE24。

BCDChannel

ISO 基本通道扩展,具有以下消息格式

[LEN][TPDU][ISOMSG]

其中 LEN 为 2 个十六进制字节。 

CSChannel

CS 标准通道。 

FSDChannel

ISO 基本通道扩展,具有以下消息格式

[LEN][TPDU][ISOMSG]

其中按照 NBO(network byte order,网络字节顺序),LEN 为 2 个字节。 

GICCChannelGICC 通道。

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 消息。 

第三方内容

此工具集包括来自第三方的资源项,如下:

Parasoft 的 ISO 扩展根据 GNU AGPL v3.0 许可证发布。

更多许可证详情可在该插件的 licenses 文件夹中获得。

  • No labels