java - 如何在 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
解决方案
推荐阅读
- python - 谷歌 Colab TPU 版本
- oauth-2.0 - 每次我使用 YouTube 数据 API v3 时,如何绕过输入验证码来授权我的代码
- python - PyCharm 在 Mac 上找不到 Tesseract
- reactjs - 如何在 MuiDataTable 的 customBodyRender 中使用 onClick 事件中的值?
- python - discord py我如何为具有ID的服务器成员用户赋予角色
- javascript - FlatList 更新缓慢
- google-analytics - 为什么在 GA 中记录的交易带有(未设置)登陆页面
- vuejs2 - Nuxt 商店 mapGetters 属性在 beforeCreate() 钩子上未定义
- android - E/iardini.error0: 无效 ID 0x00000001 - 错误资源 ID
- pdf - 使用目录呈现 rmarkdown pdf 时出错