com.salesmanager.core.util.PaymentUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.salesmanager.core.util.PaymentUtil.java

Source

/*
 * Licensed to csti consulting 
 * You may obtain a copy of the License at
 *
 * http://www.csticonsulting.com
 * Copyright (c) 2006-Aug 24, 2010 Consultation CS-TI inc. 
 *
 * 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.salesmanager.core.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import com.salesmanager.core.constants.PaymentConstants;
import com.salesmanager.core.entity.merchant.MerchantConfiguration;
import com.salesmanager.core.entity.payment.PaymentMethod;
import com.salesmanager.core.entity.reference.CoreModuleService;
import com.salesmanager.core.entity.reference.CountryDescription;
import com.salesmanager.core.service.ServiceFactory;
import com.salesmanager.core.service.common.model.IntegrationProperties;
import com.salesmanager.core.service.merchant.ConfigurationRequest;
import com.salesmanager.core.service.merchant.ConfigurationResponse;
import com.salesmanager.core.service.merchant.MerchantService;
import com.salesmanager.core.service.payment.PaymentService;
import com.salesmanager.core.service.reference.ReferenceService;

public class PaymentUtil {

    private static Logger log = Logger.getLogger(PaymentUtil.class);

    public static boolean isPaymentModuleCreditCardType(String paymentModule) throws Exception {

        PaymentService paymentService = (PaymentService) ServiceFactory.getService(ServiceFactory.PaymentService);

        List payments = paymentService.getPaymentMethods();

        if (payments != null) {
            Iterator i = payments.iterator();
            while (i.hasNext()) {
                CoreModuleService cms = (CoreModuleService) i.next();
                if (cms.getCoreModuleName().equals(paymentModule)) {
                    if (cms.getCoreModuleServiceCode() == 2 && cms.getCoreModuleServiceSubtype() == 1) {
                        return true;
                    }
                }
            }
        }

        return false;
    }

    public static Map<String, PaymentMethod> getPaymentMethods(int merchantId, Locale locale) throws Exception {

        Map payments = new HashMap();

        ResourceBundle bundle = ResourceBundle.getBundle("modules", locale);
        if (bundle == null) {
            log.error("Cannot load ResourceBundle checkout.properties");
        }

        ReferenceService rservice = (ReferenceService) ServiceFactory.getService(ServiceFactory.ReferenceService);

        CountryDescription countryDescription = CountryUtil.getCountryByIsoCode(locale.getCountry(), locale);

        Map modules = new HashMap();

        if (countryDescription != null) {
            modules = rservice.getPaymentMethodsMap(countryDescription.getId().getCountryId());
        }

        ConfigurationRequest requestvo = new ConfigurationRequest(merchantId, true,
                PaymentConstants.MODULE_PAYMENT);
        MerchantService mservice = (MerchantService) ServiceFactory.getService(ServiceFactory.MerchantService);
        ConfigurationResponse responsevo = mservice.getConfiguration(requestvo);
        List config = responsevo.getMerchantConfigurationList();

        if (config != null) {
            Iterator it = config.iterator();
            while (it.hasNext()) {

                MerchantConfiguration m = (MerchantConfiguration) it.next();

                String key = m.getConfigurationKey();
                if (key.equals(PaymentConstants.MODULE_PAYMENT_INDICATOR_NAME)) {// module
                    // configured

                    // if(m.getConfigurationValue().equals("true")) {

                    PaymentMethod method = null;
                    // try to retreive the module first
                    if (payments.containsKey(m.getConfigurationValue1())) {

                        method = (PaymentMethod) payments.get(m.getConfigurationValue1());

                    } else {

                        method = new PaymentMethod();

                    }

                    if (m.getConfigurationValue() != null && m.getConfigurationValue().equals("true")) {
                        //payments.remove(m
                        //      .getConfigurationValue1());
                        //continue;
                        method.setEnabled(true);
                    }

                    CoreModuleService cms = (CoreModuleService) modules.get(m.getConfigurationValue1());
                    if (cms != null) {
                        method.setPaymentImage(cms.getCoreModuleServiceLogoPath());
                    }

                    method.setPaymentModuleName(m.getConfigurationValue1());
                    if (bundle != null) {
                        try {
                            String label = bundle.getString("module." + m.getConfigurationValue1());
                            if (StringUtils.isBlank(label)) {
                                label = "";
                            }
                            method.setPaymentMethodName(label);
                            String text = bundle.getString("module.paymenttext." + m.getConfigurationValue1());
                            method.setPaymentModuleText(text);
                        } catch (Exception e) {
                        }
                    }
                    if (m.getConfigurationValue() != null && m.getConfigurationValue().equals("true")) {
                        method.setEnabled(true);
                    }

                    payments.put(m.getConfigurationValue1(), method);
                    continue;
                }

                if (key.contains(PaymentConstants.MODULE_PAYMENT_GATEWAY)) {// gateway
                    // module

                    PaymentMethod method = null;
                    // try to retreive the module first
                    if (payments.containsKey(m.getConfigurationModule())) {

                        method = (PaymentMethod) payments.get(m.getConfigurationModule());

                    } else {

                        method = new PaymentMethod();

                    }

                    IntegrationProperties props = null;
                    /** ASSUMING PROPERTIES ARE IN CONFIGURATION_VALUE 2 **/
                    if (!StringUtils.isBlank(m.getConfigurationValue2())) {
                        props = MerchantConfigurationUtil.getIntegrationProperties(m.getConfigurationValue2(), ";");
                    }

                    if (props != null && props.getProperties3() != null && props.getProperties3().equals("2")) {// use
                        // cvv
                        method.addConfig("CVV", "true");

                    }

                    // core_modules_services subtype
                    method.setType(1);
                    payments.put(m.getConfigurationModule(), method);
                    continue;

                }

                if (key.contains(PaymentConstants.MODULE_PAYMENT)) {// single
                    // payment
                    // module

                    PaymentMethod method = null;
                    // try to retreive the module first
                    if (payments.containsKey(m.getConfigurationModule())) {

                        method = (PaymentMethod) payments.get(m.getConfigurationModule());

                    } else {

                        method = new PaymentMethod();

                    }

                    // core_modules_services subtype
                    method.setType(0);
                    method.addConfig("key", m.getConfigurationValue());
                    method.addConfig("key1", m.getConfigurationValue1());
                    method.addConfig("key2", m.getConfigurationValue2());

                    payments.put(m.getConfigurationModule(), method);
                    continue;

                }

            }
        }

        Set entries = payments.keySet();

        Map paymentMethods = new HashMap();

        for (Object o : entries) {
            String key = (String) o;

            PaymentMethod pm = (PaymentMethod) payments.get(key);

            if (pm.isEnabled()) {
                paymentMethods.put(pm.getPaymentModuleName(), pm);
            }
        }

        return paymentMethods;

    }

}