All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hps.integrator.entities.HpsTransaction Maven / Gradle / Ivy

package com.hps.integrator.entities;

import com.hps.integrator.infrastructure.Element;
import com.hps.integrator.infrastructure.ElementTree;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * The HPS transaction.
 */
public class HpsTransaction {
    private HpsTransactionHeader mHeader;
    private int mTransactionID;
    private String mResponseCode;
    private String mResponseText;
    private String mReferenceNumber;
    private String mClientTransactionId;

    public HpsTransaction() {}

    public HpsTransaction(HpsTransactionHeader header) {
        mHeader = header;
    }

    protected HpsTransactionHeader getHeader() {
        return mHeader;
    }

    protected void setHeader(HpsTransactionHeader header) {
        mHeader = header;
    }

    public int getTransactionID() {
        return mTransactionID;
    }

    public void setTransactionID(int transactionID) {
        this.mTransactionID = transactionID;
    }

    public String getResponseCode() {
        return mResponseCode;
    }

    public void setResponseCode(String responseCode) {
        this.mResponseCode = responseCode;
    }

    public String getResponseText() {
        return mResponseText;
    }

    public void setResponseText(String responseText) {
        this.mResponseText = responseText;
    }

    public String getReferenceNumber() {
        return mReferenceNumber;
    }

    public void setReferenceNumber(String referenceNumber) {
        this.mReferenceNumber = referenceNumber;
    }

    public String getClientTransactionId() {
        return mClientTransactionId;
    }

    public void setClientTransactionId(String clientTransactionId) {
        this.mClientTransactionId = clientTransactionId;
    }

    public static String transactionTypeToServiceName(HpsTransactionType transactionType) {
        switch (transactionType) {
            case Authorize:
                return "CreditAuth";
            case Capture:
                return "CreditAddToBatch";
            case Charge:
                return "CreditSale";
            case Refund:
                return "CreditReturn";
            case Reverse:
                return "CreditReversal";
            case Verify:
                return "CreditAccountVerify";
            case List:
                return "ReportActivity";
            case Get:
                return "ReportTxnDetail";
            case Void:
                return "CreditVoid";
            case BatchClose:
                return "BatchClose";
            case SecurityError:
                return "SecurityError";
            default:
                return "";
        }
    }

    public static HpsTransactionType serviceNameToTransactionType(String serviceName) {
        if (serviceName.equals("CreditAddToBatch")) {
            return HpsTransactionType.Capture;
        } else if (serviceName.equals("CreditSale")) {
            return HpsTransactionType.Charge;
        } else if (serviceName.equals("CreditReturn")) {
            return HpsTransactionType.Refund;
        } else if (serviceName.equals("CreditReversal")) {
            return HpsTransactionType.Reverse;
        } else if (serviceName.equals("CreditAuth")) {
            return HpsTransactionType.Authorize;
        } else if (serviceName.equals("CreditAccountVerify")) {
            return HpsTransactionType.Verify;
        } else if (serviceName.equals("ReportActivity")) {
            return HpsTransactionType.List;
        } else if (serviceName.equals("ReportTxnDetail")) {
            return HpsTransactionType.Get;
        } else if (serviceName.equals("CreditVoid")) {
            return HpsTransactionType.Void;
        } else if (serviceName.equals("BatchClose")) {
            return HpsTransactionType.BatchClose;
        } else if (serviceName.equals("SecurityError")) {
            return HpsTransactionType.SecurityError;
        } else {
            return null;
        }
    }

    public HpsTransaction fromElementTree(ElementTree rsp){
        Element header = rsp.get("Header");
        Date date = null;
        if(header.has("RspDt")) {
            try {
                date = new SimpleDateFormat("YYmmddTHHMMSS").parse(header.getString("RspDt"));
            } catch(ParseException e) { date = null; }
        }

        String clientTransactionId = null;
        if(header.has("ClientTxnId"))
            clientTransactionId = header.getString("ClientTxnId");

        this.setHeader(new HpsTransactionHeader(
                header.getInt("GatewayRspCode"),
                header.getString("GatewayRspMsg"),
                date,
                clientTransactionId
        ));

        this.setTransactionID(header.getInt("GatewayTxnId"));
        this.setClientTransactionId(clientTransactionId);

        Element item = rsp.get("Transaction").firstChild();
        if(item != null) {
            if(item.has("RspCode"))
                this.setResponseCode(item.getString("RspCode"));
            if(item.has("RspText"))
                this.setResponseText(item.getString("RspText"));
            if(item.has("RefNbr"))
                this.setReferenceNumber(item.getString("RefNbr"));
        }

        return this;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy