id.co.teleanjar.ppobws.isoserver.EchoTest.java Source code

Java tutorial

Introduction

Here is the source code for id.co.teleanjar.ppobws.isoserver.EchoTest.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

//simulator iso-client (oriented method)

package id.co.teleanjar.ppobws.isoserver;

import java.io.PrintStream;
import java.util.Random;
import org.apache.commons.lang.StringUtils;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMUX;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISOPackager;
import org.jpos.iso.ISORequest;
import org.jpos.util.Log4JListener;
import org.jpos.util.LogSource;
import static org.junit.Assert.assertNotNull;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.threeten.bp.Instant;
import org.threeten.bp.ZoneId;
import org.threeten.bp.format.DateTimeFormatter;

/**
 *
 * @author adi
 */
public class EchoTest {
    static ISOMUX isoMux;
    static Logger LOGGER = LoggerFactory.getLogger(EchoTest.class);
    public static final DateTimeFormatter formatterBit7 = DateTimeFormatter.ofPattern("MMddHHmmss")
            .withZone(ZoneId.systemDefault());
    public static final DateTimeFormatter formatterBit11 = DateTimeFormatter.ofPattern("yyMMdd")
            .withZone(ZoneId.systemDefault());

    public Integer random10Digit() {
        Random rnd = new Random();
        Integer n = rnd.nextInt(999999);
        return n;
    }

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {

        org.jpos.util.Logger logger = new org.jpos.util.Logger();
        Log4JListener log4JListener = new Log4JListener();
        log4JListener.setLevel("info");
        logger.addListener(log4JListener);
        System.out.println("Starting ISO-8583 connection");

        isoMux = new ISOMUX(new TeleChannel("localhost", 9078, new TelePackager())) {
            protected String getKey(ISOMsg m) throws ISOException {
                if (m.getString(11) == null) {
                    return m.getString(12);
                }
                return m.getString(11);
            }
        };
        isoMux.setLogger(logger, "mux");
        new Thread(isoMux).start();
        ((LogSource) isoMux.getISOChannel()).setLogger(logger, "iso8583.tele.channel");
    }

    //@Test
    public void testSignOn() throws Exception {
        Instant sekarang = Instant.now();

        ISOMsg msg = createSignOnRequest(sekarang);
        ISORequest request = new ISORequest(msg);
        isoMux.queue(request);

        ISOMsg response = request.getResponse(40000);
        assertNotNull(response);

        System.out.println("response messge");
        response.setPackager(new TelePackager());
        System.out.println("msg recv : " + new String(response.pack()));

    }

    @Test
    public void testInquiry() throws Exception {
        Instant sekarang = Instant.now();

        ISOMsg msg = createInquiryRequest("rehmon");
        ISORequest request = new ISORequest(msg);
        isoMux.queue(request);

        ISOMsg response = request.getResponse(40000);
        assertNotNull(response);

        System.out.println("response messge");
        response.setPackager(new TelePackager());
        System.out.println("msg recv : " + new String(response.pack()));

    }

    private ISOMsg createSignOnRequest(Instant sekarang) throws ISOException {
        ISOPackager packager = new TelePackager();

        String bit11 = formatterBit11.format(sekarang)
                .concat(StringUtils.leftPad(random10Digit().toString(), 6, "0"));
        System.out.println("Bit11 " + bit11);

        ISOMsg msg = new ISOMsg();
        msg.setMTI("2800");
        msg.set(7, formatterBit7.format(sekarang));
        msg.set(11, bit11);
        msg.set(33, "1234577");
        msg.set(70, "001");

        msg.setPackager(packager);
        System.out.println("msg send : " + new String(msg.pack()));
        System.out.println("queue msg sending");
        return msg;
    }

    private ISOMsg createInquiryRequest(String username) throws ISOException {
        ISOPackager packager = new TelePackager();

        String bit11 = formatterBit11.format(Instant.now())
                .concat(StringUtils.leftPad(random10Digit().toString(), 6, "0"));
        System.out.println("Bit11 " + bit11);

        ISOMsg msg = new ISOMsg();
        msg.setMTI("2100");
        msg.set(7, formatterBit7.format(Instant.now()));
        msg.set(11, bit11);
        msg.set(18, "6012");
        msg.set(33, "1234567");
        msg.set(41, "54FAA005");
        msg.set(48, "523030487642");

        msg.setPackager(packager);
        System.out.println("msg send : " + new String(msg.pack()));
        System.out.println("queue msg sending");
        return msg;
    }
}