// Path: src/main/java/com/payu/sdk/model/PaymentMethod.java
// @Deprecated
// public enum PaymentMethod {
// 
// 	VISA(PaymentMethodType.CREDIT_CARD),
// 
// 	AMEX(PaymentMethodType.CREDIT_CARD),
// 	
// 	HIPERCARD(PaymentMethodType.CREDIT_CARD),
// 
// 	DINERS(PaymentMethodType.CREDIT_CARD),
// 
// 	MASTERCARD(PaymentMethodType.CREDIT_CARD),
// 
// 	DISCOVER(PaymentMethodType.CREDIT_CARD),
// 
// 	ELO(PaymentMethodType.CREDIT_CARD),
// 
// 	SHOPPING(PaymentMethodType.CREDIT_CARD),
// 
// 	NARANJA(PaymentMethodType.CREDIT_CARD),
// 
// 	CABAL(PaymentMethodType.CREDIT_CARD),
// 
// 	ARGENCARD(PaymentMethodType.CREDIT_CARD),
// 
// 	PRESTO(PaymentMethodType.CREDIT_CARD),
// 
// 	RIPLEY(PaymentMethodType.CREDIT_CARD),
// 
// 	CODENSA(PaymentMethodType.CREDIT_CARD),
// 
// 	PSE(PaymentMethodType.PSE),
// 
// 	BALOTO(PaymentMethodType.CASH),
// 
// 	EFECTY(PaymentMethodType.CASH),
// 
// 	BCP(PaymentMethodType.REFERENCED),
// 
// 	SEVEN_ELEVEN(PaymentMethodType.CASH),
// 
// 	OXXO(PaymentMethodType.CASH),
// 
// 	BOLETO_BANCARIO(PaymentMethodType.CASH),
// 
// 	RAPIPAGO(PaymentMethodType.CASH),
// 
// 	PAGOFACIL(PaymentMethodType.CASH),
// 
// 	BAPRO(PaymentMethodType.CASH),
// 
// 	COBRO_EXPRESS(PaymentMethodType.CASH),
// 
// 	SERVIPAG(PaymentMethodType.CASH),
// 
// 	SENCILLITO(PaymentMethodType.CASH),
// 
// 	BAJIO(PaymentMethodType.REFERENCED),
// 
// 	BANAMEX(PaymentMethodType.REFERENCED),
// 
// 	BANCOMER(PaymentMethodType.REFERENCED),
// 
// 	HSBC(PaymentMethodType.REFERENCED),
// 
// 	IXE(PaymentMethodType.REFERENCED),
// 
// 	SANTANDER(PaymentMethodType.REFERENCED),
// 
// 	SCOTIABANK(PaymentMethodType.REFERENCED),
// 
// 	BANK_REFERENCED(PaymentMethodType.BANK_REFERENCED);
// 
// 	/**
// 	 * Default constructor
// 	 *
// 	 * @param type
// 	 *            the payment method type
// 	 */
// 	private PaymentMethod(PaymentMethodType type) {
// 		this.type = type;
// 	}
// 
// 	/**
// 	 * The type of the payment method.
// 	 */
// 	private PaymentMethodType type;
// 
// 	/**
// 	 * <p>
// 	 * Return a PaymentMethodMain Object from the String.<br>
// 	 * Ex. PaymentMethodMain.fromString("visa") return PaymentMethodMain.VISA
// 	 * Ex. PaymentMethodMain.fromString("VISA") return PaymentMethodMain.VISA
// 	 * Ex. PaymentMethodMain.fromString("XX") return null
// 	 * </p>
// 	 *
// 	 * @param paymentMethodMain
// 	 * @return
// 	 */
// 	public static PaymentMethod fromString(String paymentMethod) {
// 		if (paymentMethod != null) {
// 			for (PaymentMethod pmm : PaymentMethod.values()) {
// 				if (paymentMethod.equalsIgnoreCase(pmm.toString())) {
// 					return pmm;
// 				}
// 			}
// 		}
// 		return null;
// 	}
// 
// 	/**
// 	 * Filters the payments methods list by type.
// 	 *
// 	 * @param type
// 	 *            , the filter type.
// 	 * @return the list of the payments method given type.
// 	 */
// 	public static List<PaymentMethod> getPaymentMethods(PaymentMethodType type) {
// 		List<PaymentMethod> paymentsMethod = new ArrayList<PaymentMethod>();
// 		PaymentMethod[] values = PaymentMethod.values();
// 		for (int i = 0; i < values.length; i++) {
// 			if (values[i].getType() == type) {
// 				paymentsMethod.add(values[i]);
// 			}
// 		}
// 		return paymentsMethod;
// 	}
// 
// 	/**
// 	 * Returns the type of the payment method.
// 	 *
// 	 * @return the type of the payment method.
// 	 */
// 	public PaymentMethodType getType() {
// 		return type;
// 	}
// 
// }


