首页 > 解决方案 > 如何在 JPOS 中正确使用 GenericTaggedFieldsPackager 来打包 TLV 字段?

问题描述

我正在尝试学习如何使用 GenericTaggedFieldsPackager,但我有点迷路了。我有由数据集 ID + 长度 + 标签组成的 TLV 字段,标签也是 TLV 数据。

例如,我正在尝试发送 F125 数据集 ID 6B:

6B 000D 0D 01 D9 0E 08 0123345667890123
DS ID  = 6B
Length = 000D
Value  = (Tag 0D + len 01 + value D9) + (Tag 0E + len 08 + value 0123345667890123)

这些字段可以包含多个 DS ID,每个 DS ID 可以包含多个标签。某些字段可以重复 DS ID 和标签

我的通用打包器 xml:

<isofieldpackager
        id="125"
        length="255"
        name="Usage 2—Supporting Information (TLV Format)"
        pad="true"
        class="org.jpos.iso.IFB_LLHBINARY"
        emitBitmap="false"
        tagSize="2"
        lenSize="4"
        tagMapper="org.jpos.iso.packager.TTDecimalTagMapper"
        packager="org.jpos.iso.packager.GenericTaggedFieldsPackager">

    <isofield
            id="1"
            length="32"
            name="MagnePrint Data"
            pad="false"
            token="6B"
            class="company.model.IFB_TTLLCHAR"/>

我的 IFB_TTLLCHAR 类:

public class IFB_TTLLCHAR extends TaggedFieldPackagerBase {

@Override
protected int getTagNameLength() {
    return 2;
}

protected ISOFieldPackager getDelegate(int length, String description) {
    return new IFB_LLLHECHAR(length, description);
}}

DecimalTagMapper 说它将采用字母数字标签并映射它们,但是我如何使用通用打包程序来做到这一点?

每当我运行代码时,它总是将 DS ID 映射为标记 01。如何指定我希望它是通用打包程序中的标记 6B?

结果:

msg.set("125.1","0D01D90E080123345667890123");
Prev tran#125=3031001AF0C4F0F1C4F9F0C5F0F8F0F1F2F3F3F4F5F6F6F7F8F9F0F1F2F3

预期结果:

Prev tran#125=6B000D0D01D90E080123345667890123

标签: javaiso8583jpos

解决方案


推荐阅读