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

com.commercetools.payment.payone.methods.PayoneCreditCardCreatePaymentMethodProvider Maven / Gradle / Ivy

package com.commercetools.payment.payone.methods;

import com.commercetools.payment.payone.config.PayoneConfigurationNames;
import com.commercetools.payment.actions.HandlingTask;
import com.commercetools.payment.actions.OperationResult;
import com.commercetools.payment.actions.ShopAction;
import com.commercetools.payment.domain.PaymentCreationResultBuilder;
import com.commercetools.payment.model.CreatePaymentData;
import com.commercetools.payment.model.PaymentCreationResult;
import io.sphere.sdk.payments.PaymentDraftBuilder;
import io.sphere.sdk.types.CustomFieldsDraftBuilder;
import org.apache.commons.lang3.StringUtils;

import java.util.concurrent.CompletionStage;
import java.util.function.Function;

/**
 * Created by mgatz on 7/21/16.
 */
public class PayoneCreditCardCreatePaymentMethodProvider extends PayoneCreatePaymentMethodBase {

    private PayoneCreditCardCreatePaymentMethodProvider() { }

    @Override
    protected String getMethodType() {
        return PayonePaymentMethodType.PAYMENT_CREDIT_CARD.getValue();
    }

    public static PayoneCreatePaymentMethodBase of() {
        return new PayoneCreditCardCreatePaymentMethodProvider();
    }

    @Override
    public Function> create() {
        return cpd ->
                addNewPayment(cpd)
                .thenApply(payment -> null != payment
                        ? PaymentCreationResultBuilder
                            .of(OperationResult.SUCCESS)
                            .payment(payment)
                            .handlingTask(HandlingTask.of(ShopAction.CONTINUE))
                            .build()
                        : PaymentCreationResultBuilder.ofError("An error occured during creation of the payment object."));
    }

    @Override
    protected PaymentDraftBuilder createPaymentDraft(CreatePaymentData cpd) {

        CustomFieldsDraftBuilder customFieldsDraftBuilder = createCustomFieldsBuilder(cpd)
                .addObject(PayoneConfigurationNames.CREDIT_CARD_FORCE_3D_SECURE, Boolean.valueOf(cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_FORCE_3D_SECURE)))
                .addObject(PayoneConfigurationNames.SUCCESS_URL, cpd.getConfigByName(PayoneConfigurationNames.SUCCESS_URL))
                .addObject(PayoneConfigurationNames.ERROR_URL, cpd.getConfigByName(PayoneConfigurationNames.ERROR_URL))
                .addObject(PayoneConfigurationNames.CANCEL_URL, cpd.getConfigByName(PayoneConfigurationNames.CANCEL_URL))
                .addObject(PayoneConfigurationNames.CREDIT_CARD_CARD_DATA_PLACEHOLDER, cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_CARD_DATA_PLACEHOLDER))
                .addObject(PayoneConfigurationNames.CREDIT_CARD_TRUNCATED_CARD_NUMBER, cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_TRUNCATED_CARD_NUMBER));

        if(StringUtils.isNotEmpty(cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_CARD_NETWORK))) {
            customFieldsDraftBuilder.addObject(PayoneConfigurationNames.CREDIT_CARD_CARD_NETWORK, cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_CARD_NETWORK));
        }
        if(StringUtils.isNotEmpty(cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_EXPIRY_DATE))) {
            customFieldsDraftBuilder.addObject(PayoneConfigurationNames.CREDIT_CARD_EXPIRY_DATE, cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_EXPIRY_DATE));
        }
        if(StringUtils.isNotEmpty(cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_CARD_HOLDER_NAME))) {
            customFieldsDraftBuilder.addObject(PayoneConfigurationNames.CREDIT_CARD_CARD_HOLDER_NAME, cpd.getConfigByName(PayoneConfigurationNames.CREDIT_CARD_CARD_HOLDER_NAME));
        }

        return super.createPaymentDraft(cpd)
                .custom(customFieldsDraftBuilder.build());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy