小编AJA*_*JAY的帖子

如何在jpos中为ascii通道和iso93ascii打包器构建ISO8583消息头?

我正在尝试使用 Java 中的 JPOS 创建 ISO8583 消息,使用 ASCII 通道发送消息并使用 iso93ascii 打包器打包 ISO 消息。

但是在发送消息后,我从服务器收到无效的标头错误。

所以我的问题是标题究竟是由什么组成的,以及如何为 MTI 值 1200 构建标题。

ISOMsg.setHeader("HEADER".getBytes());
Run Code Online (Sandbox Code Playgroud)

我应该如何框住我的 HEADER?

新发展:

查看服务器配置后,我需要发送由 ISO8583 消息长度(以十六进制转换为字节的 2 字节长度)作为前缀的标头。我怎样才能使用 JPOS 做到这一点?也无法使用channel.setHeader("xxx").getBytes()).

我如何查看从我的终端发送到服务器的原始消息。

以下是部分代码摘录

部署文件

filename : 10_clientsimualtor_channel.xml

<?xml version="1.0" ?>
<channel-adaptor name='jpos-client-adaptor'
    class="org.jpos.q2.iso.ChannelAdaptor" logger="Q2">
<channel class="org.jpos.iso.channel.ASCIIChannel" logger="Q2"
          packager="org.jpos.iso.packager.ISO93APackager" header= "ISO026000075">

  <property name="host" value="xxx.xx.xx.xx" />
  <property name="port" value="xxxxx" />
</channel>
<in>jpos-client-send</in>
<out>jpos-client-receive</out>
<reconnect-delay>10000</reconnect-delay>
</channel-adaptor>
Run Code Online (Sandbox Code Playgroud)

代码 :

packager = new ISO93APackager();

            ISOMsg m = new ISOMsg();
            m.setPackager(packager);
            System.out.println(packager);

            m.setHeader("ISO026000075".getBytes());
             System.out.println("Head err..........."+newString(m.getHeader())); …
Run Code Online (Sandbox Code Playgroud)

jpos iso8583

5
推荐指数
1
解决办法
9213
查看次数

如何使用 j8583 库将 ISO8583 消息长度添加到 ISO8583 消息中

我正在尝试使用 j8583 向服务器发送 ISO8583 消息。我在 config.xml 文件中设置标头并设置其中的字段。现在,服务器配置要求在传入 ISO8583 消息之前发送 2 字节长度(以字节形式发送的十六进制长度)。所以我的问题是:

1)如何计算消息的长度,即ISO消息的字节表示以及如何计算字节表示的长度。

2)如何在ISO8583消息之前将消息的长度发送到服务器,即添加在标头前面。

以下是一些代码摘录

Client client = new Client(sock);
    Thread reader = new Thread(client, "j8583-client");
    reader.start();

        IsoMessage req = mfact.newMessage(0x200);
        req.setValue(4, amounts[rng.nextInt(amounts.length)],
                IsoType.AMOUNT, 0);
        req.setValue(12, req.getObjectValue(7), IsoType.TIME, 0);
        req.setValue(13, req.getObjectValue(7), IsoType.DATE4, 0);
        req.setValue(15, req.getObjectValue(7), IsoType.DATE4, 0);
        req.setValue(17, req.getObjectValue(7), IsoType.DATE4, 0);
        req.setValue(37, System.currentTimeMillis() % 1000000,
                IsoType.NUMERIC, 12);
        req.setValue(41, data[rng.nextInt(data.length)], IsoType.ALPHA, 16);
        req.setValue(48, data[rng.nextInt(data.length)], IsoType.LLLVAR, 0);
        pending.put(req.getField(11).toString(), req);
        System.err.println(String.format("Sending request %s", req.getField(11)));
                    System.out.println(req.getIsoHeader());
                    System.out.println(req.debugString());

        req.write(sock.getOutputStream(), 2);
Run Code Online (Sandbox Code Playgroud)

下面是配置

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE j8583-config …
Run Code Online (Sandbox Code Playgroud)

java iso8583 j8583

4
推荐指数
1
解决办法
5601
查看次数

标签 统计

iso8583 ×2

j8583 ×1

java ×1

jpos ×1