import java.util.Set;
import com.payu.sdk.constants.Constants;
import com.payu.sdk.exceptions.InvalidParametersException;
import com.payu.sdk.model.AdditionalValue;
import com.payu.sdk.model.Currency;
import com.payu.sdk.model.PaymentMethod;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
	 *
	 * @param enumClass The enum class
	 * @param parameters
	 *            The parameters to be sent to the server
	 * @param paramName
	 *            the parameter to get
	 * @return The Enum value parameter it got
	 * @throws InvalidParametersException
	 */
	public static <E extends Enum<E>> E getEnumValueParameter(
			Class<E> enumClass, Map<String, String> parameters, String paramName)
			throws InvalidParametersException {
		String parameter = getParameter(parameters, paramName);

		E enumValueParameter = (parameter != null ? getEnumValue(enumClass,
				parameter) : null);

		return enumValueParameter;
	}

	/**
	 * Gets the PaymentMethod value parameter from the parameters map.
	 * If the parameter is null or does not belong to the enumeration returns null
	 * @param parameters The parameters to be sent to the server
	 * @param paramName  the parameter to get
	 * @return the PaymentMethod value or null
	 * @deprecated Not for public use in the future because the class PaymentMethod is deprecated
	 * @see #com.payu.sdk.PayUPayments.getPaymentMethodParameter(Map<String, String> parameters, String paramName)
	 */
	@Deprecated
