2017-01-26 71 views
3

如何在下一個代碼中打印打包的iso消息?如何使用JPOS庫文件打印iso-8583消息?

ISOMsg isoMsg = new ISOMsg(); 
isoMsg.setPackager(packager); 
isoMsg.setMTI("0200"); 
isoMsg.set(2, "16"); 
isoMsg.set(2, "5421287475388412"); 
isoMsg.set(3, "000000 "); 
isoMsg.set(4, "400.0"); 
isoMsg.set(7, "0716070815"); 
isoMsg.set(11, "844515"); 

logISOMsg(isoMsg); 

byte[] data = isoMsg.pack(); 
System.out.println("RESULT : " + new String(data)); 

回答

2

如果你的意思是你想打印消息字段,你可以看到這篇文章在link

我在這裏是指他的代碼:

public class BuildISOMessage { 

    public static void main(String[] args) throws IOException, ISOException { 
     // Create Packager based on XML that contain DE type 
     GenericPackager packager = new GenericPackager("basic.xml"); 

     // Create ISO Message 
     ISOMsg isoMsg = new ISOMsg(); 
     isoMsg.setPackager(packager); 
     isoMsg.setMTI("0200"); 
     isoMsg.set(3, "2"); 
     isoMsg.set(4, "10000"); 
     isoMsg.set(7, "110722180"); 
     isoMsg.set(11, "123456"); 
     isoMsg.set(44, "A5DFGR"); 
     isoMsg.set(105, "ABCDEFGHIJ 1234567890"); 

     // print the DE list 
     logISOMsg(isoMsg); 

     // Get and print the output result 
     byte[] data = isoMsg.pack(); 
     System.out.println("RESULT : " + new String(data)); 
    } 

    private static void logISOMsg(ISOMsg msg) { 
     System.out.println("----ISO MESSAGE-----"); 
     try { 
      System.out.println(" MTI : " + msg.getMTI()); 
      for (int i=1;i<=msg.getMaxField();i++) { 
       if (msg.hasField(i)) { 
        System.out.println(" Field-"+i+" : "+msg.getString(i)); 
       } 
      } 
     } catch (ISOException e) { 
      e.printStackTrace(); 
     } finally { 
      System.out.println("--------------------"); 
     } 

    } 

} 
+1

我已經看到吉米的博客,有一個與生成位圖的問題,我需要定製ISOMsg ,我如何製作定製的ISOMsg? –

+0

如果您想要自定義ISOMsg結構,您可以嘗試使用自己的包裝器實現,請查看包[org.jpos.iso.packager] –

7

你好,如果你想通過現場打印領域,最簡單的方法是使用ISOMsg.dump()方法,在你的代碼是:

isoMsg.dump(Sytsem.out, ""); 

如果你想要一個十六進制轉儲表示你可以使用ISOUtil.hexDump()方法,在你的榜樣:

import org.jpos.iso.ISOException; 
import org.jpos.iso.ISOMsg; 
import org.jpos.iso.ISOUtil; 

public class JposExamples { 

    /** 
    * 
    */ 
    public JposExamples() { 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) throws ISOException{ 
     ISOMsg isoMsg = new ISOMsg(); 
     isoMsg.setPackager(new ISO87BPackager()); 
     isoMsg.setMTI("0200"); 
     isoMsg.set(2, "16"); 
     isoMsg.set(2, "5421287475388412"); 
     isoMsg.set(3, "000000"); 
     isoMsg.set(4, "400.0"); 
     isoMsg.set(7, "0716070815"); 
     isoMsg.set(11, "844515"); 
     byte[] data = isoMsg.pack(); 
     System.out.println(ISOUtil.hexdump(data)); 
    } 
} 

這將使用ISO87BPackager和打印:

0000 02 00 72 20 00 00 00 00 00 00 16 54 21 28 74 75 ..r .......T!(tu 
0010 38 84 12 00 00 00 00 00 00 04 00 E0 07 16 07 08 8............... 
0020 15 84 45 15          ..E. 

如果使用ISO87APackager而不是輸出會是這樣的:

0000 30 32 30 30 37 32 32 30 30 30 30 30 30 30 30 30 0200722000000000 
0010 30 30 30 30 31 36 35 34 32 31 32 38 37 34 37 35 0000165421287475 
0020 33 38 38 34 31 32 30 30 30 30 30 30 30 30 30 30 3884120000000000 
0030 30 30 30 34 30 30 2E 30 30 37 31 36 30 37 30 38 000400.007160708 
0040 31 35 38 34 34 35 31 35       15844515 

希望這回答你的問題。

0

如果你要打印的原始消息這是爲我工作:

ISOBasePackager packager = new Reliance93APackagerBBitmap(); 
 
org.jpos.util.Logger jPosLogger = new org.jpos.util.Logger(); 
 
jPosLogger.addListener(new SimpleLogListener(System.out)); 
 
packager.setLogger(jPosLogger, "deb