jPOS - F35 Track 2 - 如何使用包含 CHAR 定界符的 BCD 数据打包 1 字节二进制长度?

jPOS - F35 Track 2 - How to package 1 byte binary length, with BCD data including a CHAR delimeter?

所以我对 jPOS 越来越熟悉,无论如何都不是专家。

我的规范将 F35 Track 2 定义如下:

"Variable Length, 1 byte binary + 37 N, 4-bit BCD (unsigned packed); maximum 20 bytes"

所以我在我的 GenericPackager 中定义了那个字段:

 <isofield
      id="35"
      length="37"
      name="TRACK 2 DATA"
      pad="true"
      class="org.jpos.iso.IFB_LLHNUM"/>

据我了解,B是压缩二进制编码,LL是37的可变长度,H发送长度为1字节二进制,NUM是长度后面的数字数据。

对吗?

所以在我的项目中,我有以下代码:

    ISOPackager packager = new GenericPackager("src/main/resources/vapsms_modified.xml");
    BaseChannel channel = new VAPChannel(host, port, packager);

    channel.connect();

    ISOMsg msg = new ISOMsg();
    msg.setPackager(packager);

    msg.setMTI("0100");
    ...
    msg.set("35","4123456891023456D49121010000020100000");
    ...
    channel.send(msg);

我的获取流程收到F35如下:

Trk2#35=4123456891023457449121010000020100000

很明显,'D' 分隔符不是数字,而是 CHAR。

我查看了可用的 ISOFieldPackagers,但找不到任何 class 处理数字数据中的字符定界符。

我的规范中唯一提到的另一件事是

The Track 2 delimiter/separator character (^) must be encoded as X'D' (binary 1101).

如何发送该字段的字符定界符?

非常感谢任何帮助!

规范有误,插入符号在音轨 1 中用作分隔符,而不是在音轨 2 中。 D 是 track2 的分隔符,由 jPOS 使用您的 ISOFieldPackager 配置正确处理。