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() + "\"}";
}
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;
}
Aggregations