PaymentType.java
package sk.iway.iwcm.ebanking.epayments;
import static sk.iway.iwcm.ebanking.Bank.CSOB;
import static sk.iway.iwcm.ebanking.Bank.DEXIA;
import static sk.iway.iwcm.ebanking.Bank.OTP_BANKA;
import static sk.iway.iwcm.ebanking.Bank.POSTOVA_BANKA;
import static sk.iway.iwcm.ebanking.Bank.SLOVENSKA_SPORITELNA;
import static sk.iway.iwcm.ebanking.Bank.TATRA_BANKA;
import static sk.iway.iwcm.ebanking.Bank.UNI_CREDIT;
import static sk.iway.iwcm.ebanking.Bank.VUB;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import sk.iway.cloud.payments.pay24.Pay24MerchantAccountBean;
import sk.iway.cloud.payments.paypal.PayPalExpressCheckoutMerchantAccountBean;
import sk.iway.cloud.payments.paypal.PayPalMerchantAccountBean;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.InitServlet;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.database.JpaDB;
import sk.iway.iwcm.ebanking.Bank;
import sk.iway.iwcm.system.ConfDB;
import sk.iway.iwcm.system.ConfDetails;
/**
* Banky.java
*
*@Title webjet4_repair
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2009
*@author $Author: jraska $
*@version $Revision: 1.6 $
*@created Date: 24.8.2009 13:03:51
*@modified $Date: 2009/12/11 14:51:53 $
*/
public enum PaymentType
{
VUB_E_PLATBY("basketPaymentVubEplatbyMid", "basketPaymentVubEplatbyKey")
{
@Override
public String toBasketString(){ return "vubEplatby"; }
@Override
public String toString(){ return "VUB E-Platby"; }
},
TATRA_PAY("basketPaymentTatraPayMid", "basketPaymentTatraPayKey","basketPaymentTatraPayAllowed")
{
@Override
public String toBasketString(){ return "tatraPay"; }
@Override
public String toString(){ return "TatraPay"; }
@Override
public boolean isConfigured()
{
return super.isConfigured() && Constants.getBoolean("basketPaymentTatraPayAllowed");
}
},
CARD_PAY("basketPaymentTatraPayMid","basketPaymentTatraPayKey","basketPaymentCardPayAllowed")
{
@Override
public String toBasketString(){ return "cardPay"; }
@Override
public String toString(){ return "CardPay"; }
@Override
public boolean isConfigured()
{
return super.isConfigured() && Constants.getBoolean("basketPaymentCardPayAllowed");
}
@Override
public String getEditorName()
{
return TATRA_PAY.getEditorName();
}
},
POST_BANK("basketPaymentPostBankMid")
{
@Override
public String toBasketString(){ return "postBank"; }
@Override
public String toString(){ return "Poštová banka"; }
},
SPORO_PAY("basketPaymentSporoPayAccount", "basketPaymentSporoPayAccountPrefix", "basketPaymentSporoPayKey")
{
@Override
public String toBasketString(){ return "sporoPay"; }
@Override
public String toString(){ return "SporoPay"; }
},
UNI_PLATBA("basketPaymentUniPlatbaMid", "basketPaymentUniPlatbaKey")
{
@Override
public String toBasketString(){ return "uniPlatba"; }
@Override
public String toString(){ return "UniPlatba"; }
},
DEXIA_PAY("basketPaymentDexiaPayMid", "basketPaymentDexiaPayKey")
{
@Override
public String toBasketString(){ return "dexiaPay"; }
@Override
public String toString(){ return "DexiaPay"; }
},
OTP_BANK("basketPaymentOtpKey", "basketPaymentOtpMid")
{
@Override
public String toBasketString(){ return "otpBank"; }
@Override
public String toString(){ return "OtpBank"; }
},
CSOB_TLACITKO("basketPaymentCSOBMid")
{
@Override
public String toBasketString(){ return "csobTlacitko"; }
@Override
public String toString(){ return "ČSOB Platobné Tlačítko"; }
},
PAYPAL("payPalUser","payPalPwd","payPalSignature")
{
@Override
public String toBasketString(){ return "paypal"; }
@Override
public String toString(){ return "PayPal"; }
},
PAYPAL_EXPRESS_CHECKOUT("PayPalExChClientId","PayPalExChSecret")
{
@Override
public String toBasketString(){ return "PayPalExCh"; }
@Override
public String toString(){ return "PayPalExCh"; }
@Override
public String getEditorName()
{
return "paypal_express_checkout";
}
},
PAY24("24pay_Key","24pay_IV")
{
@Override
public String toBasketString(){ return "24pay"; }
@Override
public String toString(){ return "24pay"; }
@Override
public boolean isConfigured()
{
if("cloud".equals(Constants.getInstallName()))
{
Pay24MerchantAccountBean merchant = new JpaDB<Pay24MerchantAccountBean>(Pay24MerchantAccountBean.class).findFirst("domainId", CloudToolsForCore.getDomainId());
if(merchant == null || Tools.isAnyEmpty(merchant.getEshopId(), merchant.getKey(), merchant.getMid()))
return false;
return true;
}
else
{
return Tools.isNotEmpty(Constants.getString("24payKey")) && Tools.isNotEmpty(Constants.getString("24payMid")) && Tools.isNotEmpty(Constants.getString("24payEshopId"));
}
}
},
GOPAY("gopay_ID","gopay_secret")
{
@Override
public String toBasketString(){ return "gopay"; }
@Override
public String toString(){ return "gopay"; }
@Override
public boolean isConfigured()
{
return Tools.isNotEmpty(Constants.getString("gopayClientId")) && Tools.isNotEmpty(Constants.getString("gopayClientSecret")) && Tools.isNotEmpty(Constants.getString("gopayUrl")) && Tools.isNotEmpty(Constants.getString("gopayGoId"));
}
};
List<String> requiredConstants;
private PaymentType(String... requiredConstants)
{
this.requiredConstants = Collections.unmodifiableList(Arrays.asList(requiredConstants));
}
/**
* Vrati retazec, ktorym je typ platby oznacovany v parametroch komponenty Basket.
* @return
*/
public abstract String toBasketString();
public static Bank getBanka(PaymentType type)
{
switch (type)
{
case SPORO_PAY : return SLOVENSKA_SPORITELNA;
case VUB_E_PLATBY : return VUB;
case TATRA_PAY :
case CARD_PAY : return TATRA_BANKA;
case UNI_PLATBA : return UNI_CREDIT;
case POST_BANK : return POSTOVA_BANKA;
case DEXIA_PAY : return DEXIA;
case OTP_BANK : return OTP_BANKA;
case CSOB_TLACITKO : return CSOB;
case GOPAY :
default : return TATRA_BANKA;
}
}
public Bank getBanka()
{
return getBanka(this);
}
public String getEditorName()
{
return toBasketString();
}
public boolean isConfigured()
{
if("cloud".equals(Constants.getInstallName())==false)
{
for (String key : requiredConstants)
if (!Constants.containsKey(key) || Tools.isEmpty(Constants.getString(key)))
return false;
}
else
{
if(this.equals(PAYPAL))
{
PayPalMerchantAccountBean merchant = new JpaDB<PayPalMerchantAccountBean>(PayPalMerchantAccountBean.class).findFirst("domainId", CloudToolsForCore.getDomainId());
if(merchant == null) return false;
}
if(this.equals(PAY24))
{
Pay24MerchantAccountBean merchant = new JpaDB<Pay24MerchantAccountBean>(Pay24MerchantAccountBean.class).findFirst("domainId", CloudToolsForCore.getDomainId());
if(merchant == null || Tools.isAnyEmpty(merchant.getEshopId(), merchant.getKey(), merchant.getMid()))
return false;
}
if(this.equals(PAYPAL_EXPRESS_CHECKOUT))
{
if(InitServlet.isTypeCloud())
{
PayPalExpressCheckoutMerchantAccountBean merchant = new JpaDB<PayPalExpressCheckoutMerchantAccountBean>(PayPalExpressCheckoutMerchantAccountBean.class).findFirst("domainId", CloudToolsForCore.getDomainId());
return merchant != null && Tools.isNotEmpty(merchant.getSecret()) && Tools.isNotEmpty(merchant.getClientId());
}
else
{
ConfDetails cd = ConfDB.getVariable("PayPalExChClientId");
ConfDetails cd2 = ConfDB.getVariable("PayPalExChSecret");
return cd != null && cd2 != null && !Tools.isAnyEmpty(cd.getValue(), cd2.getValue());
}
}
}
return true;
}
public static PaymentType getPaymentTypeFromBasketString(String basketString)
{
PaymentType[] paymentTypes = PaymentType.values();
for(int i=0;i<paymentTypes.length;i++)
{
if(basketString.equals(paymentTypes[i].toBasketString()))
return paymentTypes[i];
}
throw new IllegalArgumentException("Retazec '"+basketString+"' sa neda skonvertovat na PaymentType!!!");
}
}