// Path: src/main/java/com/payu/sdk/model/PaymentMethod.java
// @Deprecated
// public enum PaymentMethod {
// 
// 	VISA(PaymentMethodType.CREDIT_CARD),
// 
// 	AMEX(PaymentMethodType.CREDIT_CARD),
// 	
// 	HIPERCARD(PaymentMethodType.CREDIT_CARD),
// 
// 	DINERS(PaymentMethodType.CREDIT_CARD),
// 
// 	MASTERCARD(PaymentMethodType.CREDIT_CARD),
// 
// 	DISCOVER(PaymentMethodType.CREDIT_CARD),
// 
// 	ELO(PaymentMethodType.CREDIT_CARD),
// 
// 	SHOPPING(PaymentMethodType.CREDIT_CARD),
// 
// 	NARANJA(PaymentMethodType.CREDIT_CARD),
// 
// 	CABAL(PaymentMethodType.CREDIT_CARD),
// 
// 	ARGENCARD(PaymentMethodType.CREDIT_CARD),
// 
// 	PRESTO(PaymentMethodType.CREDIT_CARD),
// 
// 	RIPLEY(PaymentMethodType.CREDIT_CARD),
// 
// 	CODENSA(PaymentMethodType.CREDIT_CARD),
// 
// 	PSE(PaymentMethodType.PSE),
// 
// 	BALOTO(PaymentMethodType.CASH),
// 
// 	EFECTY(PaymentMethodType.CASH),
// 
// 	BCP(PaymentMethodType.REFERENCED),
// 
// 	SEVEN_ELEVEN(PaymentMethodType.CASH),
// 
// 	OXXO(PaymentMethodType.CASH),
// 
// 	BOLETO_BANCARIO(PaymentMethodType.CASH),
// 
// 	RAPIPAGO(PaymentMethodType.CASH),
// 
// 	PAGOFACIL(PaymentMethodType.CASH),
// 
// 	BAPRO(PaymentMethodType.CASH),
// 
// 	COBRO_EXPRESS(PaymentMethodType.CASH),
// 
// 	SERVIPAG(PaymentMethodType.CASH),
// 
// 	SENCILLITO(PaymentMethodType.CASH),
// 
// 	BAJIO(PaymentMethodType.REFERENCED),
// 
// 	BANAMEX(PaymentMethodType.REFERENCED),
// 
// 	BANCOMER(PaymentMethodType.REFERENCED),
// 
// 	HSBC(PaymentMethodType.REFERENCED),
// 
// 	IXE(PaymentMethodType.REFERENCED),
// 
// 	SANTANDER(PaymentMethodType.REFERENCED),
// 
// 	SCOTIABANK(PaymentMethodType.REFERENCED),
// 
// 	BANK_REFERENCED(PaymentMethodType.BANK_REFERENCED);
// 
// 	/**
// 	 * Default constructor
// 	 *
// 	 * @param type
// 	 *            the payment method type
// 	 */
// 	private PaymentMethod(PaymentMethodType type) {
// 		this.type = type;
// 	}
// 
// 	/**
// 	 * The type of the payment method.
// 	 */
// 	private PaymentMethodType type;
// 
// 	/**
// 	 * <p>
// 	 * Return a PaymentMethodMain Object from the String.<br>
// 	 * Ex. PaymentMethodMain.fromString("visa") return PaymentMethodMain.VISA
// 	 * Ex. PaymentMethodMain.fromString("VISA") return PaymentMethodMain.VISA
// 	 * Ex. PaymentMethodMain.fromString("XX") return null
// 	 * </p>
// 	 *
// 	 * @param paymentMethodMain
// 	 * @return
// 	 */
// 	public static PaymentMethod fromString(String paymentMethod) {
// 		if (paymentMethod != null) {
// 			for (PaymentMethod pmm : PaymentMethod.values()) {
// 				if (paymentMethod.equalsIgnoreCase(pmm.toString())) {
// 					return pmm;
// 				}
// 			}
// 		}
// 		return null;
// 	}
// 
// 	/**
// 	 * Filters the payments methods list by type.
// 	 *
// 	 * @param type
// 	 *            , the filter type.
// 	 * @return the list of the payments method given type.
// 	 */
// 	public static List<PaymentMethod> getPaymentMethods(PaymentMethodType type) {
// 		List<PaymentMethod> paymentsMethod = new ArrayList<PaymentMethod>();
// 		PaymentMethod[] values = PaymentMethod.values();
// 		for (int i = 0; i < values.length; i++) {
// 			if (values[i].getType() == type) {
// 				paymentsMethod.add(values[i]);
// 			}
// 		}
// 		return paymentsMethod;
// 	}
// 
// 	/**
// 	 * Returns the type of the payment method.
// 	 *
// 	 * @return the type of the payment method.
// 	 */
// 	public PaymentMethodType getType() {
// 		return type;
// 	}
// 
// }


// Path: src/main/java/com/payu/sdk/utils/CommonRequestUtil.java
import java.util.Set;
import com.payu.sdk.constants.Constants;
import com.payu.sdk.exceptions.InvalidParametersException;
import com.payu.sdk.model.AdditionalValue;
import com.payu.sdk.model.Currency;
import com.payu.sdk.model.PaymentMethod;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

	 *
	 * @param enumClass The enum class
	 * @param parameters
	 *            The parameters to be sent to the server
	 * @param paramName
	 *            the parameter to get
	 * @return The Enum value parameter it got
	 * @throws InvalidParametersException
	 */
	public static <E extends Enum<E>> E getEnumValueParameter(
			Class<E> enumClass, Map<String, String> parameters, String paramName)
			throws InvalidParametersException {
		String parameter = getParameter(parameters, paramName);

		E enumValueParameter = (parameter != null ? getEnumValue(enumClass,
				parameter) : null);

		return enumValueParameter;
	}

	/**
	 * Gets the PaymentMethod value parameter from the parameters map.
	 * If the parameter is null or does not belong to the enumeration returns null
	 * @param parameters The parameters to be sent to the server
	 * @param paramName  the parameter to get
	 * @return the PaymentMethod value or null
	 * @deprecated Not for public use in the future because the class PaymentMethod is deprecated
	 * @see #com.payu.sdk.PayUPayments.getPaymentMethodParameter(Map<String, String> parameters, String paramName)
	 */
	@Deprecated
	public static PaymentMethod getPaymentMethodParameter(Map<String, String> parameters, String paramName){