Java tutorial
/* * * Copyright 2014 Citrus Payment Solutions Pvt. Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * / */ package com.citrus.sdk.payment; import android.text.TextUtils; import com.citrus.sdk.classes.PGHealth; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.ArrayList; import java.util.HashSet; import java.util.Map; import java.util.Set; import static com.citrus.sdk.payment.CardOption.CardScheme; /** * Created by salil on 12/5/15. */ public class MerchantPaymentOption { private Set<CardOption.CardScheme> creditCardSchemeSet = null; private Set<CardOption.CardScheme> debitCardSchemeSet = null; private ArrayList<NetbankingOption> netbankingOptionList = null; private MerchantPaymentOption(Set<CardScheme> creditCardSchemeSet, Set<CardScheme> debitCardSchemeSet, ArrayList<NetbankingOption> netbankingOptionList) { this.creditCardSchemeSet = creditCardSchemeSet; this.debitCardSchemeSet = debitCardSchemeSet; this.netbankingOptionList = netbankingOptionList; } public Set<CardScheme> getCreditCardSchemeSet() { return creditCardSchemeSet; } public Set<CardScheme> getDebitCardSchemeSet() { return debitCardSchemeSet; } public ArrayList<NetbankingOption> getNetbankingOptionList() { return netbankingOptionList; } public static MerchantPaymentOption getMerchantPaymentOptions(JsonObject merchantPaymentOptionsObj) { return getMerchantPaymentOptions(merchantPaymentOptionsObj, null); } public static MerchantPaymentOption getMerchantPaymentOptions(JsonObject merchantPaymentOptionsObj, Map<String, PGHealth> pgHealthMap) { MerchantPaymentOption merchantPaymentOption; Set<CardScheme> debitCardSchemeSet = null; Set<CardScheme> creditCardSchemeSet = null; ArrayList<NetbankingOption> netbankingOptionList = null; JsonArray bankArray = merchantPaymentOptionsObj.getAsJsonArray("netBanking"); JsonArray creditCardArray = merchantPaymentOptionsObj.getAsJsonArray("creditCard"); JsonArray debitCardArray = merchantPaymentOptionsObj.getAsJsonArray("debitCard"); int size = -1; // Parse credit card scheme size = creditCardArray.size(); for (int i = 0; i < size; i++) { JsonElement element = creditCardArray.get(i); String cardScheme = element.getAsString(); if (creditCardSchemeSet == null) { creditCardSchemeSet = new HashSet<>(); } creditCardSchemeSet.add(getCardScheme(cardScheme)); } // Parse debit card scheme size = debitCardArray.size(); for (int i = 0; i < size; i++) { JsonElement element = debitCardArray.get(i); String cardScheme = element.getAsString(); if (debitCardSchemeSet == null) { debitCardSchemeSet = new HashSet<>(); } debitCardSchemeSet.add(getCardScheme(cardScheme)); } // Parse netbanking options size = bankArray.size(); for (int i = 0; i < size; i++) { JsonElement element = bankArray.get(i); if (element.isJsonObject()) { JsonObject bankOption = element.getAsJsonObject(); element = bankOption.get("bankName"); String bankName = element.getAsString(); element = bankOption.get("issuerCode"); String issuerCode = element.getAsString(); if (!TextUtils.isEmpty(bankName) && !TextUtils.isEmpty(issuerCode)) { NetbankingOption netbankingOption = new NetbankingOption(bankName, issuerCode); if (pgHealthMap != null) { netbankingOption.setPgHealth(pgHealthMap.get(issuerCode)); } if (netbankingOptionList == null) { netbankingOptionList = new ArrayList<>(); } netbankingOptionList.add(netbankingOption); } } } merchantPaymentOption = new MerchantPaymentOption(creditCardSchemeSet, debitCardSchemeSet, netbankingOptionList); return merchantPaymentOption; } private static CardScheme getCardScheme(String cardScheme) { if ("Visa".equalsIgnoreCase(cardScheme)) { return CardScheme.VISA; } else if ("Master Card".equalsIgnoreCase(cardScheme)) { return CardScheme.MASTER_CARD; } else if ("Amex".equalsIgnoreCase(cardScheme)) { return CardScheme.AMEX; } else { return null; } } @Override public String toString() { return "MerchantPaymentOption{" + "creditCardSchemeSet=" + creditCardSchemeSet + ", debitCardSchemeSet=" + debitCardSchemeSet + ", netbankingOptionList=" + netbankingOptionList + '}'; } }