Search in sources :

Example 1 with TransactionType

use of com.salesmanager.core.model.payments.TransactionType in project shopizer by shopizer-ecommerce.

the class OrderPaymentApi method nextTransaction.

@RequestMapping(value = { "/private/orders/{id}/payment/nextTransaction" }, method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@ApiImplicitParams({ @ApiImplicitParam(name = "store", dataType = "String", defaultValue = "DEFAULT"), @ApiImplicitParam(name = "lang", dataType = "String", defaultValue = "en") })
public String nextTransaction(@PathVariable final Long id, @ApiIgnore MerchantStore merchantStore, @ApiIgnore Language language) {
    String user = authorizationUtils.authenticatedUser();
    authorizationUtils.authorizeUser(user, Stream.of(Constants.GROUP_SUPERADMIN, Constants.GROUP_ADMIN, Constants.GROUP_ADMIN_ORDER, Constants.GROUP_ADMIN_RETAIL).collect(Collectors.toList()), merchantStore);
    TransactionType transactionType = orderFacade.nextTransaction(id, merchantStore);
    return "{\"transactionType\":\"" + transactionType.name() + "\"}";
}
Also used : TransactionType(com.salesmanager.core.model.payments.TransactionType) ApiImplicitParams(io.swagger.annotations.ApiImplicitParams) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 2 with TransactionType

use of com.salesmanager.core.model.payments.TransactionType in project shopizer by shopizer-ecommerce.

the class PaymentServiceImpl method processPayment.

@Override
public Transaction processPayment(Customer customer, MerchantStore store, Payment payment, List<ShoppingCartItem> items, Order order) throws ServiceException {
    Validate.notNull(customer);
    Validate.notNull(store);
    Validate.notNull(payment);
    Validate.notNull(order);
    Validate.notNull(order.getTotal());
    payment.setCurrency(store.getCurrency());
    BigDecimal amount = order.getTotal();
    // must have a shipping module configured
    Map<String, IntegrationConfiguration> modules = this.getPaymentModulesConfigured(store);
    if (modules == null) {
        throw new ServiceException("No payment module configured");
    }
    IntegrationConfiguration configuration = modules.get(payment.getModuleName());
    if (configuration == null) {
        throw new ServiceException("Payment module " + payment.getModuleName() + " is not configured");
    }
    if (!configuration.isActive()) {
        throw new ServiceException("Payment module " + payment.getModuleName() + " is not active");
    }
    String sTransactionType = configuration.getIntegrationKeys().get("transaction");
    if (sTransactionType == null) {
        sTransactionType = TransactionType.AUTHORIZECAPTURE.name();
    }
    try {
        TransactionType.valueOf(sTransactionType);
    } catch (IllegalArgumentException ie) {
        LOGGER.warn("Transaction type " + sTransactionType + " does noe exist, using default AUTHORIZECAPTURE");
        sTransactionType = "AUTHORIZECAPTURE";
    }
    if (sTransactionType.equals(TransactionType.AUTHORIZE.name())) {
        payment.setTransactionType(TransactionType.AUTHORIZE);
    } else {
        payment.setTransactionType(TransactionType.AUTHORIZECAPTURE);
    }
    PaymentModule module = this.paymentModules.get(payment.getModuleName());
    if (module == null) {
        throw new ServiceException("Payment module " + payment.getModuleName() + " does not exist");
    }
    if (payment instanceof CreditCardPayment && "true".equals(coreConfiguration.getProperty("VALIDATE_CREDIT_CARD"))) {
        CreditCardPayment creditCardPayment = (CreditCardPayment) payment;
        validateCreditCard(creditCardPayment.getCreditCardNumber(), creditCardPayment.getCreditCard(), creditCardPayment.getExpirationMonth(), creditCardPayment.getExpirationYear());
    }
    IntegrationModule integrationModule = getPaymentMethodByCode(store, payment.getModuleName());
    TransactionType transactionType = TransactionType.valueOf(sTransactionType);
    if (transactionType == null) {
        transactionType = payment.getTransactionType();
        if (transactionType.equals(TransactionType.CAPTURE.name())) {
            throw new ServiceException("This method does not allow to process capture transaction. Use processCapturePayment");
        }
    }
    Transaction transaction = null;
    if (transactionType == TransactionType.AUTHORIZE) {
        transaction = module.authorize(store, customer, items, amount, payment, configuration, integrationModule);
    } else if (transactionType == TransactionType.AUTHORIZECAPTURE) {
        transaction = module.authorizeAndCapture(store, customer, items, amount, payment, configuration, integrationModule);
    } else if (transactionType == TransactionType.INIT) {
        transaction = module.initTransaction(store, customer, amount, payment, configuration, integrationModule);
    }
    if (transactionType != TransactionType.INIT) {
        transactionService.create(transaction);
    }
    if (transactionType == TransactionType.AUTHORIZECAPTURE) {
        order.setStatus(OrderStatus.ORDERED);
        if (!payment.getPaymentType().name().equals(PaymentType.MONEYORDER.name())) {
            order.setStatus(OrderStatus.PROCESSED);
        }
    }
    return transaction;
}
Also used : PaymentModule(com.salesmanager.core.modules.integration.payment.model.PaymentModule) CreditCardPayment(com.salesmanager.core.model.payments.CreditCardPayment) TransactionType(com.salesmanager.core.model.payments.TransactionType) ServiceException(com.salesmanager.core.business.exception.ServiceException) Transaction(com.salesmanager.core.model.payments.Transaction) IntegrationConfiguration(com.salesmanager.core.model.system.IntegrationConfiguration) BigDecimal(java.math.BigDecimal) IntegrationModule(com.salesmanager.core.model.system.IntegrationModule)

Aggregations

TransactionType (com.salesmanager.core.model.payments.TransactionType)2 ServiceException (com.salesmanager.core.business.exception.ServiceException)1 CreditCardPayment (com.salesmanager.core.model.payments.CreditCardPayment)1 Transaction (com.salesmanager.core.model.payments.Transaction)1 IntegrationConfiguration (com.salesmanager.core.model.system.IntegrationConfiguration)1 IntegrationModule (com.salesmanager.core.model.system.IntegrationModule)1 PaymentModule (com.salesmanager.core.modules.integration.payment.model.PaymentModule)1 ApiImplicitParams (io.swagger.annotations.ApiImplicitParams)1 BigDecimal (java.math.BigDecimal)1 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)1 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)1 ResponseStatus (org.springframework.web.bind.annotation.ResponseStatus)1