package com.dwidasa.igate.door.ib;

import java.io.IOException;

import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;
import org.apache.log4j.Logger;

import com.dwidasa.igate.json.JSONException;
import com.dwidasa.igate.json.JSONObject;
import com.dwidasa.igate.model.MProcessor;
import com.dwidasa.igate.service.Message;
import com.dwidasa.igate.service.adapter.Processor;
import com.dwidasa.igate.support.MessageHelper;
import com.dwidasa.igate.utility.Constant;
import com.dwidasa.igate.utility.EncriptionUtil;

public class CardlessWithdrawal implements Processor {

	private String mti, ftcd;
	private Logger logger = Logger.getLogger(CardlessWithdrawal.class);


	@Override
	public void setup(MProcessor m) {

		String[] filter = m.getRunFilter().split("\\|");

		this.mti = filter[0].trim();
		this.ftcd = filter[1].trim();

	}

	@Override
	public String getProgram() {
		return getClass().getName();
	}

	@Override
	public boolean isExecute(Message Msg) {
		
		logger.info("mti : "+mti);
		logger.info("ftcd : "+ftcd);

		if (MessageHelper.isNetwork(Msg)) {
			return false;
		}

		if (MessageHelper.isResponse(Msg)) {
			if (!Constant.Success.equals(Msg.trb039) && !Constant.RSPC_TIMEOUT.equals(Msg.trb039)) {
				logger.info("HOHO is execute false :" + Msg.trb037 + " " + Msg.trb039);
				return false;
			}
		}

		if ((mti.indexOf(Constant.Request) != -1) && MessageHelper.isRequest(Msg)) {
			if (ftcd.indexOf(Constant.All) != -1) {
				return true;
			} else if (ftcd.indexOf(Msg.trftcd) != -1) {
				return true;
			}
		} else if ((mti.indexOf(Constant.Response) != -1) && MessageHelper.isResponse(Msg)) {
			if (ftcd.indexOf(Constant.All) != -1) {
				return true;
			} else if (ftcd.indexOf(Msg.trftcd) != -1) {
				return true;
			}
		} else if (mti.indexOf(Msg.trmti) != -1) {
			if (ftcd.indexOf(Constant.All) != -1) {
				return true;
			} else if (ftcd.indexOf(Msg.trftcd) != -1) {
				return true;
			}
		} else if (mti.indexOf(Constant.All) != -1) {
			if (ftcd.indexOf(Constant.All) != -1) {
				return true;
			} else {
				return (ftcd.indexOf(Msg.trftcd) != -1);
			}
		}

		return false;
	}

	@Override
	public Message execute(Message Msg) {
		
		logger.info("execute");
		
		logger.info(Msg.rtstyp);
		
		if(Msg.rtstyp.equals("NT")) {
			if(MessageHelper.isRequest(Msg) || MessageHelper.isReversal(Msg)) {
				logger.info("input json");
				String token=Msg.trb048.substring(15);
				String phoneNumber=Msg.trb048.substring(0,15).trim();
				String nominal="";
				String secretKey="abcdef";
				try {
					String url = "";
					if(MessageHelper.isReversal(Msg)) {
						logger.info("reversal ^^");
						url = "http://172.23.101.200:8081/ib-sulselbar/rest/cashOut/reversalCashOutAtmIgate";
					}else {
						url = "http://172.23.101.200:8081/ib-sulselbar/rest/cashOut/postingCashOutAtmIgate";	
					}
					
					JSONObject json = new JSONObject();
					json.put("nomor_rekening", "");
					json.put("nominal", nominal);
					json.put("token", token);
					json.put("signature", EncriptionUtil.sha1(token+phoneNumber+secretKey));
					json.put("nama", "BSSB");
					json.put("no_referensi", Msg.trb037);
					json.put("phoneNumber", phoneNumber);
					logger.info("request : "+json.toString());
					String response = Request.Post(url)
							.bodyString(json.toString(), ContentType.APPLICATION_JSON).connectTimeout(15000)
							.socketTimeout(15000).execute().returnContent().asString();
					logger.info("RESPONSE " + Msg.trb037 + ": " + response);
					json = new JSONObject(response);
					String responseCode;
					responseCode = json.getString("respon_code");
					Msg.trb039 = responseCode;
					
					if(responseCode.equals("00")) {
						Msg.trb004 = Long.parseLong(json.getString("nominal"))*100;
						Msg.trb102 = json.getString("nomor_rekening");
						Msg.trrspa = Constant.Approve;
						Msg.rtrmod = Constant.Manager;
					}else {
						Msg.trrspa = Constant.Decline;
					}

				} catch (JSONException | IOException e) {
					// TODO Auto-generated catch block
					logger.info("error : "+e);
					Msg.trb039 = "04";					
					Msg.trrspa = Constant.Decline;

				}
			}
		}

		return Msg;		
		
	}
	

}

Add a code snippet to your website: www.paste.org