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

AJA*_*JAY 5 jpos 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()));

            Date now = new Date();

            m.setMTI("1200");
            m.set(2,"xx");
            m.set(3,"xxxxx");
            m.set(4,"000000010000");
            m.set(11,"214491");
            m.set(12,"160203");

            m.set(123, "xxxxxx");
            m.set(125, "xxxx");

           byte b[] = m.pack();
           System.out.println("\n\n\n\nPACKAGER =====------"+m.getPackager());
           System.out.printf("\n\n\n\nMessage ===== %s",new String(b));

            System.out.println("\n\n\n"+ISOUtil.hexdump(b));return m;
Run Code Online (Sandbox Code Playgroud)

小智 2

您可以在通道级别设置标头(即channel.setHeader("xxx").getBytes())或在每条消息级别设置标头(即m.setHeader("xxx".getBytes()))。

通道在接收时知道标头长度非常重要,因此即使您使用每个消息标头,也应该在通道级别设置一个虚拟标头。

使用 Q2 和 ChannelAdaptor 或 QServer 组件将使您的生活变得更加轻松。看看http://jpos.org/doc/proguide-draft.pdf