use of com.salesmanager.core.model.system.IntegrationConfiguration in project shopizer by shopizer-ecommerce.
the class ShippingServiceImpl method saveShippingQuoteModuleConfiguration.
@Override
public void saveShippingQuoteModuleConfiguration(IntegrationConfiguration configuration, MerchantStore store) throws ServiceException {
// validate entries
try {
String moduleCode = configuration.getModuleCode();
ShippingQuoteModule quoteModule = (ShippingQuoteModule) shippingModules.get(moduleCode);
if (quoteModule == null) {
throw new ServiceException("Shipping quote module " + moduleCode + " does not exist");
}
quoteModule.validateModuleConfiguration(configuration, store);
} catch (IntegrationException ie) {
throw ie;
}
try {
Map<String, IntegrationConfiguration> modules = new HashMap<String, IntegrationConfiguration>();
MerchantConfiguration merchantConfiguration = merchantConfigurationService.getMerchantConfiguration(SHIPPING_MODULES, store);
if (merchantConfiguration != null) {
if (!StringUtils.isBlank(merchantConfiguration.getValue())) {
String decrypted = encryption.decrypt(merchantConfiguration.getValue());
modules = ConfigurationModulesLoader.loadIntegrationConfigurations(decrypted);
}
} else {
merchantConfiguration = new MerchantConfiguration();
merchantConfiguration.setMerchantStore(store);
merchantConfiguration.setKey(SHIPPING_MODULES);
}
modules.put(configuration.getModuleCode(), configuration);
String configs = ConfigurationModulesLoader.toJSONString(modules);
String encrypted = encryption.encrypt(configs);
merchantConfiguration.setValue(encrypted);
merchantConfigurationService.saveOrUpdate(merchantConfiguration);
} catch (Exception e) {
throw new ServiceException(e);
}
}
use of com.salesmanager.core.model.system.IntegrationConfiguration in project shopizer by shopizer-ecommerce.
the class ConfigurationModulesLoader method toJSONString.
public static String toJSONString(Map<String, IntegrationConfiguration> configurations) throws Exception {
StringBuilder jsonModules = new StringBuilder();
jsonModules.append("[");
int count = 0;
for (Object key : configurations.keySet()) {
String k = (String) key;
IntegrationConfiguration c = configurations.get(k);
String jsonString = c.toJSONString();
jsonModules.append(jsonString);
count++;
if (count < configurations.size()) {
jsonModules.append(",");
}
}
jsonModules.append("]");
return jsonModules.toString();
}
use of com.salesmanager.core.model.system.IntegrationConfiguration in project shopizer by shopizer-ecommerce.
the class PaymentServiceImpl method processCapturePayment.
@Override
public Transaction processCapturePayment(Order order, Customer customer, MerchantStore store) throws ServiceException {
Validate.notNull(customer);
Validate.notNull(store);
Validate.notNull(order);
// 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(order.getPaymentModuleCode());
if (configuration == null) {
throw new ServiceException("Payment module " + order.getPaymentModuleCode() + " is not configured");
}
if (!configuration.isActive()) {
throw new ServiceException("Payment module " + order.getPaymentModuleCode() + " is not active");
}
PaymentModule module = this.paymentModules.get(order.getPaymentModuleCode());
if (module == null) {
throw new ServiceException("Payment module " + order.getPaymentModuleCode() + " does not exist");
}
IntegrationModule integrationModule = getPaymentMethodByCode(store, order.getPaymentModuleCode());
// TransactionType transactionType = payment.getTransactionType();
// get the previous transaction
Transaction trx = transactionService.getCapturableTransaction(order);
if (trx == null) {
throw new ServiceException("No capturable transaction for order id " + order.getId());
}
Transaction transaction = module.capture(store, customer, order, trx, configuration, integrationModule);
transaction.setOrder(order);
transactionService.create(transaction);
OrderStatusHistory orderHistory = new OrderStatusHistory();
orderHistory.setOrder(order);
orderHistory.setStatus(OrderStatus.PROCESSED);
orderHistory.setDateAdded(new Date());
orderService.addOrderStatusHistory(order, orderHistory);
order.setStatus(OrderStatus.PROCESSED);
orderService.saveOrUpdate(order);
return transaction;
}
use of com.salesmanager.core.model.system.IntegrationConfiguration in project shopizer by shopizer-ecommerce.
the class PaymentServiceImpl method initTransaction.
@Override
public Transaction initTransaction(Customer customer, Payment payment, MerchantStore store) throws ServiceException {
Validate.notNull(store);
Validate.notNull(payment);
Validate.notNull(payment.getAmount());
payment.setCurrency(store.getCurrency());
BigDecimal amount = payment.getAmount();
// 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");
}
PaymentModule module = this.paymentModules.get(payment.getModuleName());
if (module == null) {
throw new ServiceException("Payment module " + payment.getModuleName() + " does not exist");
}
IntegrationModule integrationModule = getPaymentMethodByCode(store, payment.getModuleName());
Transaction transaction = module.initTransaction(store, customer, amount, payment, configuration, integrationModule);
transactionService.save(transaction);
return transaction;
}
use of com.salesmanager.core.model.system.IntegrationConfiguration 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