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

com.global.api.terminals.upa.responses.UpaTransactionResponse Maven / Gradle / Ivy

package com.global.api.terminals.upa.responses;

import com.global.api.entities.enums.ApplicationCryptogramType;
import com.global.api.entities.enums.CardType;
import com.global.api.terminals.TerminalResponse;
import com.global.api.utils.JsonDoc;

import java.util.Locale;

public class UpaTransactionResponse extends TerminalResponse {
    public UpaTransactionResponse(JsonDoc responseData) {
        JsonDoc cmdResult = responseData.get("cmdResult");

        if (cmdResult != null) {
            status = cmdResult.getString("result");
            deviceResponseCode = status.equalsIgnoreCase("success") ? "00" : cmdResult.getString("errorCode");
            deviceResponseText = cmdResult.getString("errorMessage");
        }

        transactionType = responseData.getString("response");

        JsonDoc data = responseData.get("data");

        if (data != null) {
            JsonDoc host = data.get("host");

            if (host != null) {
                amountDue = host.getDecimal("balanceDue");
                approvalCode = host.getString("approvalCode");
                avsResponseCode = host.getString("AvsResultCode");
                avsResponseText = host.getString("AvsResultText");
                balanceAmount = host.getDecimal("availableBalance");
                cardBrandTransactionId = host.getString("cardBrandTransId");
                responseCode = host.getString("responseCode");
                responseText = host.getString("responseText");
                merchantFee = host.getDecimal("surcharge");
                terminalRefNumber = host.getString("tranNo");
                token = host.getString("tokenValue");
                transactionId = host.getString("referenceNumber");
                transactionAmount = host.getDecimal("totalAmount");
            }

            JsonDoc payment = data.get("payment");

            if (payment != null) { // is null on decline response
                cardHolderName = payment.getString("cardHolderName");

                if (payment.getString("cardType") != null) {
                    switch (payment.getString("cardType").toUpperCase(Locale.ENGLISH)) {
                        case "VISA":
                            cardType = CardType.VISA;
                            break;
                        case "MASTERCARD":
                            cardType = CardType.MC;
                            break;
                        case "DISCOVER":
                            cardType = CardType.DISC;
                            break;
                        case "AMERICAN EXPRESS":
                            cardType = CardType.AMEX;
                            break;
                        default:
                            break;
                    }
                }

                entryMethod = payment.getString("cardAcquisition");
                maskedCardNumber = payment.getString("maskedPan");
                paymentType = payment.getString("cardGroup");
            }

            JsonDoc transaction = data.get("transaction");

            if (transaction != null) {

                if (transaction.getDecimal("totalAmount") != null) {
                    transactionAmount = transaction.getDecimal("totalAmount");
                }

                if (transaction.getDecimal("tipAmount") != null) {
                    tipAmount = transaction.getDecimal("tipAmount");
                }
            }

            JsonDoc emv = data.get("emv");

            if (emv != null) {
                applicationCryptogram = emv.getString("9F26");

                if (emv.getString("9F27") != null) {
                    switch (emv.getString("9F27")) {
                        case "0":
                            applicationCryptogramType = ApplicationCryptogramType.AAC;
                            break;
                        case "40":
                            applicationCryptogramType = ApplicationCryptogramType.TC;
                            break;
                        case "80":
                            applicationCryptogramType = ApplicationCryptogramType.ARQC;
                            break;
                        default:
                            break;
                    }
                }

                applicationId = emv.getString("9F06");
                applicationLabel = emv.getString("50");
                applicationPreferredName = emv.getString("9F12");
            }

            JsonDoc pan = data.get("PAN");

            if (pan != null) {
                unmaskedCardNumber = pan.getString("clearPAN");
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy