2016-01-12 45 views
3
<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> 

我用初級專業人員庫來設置複合字段/ DE57的子場如下:PISO 8583子字段使用JPOS

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")); 

爲什麼我不能在早期的情況下所獲得的價值。

回答

3

您不必創建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" 

等。

+0

我有問題與子領域包裝問題,我只是張貼了一個問題,希望你能幫助。 http://stackoverflow.com/questions/43051329/packing-subfields-using-jpos-api –