Search in sources :

Example 41 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class NullIntegrationGatewayTransactionServiceImpl method capture.

/**
 * for the test implementation, and in order to test different failed response scenarios, check for the presence of a "desired outcome"
 * entry in the request's additional fields
 */
@Override
public PaymentResponseDTO capture(PaymentRequestDTO paymentRequestDTO) throws PaymentException {
    PaymentResponseDTO responseDTO = new PaymentResponseDTO(PaymentType.THIRD_PARTY_ACCOUNT, NullIntegrationGatewayType.NULL_INTEGRATION_GATEWAY);
    responseDTO.paymentTransactionType(PaymentTransactionType.AUTHORIZE_AND_CAPTURE);
    responseDTO.amount(new Money(paymentRequestDTO.getTransactionTotal()));
    Map<String, Object> additionalFields = paymentRequestDTO.getAdditionalFields();
    if (additionalFields != null) {
        if (additionalFields.containsKey("desiredOutcome")) {
            String desiredOutome = (String) additionalFields.get("desiredOutcome");
            if (desiredOutome.equals("SOFT DECLINE")) {
                responseDTO.successful(false);
                responseDTO.rawResponse("confirmation - failure - soft decline");
                responseDTO.responseMap(PaymentAdditionalFieldType.DECLINE_TYPE.getType(), PaymentDeclineType.SOFT.getType());
            } else if (desiredOutome.equals("HARD DECLINE")) {
                responseDTO.successful(false);
                responseDTO.rawResponse("confirmation - failure - hard decline");
                responseDTO.responseMap(PaymentAdditionalFieldType.DECLINE_TYPE.getType(), PaymentDeclineType.HARD.getType());
            }
        }
    } else {
        responseDTO.rawResponse("confirmation - success");
        responseDTO.successful(true);
    }
    return responseDTO;
}
Also used : Money(org.broadleafcommerce.common.money.Money) PaymentResponseDTO(org.broadleafcommerce.common.payment.dto.PaymentResponseDTO)

Example 42 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class NullIntegrationGatewayTransactionServiceImpl method commonCreditCardProcessing.

/**
 * Does minimal Credit Card Validation (luhn check and expiration date is after today).
 * Mimics the Response of a real Payment Gateway.
 */
protected PaymentResponseDTO commonCreditCardProcessing(PaymentRequestDTO requestDTO, PaymentTransactionType paymentTransactionType) {
    PaymentResponseDTO responseDTO = new PaymentResponseDTO(PaymentType.CREDIT_CARD, NullIntegrationGatewayType.NULL_INTEGRATION_GATEWAY);
    responseDTO.valid(true).paymentTransactionType(paymentTransactionType);
    CreditCardDTO creditCardDTO = requestDTO.getCreditCard();
    String transactionAmount = requestDTO.getTransactionTotal();
    CreditCardValidator visaValidator = new CreditCardValidator(CreditCardValidator.VISA);
    CreditCardValidator amexValidator = new CreditCardValidator(CreditCardValidator.AMEX);
    CreditCardValidator mcValidator = new CreditCardValidator(CreditCardValidator.MASTERCARD);
    CreditCardValidator discoverValidator = new CreditCardValidator(CreditCardValidator.DISCOVER);
    if (StringUtils.isNotBlank(transactionAmount) && StringUtils.isNotBlank(creditCardDTO.getCreditCardNum()) && (StringUtils.isNotBlank(creditCardDTO.getCreditCardExpDate()) || (StringUtils.isNotBlank(creditCardDTO.getCreditCardExpMonth()) && StringUtils.isNotBlank(creditCardDTO.getCreditCardExpYear())))) {
        boolean validCard = false;
        if (visaValidator.isValid(creditCardDTO.getCreditCardNum())) {
            validCard = true;
        } else if (amexValidator.isValid(creditCardDTO.getCreditCardNum())) {
            validCard = true;
        } else if (mcValidator.isValid(creditCardDTO.getCreditCardNum())) {
            validCard = true;
        } else if (discoverValidator.isValid(creditCardDTO.getCreditCardNum())) {
            validCard = true;
        }
        boolean validDateFormat = false;
        boolean validDate = false;
        String[] parsedDate = null;
        if (StringUtils.isNotBlank(creditCardDTO.getCreditCardExpDate())) {
            parsedDate = creditCardDTO.getCreditCardExpDate().split("/");
        } else {
            parsedDate = new String[2];
            parsedDate[0] = creditCardDTO.getCreditCardExpMonth();
            parsedDate[1] = creditCardDTO.getCreditCardExpYear();
        }
        if (parsedDate.length == 2) {
            String expMonth = parsedDate[0];
            String expYear = parsedDate[1];
            try {
                DateTime expirationDate = new DateTime(Integer.parseInt("20" + expYear), Integer.parseInt(expMonth), 1, 0, 0);
                expirationDate = expirationDate.dayOfMonth().withMaximumValue();
                validDate = expirationDate.isAfterNow();
                validDateFormat = true;
            } catch (Exception e) {
            // invalid date format
            }
        }
        if (!validDate || !validDateFormat) {
            responseDTO.amount(new Money(0)).rawResponse("cart.payment.expiration.invalid").successful(false);
        } else if (!validCard) {
            responseDTO.amount(new Money(0)).rawResponse("cart.payment.card.invalid").successful(false);
        } else {
            responseDTO.amount(new Money(requestDTO.getTransactionTotal())).rawResponse("Success!").successful(true);
        }
    } else {
        responseDTO.amount(new Money(0)).rawResponse("cart.payment.invalid").successful(false);
    }
    return responseDTO;
}
Also used : CreditCardValidator(org.apache.commons.validator.CreditCardValidator) CreditCardDTO(org.broadleafcommerce.common.payment.dto.CreditCardDTO) Money(org.broadleafcommerce.common.money.Money) PaymentResponseDTO(org.broadleafcommerce.common.payment.dto.PaymentResponseDTO) DateTime(org.joda.time.DateTime) PaymentException(org.broadleafcommerce.common.vendor.service.exception.PaymentException)

