package com.finance.iso.iso8583.mediator; import java.io.IOException; import org.jpos.iso.BaseChannel; import org.jpos.iso.ISOException; import org.jpos.iso.ISOMsg; import org.jpos.iso.ISOPackager; import org.jpos.iso.ISORequestListener; import org.jpos.iso.ISOServer; import org.jpos.iso.ISOSource; import org.jpos.iso.ServerChannel; import org.jpos.iso.channel.ASCIIChannel; import org.jpos.iso.packager.GenericPackager; public class MockISO8583Server implements ISORequestListener { /** * @param args * the command line arguments */ public static void main(String[] args) throws ISOException { String hostname = "localhost"; int portNumber = 5000; ISOPackager packager = new GenericPackager( XLinkISO8583Constant.JPOS_STREM_DEF); ServerChannel channel = new ASCIIChannel(hostname, portNumber, packager); ISOServer server = new ISOServer(portNumber, channel, null); server.addISORequestListener(new MockISO8583Server()); System.out.println("ISO8583 server started..."); new Thread(server).start(); } public boolean process(ISOSource isoSrc, ISOMsg isoMsg) { try { System.out.println("ISO8583 incoming message on host [" + ((BaseChannel) isoSrc).getSocket().getInetAddress() .getHostAddress() + "]"); if (isoMsg.getMTI().equalsIgnoreCase("1800")) { receiveMessage(isoSrc, isoMsg); logISOMsg(isoMsg); } } catch (Exception ex) { ex.printStackTrace(); } return true; } private void receiveMessage(ISOSource isoSrc, ISOMsg isoMsg) throws ISOException, IOException { System.out.println("ISO8583 Message received..."); ISOMsg reply = (ISOMsg) isoMsg.clone(); reply.setMTI("1810"); reply.set(39, "00"); isoSrc.send(reply); } 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("--------------------"); } } }