当前位置: 首页 > 知识库问答 >
问题:

使用JPOS的PISO 8583子字段

裘安阳
2023-03-14
<isopackager>
........other iso fields....
........

    <isofieldpackager
              id="57"
              length="999"
              name="Terminal Line Encrypted Data"
              class="org.jpos.iso.IFA_LLLCHAR"
              packager="org.jpos.iso.packager.ISO87BPackager">
              <isofield
                  id="0"
                  length="4"
                  name="TLE Header Indicator"
                  class="org.jpos.iso.IF_CHAR"/>
                  <isofield
                  id="1"
                  length="2"
                  name="HSS-E2EE Version"
                  class="org.jpos.iso.IF_CHAR"/>  
                  <isofield
                  id="2"
                  length="3"
                  name="EFT Secure Acquirer ID"
                  class="org.jpos.iso.IF_CHAR"/>  
                  <isofield
                  id="3"
                  length="8"
                  name="Line Encryption Terminal ID"
                  class="org.jpos.iso.IF_CHAR"/>  
                  <isofield
                  id="4"
                  length="4"
                  name="Encryption Method"
                  class="org.jpos.iso.IF_CHAR"/>  
                  <isofield
                  id="5"
                  length="10"
                  name="Line Encryption Key ID"
                  class="org.jpos.iso.IFB_LLBINARY"/>  
                  <isofield
                  id="6"
                  length="2"
                  name="Protected-Text Length"
                  class="org.jpos.iso.IFB_LLBINARY"/>  
                  <isofield
                  id="7"
                  length="8"
                  name="Reserved"
                  class="org.jpos.iso.IFB_LLBINARY"/>  
                   <isofield
                  id="8"
                  length="999"
                  name="999"
                  class="org.jpos.iso.IFA_LLLBINARY"/>  
    </isofieldpackager>
</isopackager>

我使用jpos库来设置DE57的复合字段/子字段,如下所示:

GenericPackager packager = new GenericPackager("iso87binary.xml");
 ISOMsg iso57 = new ISOMsg(57);
            iso57.setPackager(packager);
            ISOField iso57_0 =  new ISOField(0, "HTLE");
            ISOField iso57_1 = new ISOField(1, "04");
            ISOField iso57_2 = new ISOField(2, "000");
            ISOField iso57_3 = new ISOField(3, "M0220001");
            ISOField iso57_4 = new ISOField(4, "2190");
            ISOField iso57_5 = new ISOField(5, "0000010172D54C600102");
            ISOField iso57_6 = new ISOField(6, "64");
            ISOField iso57_7 = new ISOField(7, "00000000");
            ISOField iso57_8 = new ISOField(8, "95CA5E94F182A9949A7C7BA202143C4E212087E626E5F5C1C63AD173F733D339");
            iso57.set(iso57_0);
            iso57.set(iso57_1);
            iso57.set(iso57_2);
            iso57.set(iso57_3);
            iso57.set(iso57_4);
            iso57.set(iso57_5);
            iso57.set(iso57_6);
            iso57.set(iso57_7);
            iso57.set(iso57_8);
            isoMsg.set(iso57);

当我将DE57打印为:

isoMsg.getString(57)

我得到空。但是,当我将其打印为子字段时,我可以看到值(循环运行整个 iso 消息 @ i = 57):

                System.out.printf("Field (%s) = %s%n", i+".0", isoMsg.getString(i+".0"));
                System.out.printf("Field (%s) = %s%n", i+".1", isoMsg.getString(i+".1"));
                System.out.printf("Field (%s) = %s%n", i+".2", isoMsg.getString(i+".2"));
                System.out.printf("Field (%s) = %s%n", i+".3", isoMsg.getString(i+".3"));
                System.out.printf("Field (%s) = %s%n", i+".4", isoMsg.getString(i+".4"));
                System.out.printf("Field (%s) = %s%n", i+".5", isoMsg.getString(i+".5"));
                System.out.printf("Field (%s) = %s%n", i+".6", isoMsg.getString(i+".6"));
                System.out.printf("Field (%s) = %s%n", i+".7", isoMsg.getString(i+".7"));
                System.out.printf("Field (%s) = %s%n", i+".8", isoMsg.getString(i+".8"));

为什么我在前面的情况下没有得到值。

共有1个答案

万俟嘉珍
2023-03-14

你不需要创建iso57内部信息,你只需要:

ISOMsg m = new ISOMsg();
m.set("57.0", "HTLE");
m.set("57.1", "04");
m.set("57.2", "000");
...
...

然后您可以拨打:

m.getString("57.0") to get the result "HTLE"
m.getString("57.1") to get "04"

等等。

 类似资料:
  • jPOS是一个开源(文挡需要收费)的财务交易Java库和框架,能够通过定制和扩展,实现任何特殊的财务交换操作,适合要求高可用性的关键性业务处理过程。

  • 默认情况下,如果我在windows cmd中运行gradle installApp命令,它会生成一个名为jpos-1.9.8的jar文件。罐子但我的项目要求我用projectName生成jar。jar,例如myproject。jar而不是jpos-1.9.8。罐子 我试图理解build.gradle文件,但我无法找出project.name和project.version属性正在读取的位置。我试图

  • 问题内容: 在我目前的公司中,我们正在考虑使用jPOS与其他系统进行ISO 8583集成。我阅读免费文档已有一段时间了,但是仍然有很多空白。例如: jPOS应该如何在产品中工作?我是否应该启动Q2服务器,它会像端点接收或发送ISO8583消息那样工作?我应该如何将其与我的应用服务器集成? 在哪些情况下以及如何使用jPOS空间? 我的基本用例是发送/接收ISO消息。我需要所有这些东西吗? 是否还有其

  • SampleResult字段:ContentType:DataEncoding:null

  • 我不是RDD方面的专家,正在寻找一些答案,我试图在pyspark RDD上执行一些操作,但无法实现,特别是子串。我知道我可以通过将RDD转换为DF来做到这一点,但想知道在DF时代之前是如何做到这一点的?公司仍然更喜欢在RDD或数据帧中工作吗? 我的代码: 数据样本: 完整的错误消息: org.apache.spark.SparkException:由于阶段失败而中止作业:阶段50.0中的任务0失败

  • 基本上,我的要求是通过使用反射来获取超类对象,以便获得字段名及其值。 所以,我有一门课 现在我正在使用 当我尝试使用以下代码访问该字段时,它会给我java.lang.Class类的类型。 它让我异常 有人能帮助我如何将其转换为对象,以便我可以访问文件夹

  • 我的背景是C,在那里我们可以使用子类对象访问父类的公共字段。示例: 如何在Java继承中实现同样的功能? 我还有另一个关于覆盖的问题,但由于Stackoverflow规则,我将作为单独的问题提问。 那么,使用子类对象引用打印/访问Java的父类方法的语法应该是什么?我尝试了。等,但不工作。

  • 问题内容: 我已经从论坛中提取了一些信息。这是我现在拥有的原始字符串: 我不喜欢的是子字符串和。我确实想保留字符串的其他部分,除此之外。所以结果应该是这样的 我该怎么办?实际上,我使用漂亮的汤从论坛中提取了上面的字符串。现在,我可能更喜欢使用正则表达式删除该部分。 问题答案: 该函数采用常规表达式,并将字符串中的所有匹配项替换为第二个参数。在这种情况下,我们正在搜索所有标签(),然后将其替换为()