【问题标题】:How to handle fields with different usages in the GenericPackager?GenericPackager 中如何处理不同用途的字段?
【发布时间】:2020-09-23 22:01:17
【问题描述】:

我有几个字段会根据该字段的用途更改其定义。

例如F48定义为:

Variable Length, 1-byte binary + 255 bytes, variable by usage, max 256 bytes

一次处理一种用法很简单,例如用法 A 在规范和我的打包程序中定义:

Variable length, 1-byte binary + 255 bytes, EBCDIC, max 256 bytes
<isofield
  id="48"
  length="255"
  name="ADITIONAL DATA - PRIVATE"
  class="org.jpos.iso.IFB_LLHECHAR"/>

但另一种用法可以定义为

variable length, 1-byte binary + 4 N, 4-bit BCD

或者

variable length, 1-byte binary + 143 AN, EBCDIC

等等。我不太确定如何在我的通用打包程序中处理同一字段的多次使用。

我考虑过使用 isofieldpackager 将其视为子字段,然后根据我需要的用途,我只使用该子字段。

例如,使用A,我尝试过

<isofieldpackager
      id="48"
      length="255"
      name="F48 ADDITIONAL DATA - PRIVATE"
      emitBitmap="false"
      firstField="0"
      class="org.jpos.iso.IFB_LLHBINARY"
      packager="org.jpos.iso.packager.GenericSubFieldPackager">
<isofield
        id="0"
        length="255"
        name="ADITIONAL DATA - PRIVATE"
        class="org.jpos.iso.IFB_LLHECHAR"/>
</isofieldpackager>

然后将该字段设置为 isoMSG.set("48.0", "This is my data"),这似乎在大多数情况下都有效,但是当它到达我的获取时,该字段的前缀有一些不可读的数据过程。

感谢您的帮助,如果您需要更多信息,请告诉我

【问题讨论】:

    标签: iso8583 jpos


    【解决方案1】:

    在频道级别,如果您有办法弄清楚使用情况,您可以使用dynamic packager 支持。因此,基本上,您创建不同的包,通道决定在运行时使用哪一个。

    但最简单的方法是将其作为不透明的二进制字段处理,然后在更高级别的代码上处理差异。

    【讨论】:

    • 感谢您的回复。请问什么是不透明的二进制字段?另外,是否可以看到在更高级别代码中处理不同用法的示例?
    • Nvm,我相信我想通了。也发布了我所做的答案。希望我的理解是正确的
    【解决方案2】:

    所以 apr 有正确的答案。我花了比我想承认的时间更多的时间来理解它,但据我了解,您必须获取字符串的字节,然后通过您的解释器、前缀等运行它。

    private static byte[] calcBytes(String s) throws ISOException {
        byte[] bytes = s.getBytes();
        EbcdicInterpreter.INSTANCE.interpret(s,bytes,0);
        return bytes;
    

    然后在你的通用包装器中,它必须是一个(不透明的)二进制类

    <isofield
      id="48"
      length="255"
      name="ADITIONAL DATA - PRIVATE"
      class="org.jpos.iso.IFB_LLHBINARY"/>
    

    二进制的原因是因为它的解释器在您像上述方法一样手动解释后不会再次更改您的字节。由于对我来说这个字段的每个用法都有 1 字节的二进制长度,这就是为什么我使用的类是 IFB_LLH

    只是想我会在此处添加此内容,以供其他任何难以理解如何处理“不透明二进制字段”的人使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2021-11-02
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2011-08-29
      相关资源
      最近更新 更多