Example 43 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class ProductDataProvider method getProduct.

private static Product getProduct(Long id) {
    Calendar activeStartCal = Calendar.getInstance();
    activeStartCal.add(Calendar.DAY_OF_YEAR, -2);
    Product product = new ProductImpl();
    Sku defaultSku = new SkuImpl();
    defaultSku.setRetailPrice(new Money(BigDecimal.valueOf(15.0)));
    defaultSku.setSalePrice(new Money(BigDecimal.valueOf(10.0)));
    defaultSku.setActiveStartDate(activeStartCal.getTime());
    product.setDefaultSku(defaultSku);
    if (id == null) {
        defaultSku.setName("productNameTest");
        return product;
    }
    product.setId(id);
    defaultSku.setName(id.toString());
    defaultSku.setId(id);
    return product;
}
Also used : Money(org.broadleafcommerce.common.money.Money) SkuImpl(org.broadleafcommerce.core.catalog.domain.SkuImpl) ProductImpl(org.broadleafcommerce.core.catalog.domain.ProductImpl) Calendar(java.util.Calendar) Product(org.broadleafcommerce.core.catalog.domain.Product) Sku(org.broadleafcommerce.core.catalog.domain.Sku)

Example 44 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class FulfillmentItemPricingActivity method applyTaxDifference.

public long applyTaxDifference(FulfillmentGroupItem fgItem, long numApplicationsNeeded, Money unitAmount) {
    BigDecimal numTimesToApply = new BigDecimal(Math.min(numApplicationsNeeded, fgItem.getQuantity()));
    Money oldAmount = fgItem.getTotalItemTaxableAmount();
    Money changeToAmount = unitAmount.multiply(numTimesToApply);
    fgItem.setTotalItemTaxableAmount(oldAmount.add(changeToAmount));
    return numTimesToApply.longValue();
}
Also used : Money(org.broadleafcommerce.common.money.Money) BigDecimal(java.math.BigDecimal)

Example 45 with Money

use of org.broadleafcommerce.common.money.Money in project BroadleafCommerce by BroadleafCommerce.

the class FulfillmentItemPricingActivity method distributeOrderSavingsToItems.

/**
 * Distributes the order adjustments (if any) to the individual fulfillment group items.
 * @param order
 * @param totalAllItems
 * @return
 */
protected Money distributeOrderSavingsToItems(Order order, BigDecimal totalAllItems) {
    Money returnAmount = new Money(order.getCurrency());
    BigDecimal orderAdjAmt = order.getOrderAdjustmentsValue().getAmount();
    for (FulfillmentGroup fulfillmentGroup : order.getFulfillmentGroups()) {
        for (FulfillmentGroupItem fgItem : fulfillmentGroup.getFulfillmentGroupItems()) {
            BigDecimal fgItemAmount = fgItem.getTotalItemAmount().getAmount();
            BigDecimal proratedAdjAmt = totalAllItems.compareTo(BigDecimal.ZERO) == 0 ? totalAllItems : orderAdjAmt.multiply(fgItemAmount).divide(totalAllItems, RoundingMode.FLOOR);
            fgItem.setProratedOrderAdjustmentAmount(new Money(proratedAdjAmt, order.getCurrency()));
            returnAmount = returnAmount.add(fgItem.getProratedOrderAdjustmentAmount());
        }
    }
    return returnAmount;
}
Also used : Money(org.broadleafcommerce.common.money.Money) FulfillmentGroupItem(org.broadleafcommerce.core.order.domain.FulfillmentGroupItem) FulfillmentGroup(org.broadleafcommerce.core.order.domain.FulfillmentGroup) BigDecimal(java.math.BigDecimal)

Aggregations

Money (org.broadleafcommerce.common.money.Money)158 Order (org.broadleafcommerce.core.order.domain.Order)43 BigDecimal (java.math.BigDecimal)38 Offer (org.broadleafcommerce.core.offer.domain.Offer)29 Test (org.testng.annotations.Test)29 Transactional (org.springframework.transaction.annotation.Transactional)24 FulfillmentGroup (org.broadleafcommerce.core.order.domain.FulfillmentGroup)22 ArrayList (java.util.ArrayList)21 CommonSetupBaseTest (org.broadleafcommerce.test.CommonSetupBaseTest)21 FulfillmentGroupItem (org.broadleafcommerce.core.order.domain.FulfillmentGroupItem)19 CustomerOffer (org.broadleafcommerce.core.offer.domain.CustomerOffer)18 Sku (org.broadleafcommerce.core.catalog.domain.Sku)16 DiscreteOrderItemImpl (org.broadleafcommerce.core.order.domain.DiscreteOrderItemImpl)14 OrderItem (org.broadleafcommerce.core.order.domain.OrderItem)13 HashMap (java.util.HashMap)12 SkuImpl (org.broadleafcommerce.core.catalog.domain.SkuImpl)12 FixedPriceFulfillmentOption (org.broadleafcommerce.core.order.fulfillment.domain.FixedPriceFulfillmentOption)12 DiscreteOrderItem (org.broadleafcommerce.core.order.domain.DiscreteOrderItem)11 FulfillmentGroupImpl (org.broadleafcommerce.core.order.domain.FulfillmentGroupImpl)11 FixedPriceFulfillmentOptionImpl (org.broadleafcommerce.core.order.fulfillment.domain.FixedPriceFulfillmentOptionImpl)10