2

I want to create dummy backend for ISO 8583 messages. The necessary condition for this problem is "to run the jPos/other ATM test-suite against this backend".

1 Answers1

2

You may try simple jReactive-iso8583 server.

Have a look at client-server integration test.

Usage example:

Spring config:

@Configuration
public class Iso8583ServerConfig {

    @Value("${iso8583.connection.port}")
    int port;

    @Bean
    public org.jreactive.iso8583.server.Iso8583Server iso8583Server() throws IOException {
        return new org.jreactive.iso8583.server.Iso8583Server(port, serverMessageFactory());
    }

    @Bean
    MessageFactory serverMessageFactory() throws IOException {
        MessageFactory messageFactory = ConfigParser.createDefault();
        messageFactory.setCharacterEncoding(StandardCharsets.US_ASCII.name());
        messageFactory.setUseBinaryMessages(false);
        messageFactory.setAssignDate(true);
        return messageFactory;
    }

}

Add custom message listener somewhere:

server.addMessageListener(new IsoMessageListener() {

        @Override
        public boolean applies(IsoMessage isoMessage) {
            return isoMessage.getType() ==  0x200;
        }

        @Override
        public boolean onMessage(ChannelHandlerContext ctx, IsoMessage isoMessage) {
            capturedRequest = isoMessage;
            final IsoMessage response = server.getIsoMessageFactory().createResponse(isoMessage);
            response.setField(39, IsoType.ALPHA.value("00", 2));
            response.setField(60, IsoType.LLLVAR.value("XXX", 3));
            ctx.writeAndFlush(response);
            return false;
        }
    });

Then run a server:

 server.init();
 server.start();

Shutdown server:

 server.shutdown();
Konstantin Pavlov
  • 956
  • 1
  • 10
  • 24