下面的代码段将向您展示如何解压缩ISO 8583消息。
package org.nhooo.example.jpos; import org.jpos.iso.ISOException; import org.jpos.iso.ISOMsg; import org.jpos.iso.packager.GenericPackager; import java.io.InputStream; public class UnpackISOMessage { public static void main(String[] args) { UnpackISOMessage iso = new UnpackISOMessage(); try { ISOMsg isoMsg = iso.parseISOMessage(); iso.printISOMessage(isoMsg); } catch (Exception e) { e.printStackTrace(); } } private ISOMsg parseISOMessage() throws Exception { String message = "02003220000000808000000010000000001500120604120000000112340001840"; System.out.printf("Message = %s%n", message); try { // 从资源目录加载程序包。 InputStream is = getClass().getResourceAsStream("/fields.xml"); GenericPackager packager = new GenericPackager(is); ISOMsg isoMsg = new ISOMsg(); isoMsg.setPackager(packager); isoMsg.unpack(message.getBytes()); return isoMsg; } catch (ISOException e) { throw new Exception(e); } } private void printISOMessage(ISOMsg isoMsg) { try { System.out.printf("MTI = %s%n", isoMsg.getMTI()); for (int i = 1; i <= isoMsg.getMaxField(); i++) { if (isoMsg.hasField(i)) { System.out.printf("Field (%s) = %s%n", i, isoMsg.getString(i)); } } } catch (ISOException e) { e.printStackTrace(); } } }
运行该程序时,将获得以下输出:
Message = 02003220000000808000000010000000001500120604120000000112340001840 MTI = 0200 Field (3) = 000010 Field (4) = 000000001500 Field (7) = 1206041200 Field (11) = 000001 Field (41) = 12340001 Field (49) = 840
fields.xml可以从以下链接下载xml打包程序():fields.xml。
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=org/jpos/jpos/2.1.3/jpos-2.1.3.jar --> <dependency> <groupId>org.jpos</groupId> <artifactId>jpos</artifactId> <version>2.1.3</version> </dependency>