use of urn.ebay.apis.eBLBaseComponents.PaymentDetailsItemType in project shopizer by shopizer-ecommerce.
the class PayPalExpressCheckoutPayment method initPaypalTransaction.
/* @Override
public Transaction capture(MerchantStore store, Customer customer,
List<ShoppingCartItem> items, BigDecimal amount, Payment payment, Transaction transaction,
IntegrationConfiguration configuration, IntegrationModule module)
throws IntegrationException {
com.salesmanager.core.business.payments.model.PaypalPayment paypalPayment = (com.salesmanager.core.business.payments.model.PaypalPayment)payment;
Validate.notNull(paypalPayment.getPaymentToken(), "A paypal payment token is required to process this transaction");
return processTransaction(store, customer, items, amount, paypalPayment, configuration, module);
}*/
public Transaction initPaypalTransaction(MerchantStore store, List<ShoppingCartItem> items, OrderTotalSummary summary, Payment payment, IntegrationConfiguration configuration, IntegrationModule module) throws IntegrationException {
Validate.notNull(configuration, "Configuration must not be null");
Validate.notNull(payment, "Payment must not be null");
Validate.notNull(summary, "OrderTotalSummary must not be null");
try {
PaymentDetailsType paymentDetails = new PaymentDetailsType();
if (configuration.getIntegrationKeys().get("transaction").equalsIgnoreCase(TransactionType.AUTHORIZECAPTURE.name())) {
paymentDetails.setPaymentAction(urn.ebay.apis.eBLBaseComponents.PaymentActionCodeType.SALE);
} else {
paymentDetails.setPaymentAction(urn.ebay.apis.eBLBaseComponents.PaymentActionCodeType.AUTHORIZATION);
}
List<PaymentDetailsItemType> lineItems = new ArrayList<PaymentDetailsItemType>();
for (ShoppingCartItem cartItem : items) {
PaymentDetailsItemType item = new PaymentDetailsItemType();
BasicAmountType amt = new BasicAmountType();
amt.setCurrencyID(urn.ebay.apis.eBLBaseComponents.CurrencyCodeType.fromValue(payment.getCurrency().getCode()));
amt.setValue(pricingService.getStringAmount(cartItem.getFinalPrice().getFinalPrice(), store));
// itemsTotal = itemsTotal.add(cartItem.getSubTotal());
int itemQuantity = cartItem.getQuantity();
item.setQuantity(itemQuantity);
item.setName(cartItem.getProduct().getProductDescription().getName());
item.setAmount(amt);
// System.out.println(pricingService.getStringAmount(cartItem.getSubTotal(), store));
lineItems.add(item);
}
List<OrderTotal> orderTotals = summary.getTotals();
BigDecimal tax = null;
for (OrderTotal total : orderTotals) {
if (total.getModule().equals(Constants.OT_SHIPPING_MODULE_CODE)) {
BasicAmountType shipping = new BasicAmountType();
shipping.setCurrencyID(urn.ebay.apis.eBLBaseComponents.CurrencyCodeType.fromValue(store.getCurrency().getCode()));
shipping.setValue(pricingService.getStringAmount(total.getValue(), store));
// System.out.println(pricingService.getStringAmount(total.getValue(), store));
paymentDetails.setShippingTotal(shipping);
}
if (total.getModule().equals(Constants.OT_HANDLING_MODULE_CODE)) {
BasicAmountType handling = new BasicAmountType();
handling.setCurrencyID(urn.ebay.apis.eBLBaseComponents.CurrencyCodeType.fromValue(store.getCurrency().getCode()));
handling.setValue(pricingService.getStringAmount(total.getValue(), store));
// System.out.println(pricingService.getStringAmount(total.getValue(), store));
paymentDetails.setHandlingTotal(handling);
}
if (total.getModule().equals(Constants.OT_TAX_MODULE_CODE)) {
if (tax == null) {
tax = new BigDecimal("0");
}
tax = tax.add(total.getValue());
}
}
if (tax != null) {
BasicAmountType taxAmnt = new BasicAmountType();
taxAmnt.setCurrencyID(urn.ebay.apis.eBLBaseComponents.CurrencyCodeType.fromValue(store.getCurrency().getCode()));
taxAmnt.setValue(pricingService.getStringAmount(tax, store));
// System.out.println(pricingService.getStringAmount(tax, store));
paymentDetails.setTaxTotal(taxAmnt);
}
BasicAmountType itemTotal = new BasicAmountType();
itemTotal.setCurrencyID(urn.ebay.apis.eBLBaseComponents.CurrencyCodeType.fromValue(store.getCurrency().getCode()));
itemTotal.setValue(pricingService.getStringAmount(summary.getSubTotal(), store));
paymentDetails.setItemTotal(itemTotal);
paymentDetails.setPaymentDetailsItem(lineItems);
BasicAmountType orderTotal = new BasicAmountType();
orderTotal.setCurrencyID(urn.ebay.apis.eBLBaseComponents.CurrencyCodeType.fromValue(store.getCurrency().getCode()));
orderTotal.setValue(pricingService.getStringAmount(summary.getTotal(), store));
// System.out.println(pricingService.getStringAmount(itemsTotal, store));
paymentDetails.setOrderTotal(orderTotal);
List<PaymentDetailsType> paymentDetailsList = new ArrayList<PaymentDetailsType>();
paymentDetailsList.add(paymentDetails);
String baseScheme = store.getDomainName();
String scheme = coreConfiguration.getProperty("SHOP_SCHEME");
if (!StringUtils.isBlank(scheme)) {
baseScheme = new StringBuilder().append(coreConfiguration.getProperty("SHOP_SCHEME", "http")).append("://").append(store.getDomainName()).toString();
}
StringBuilder RETURN_URL = new StringBuilder();
RETURN_URL.append(baseScheme);
if (!StringUtils.isBlank(baseScheme) && !baseScheme.endsWith(Constants.SLASH)) {
RETURN_URL.append(Constants.SLASH);
}
RETURN_URL.append(coreConfiguration.getProperty("CONTEXT_PATH", "sm-shop"));
SetExpressCheckoutRequestDetailsType setExpressCheckoutRequestDetails = new SetExpressCheckoutRequestDetailsType();
String returnUrl = RETURN_URL.toString() + new StringBuilder().append(Constants.SHOP_URI).append("/paypal/checkout").append(coreConfiguration.getProperty("URL_EXTENSION", ".html")).append("/success").toString();
String cancelUrl = RETURN_URL.toString() + new StringBuilder().append(Constants.SHOP_URI).append("/paypal/checkout").append(coreConfiguration.getProperty("URL_EXTENSION", ".html")).append("/cancel").toString();
setExpressCheckoutRequestDetails.setReturnURL(returnUrl);
setExpressCheckoutRequestDetails.setCancelURL(cancelUrl);
setExpressCheckoutRequestDetails.setPaymentDetails(paymentDetailsList);
SetExpressCheckoutRequestType setExpressCheckoutRequest = new SetExpressCheckoutRequestType(setExpressCheckoutRequestDetails);
setExpressCheckoutRequest.setVersion("104.0");
SetExpressCheckoutReq setExpressCheckoutReq = new SetExpressCheckoutReq();
setExpressCheckoutReq.setSetExpressCheckoutRequest(setExpressCheckoutRequest);
String mode = "sandbox";
String env = configuration.getEnvironment();
if (Constants.PRODUCTION_ENVIRONMENT.equals(env)) {
mode = "production";
}
Map<String, String> configurationMap = new HashMap<String, String>();
configurationMap.put("mode", mode);
configurationMap.put("acct1.UserName", configuration.getIntegrationKeys().get("username"));
configurationMap.put("acct1.Password", configuration.getIntegrationKeys().get("api"));
configurationMap.put("acct1.Signature", configuration.getIntegrationKeys().get("signature"));
PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(configurationMap);
SetExpressCheckoutResponseType setExpressCheckoutResponse = service.setExpressCheckout(setExpressCheckoutReq);
String token = setExpressCheckoutResponse.getToken();
String correlationID = setExpressCheckoutResponse.getCorrelationID();
String ack = setExpressCheckoutResponse.getAck().getValue();
if (!"Success".equals(ack)) {
LOGGER.error("Wrong value from init transaction " + ack);
throw new IntegrationException("Wrong paypal ack from init transaction " + ack);
}
Transaction transaction = new Transaction();
transaction.setAmount(summary.getTotal());
// transaction.setOrder(order);
transaction.setTransactionDate(new Date());
transaction.setTransactionType(TransactionType.INIT);
transaction.setPaymentType(PaymentType.PAYPAL);
transaction.getTransactionDetails().put("TOKEN", token);
transaction.getTransactionDetails().put("CORRELATION", correlationID);
return transaction;
// redirect user to
// https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-5LL13394G30048922
} catch (Exception e) {
e.printStackTrace();
throw new IntegrationException(e);
}
}
use of urn.ebay.apis.eBLBaseComponents.PaymentDetailsItemType in project structr by structr.
the class PayPalPaymentProvider method beginCheckout.
@Override
public BeginCheckoutResponse beginCheckout(final Payment payment, final String successUrl, final String cancelUrl) throws FrameworkException {
final List<PaymentDetailsType> paymentDetailList = new LinkedList<>();
final List<PaymentDetailsItemType> lineItems = new LinkedList<>();
final PaymentDetailsType paymentDetails = new PaymentDetailsType();
for (final PaymentItem item : payment.getItems()) {
// create payment item
final PaymentDetailsItemType paymentDetailsItem = new PaymentDetailsItemType();
paymentDetailsItem.setAmount(PayPalHelper.getAmountForCurrency(payment.getCurrencyCode(), item.getAmount()));
paymentDetailsItem.setQuantity(item.getQuantity());
final String name = item.getName();
if (name != null) {
paymentDetailsItem.setName(name);
}
final String description = item.getDescription();
if (description != null) {
paymentDetailsItem.setDescription(description);
}
final String itemUrl = item.getItemUrl();
if (itemUrl != null) {
paymentDetailsItem.setItemURL(itemUrl);
}
final String itemNumber = item.getItemNumber();
if (itemNumber != null) {
paymentDetailsItem.setNumber(itemNumber);
}
lineItems.add(paymentDetailsItem);
}
paymentDetails.setPaymentAction(PaymentActionCodeType.SALE);
paymentDetails.setPaymentDetailsItem(lineItems);
paymentDetails.setOrderTotal(PayPalHelper.getAmountForCurrency(payment.getCurrencyCode(), payment.getTotal()));
paymentDetailList.add(paymentDetails);
try {
final SetExpressCheckoutResponseType response = PayPalHelper.getExpressCheckoutToken(paymentDetailList, successUrl, cancelUrl);
if (AckCodeType.SUCCESS.equals(response.getAck())) {
payment.setToken(response.getToken());
payment.setPaymentState(PaymentState.open);
return new PayPalBeginCheckoutResponse(response, response.getToken());
}
} catch (Throwable t) {
throw new FrameworkException(422, t.getMessage());
}
throw new FrameworkException(422, "Unknown error.");
}
Aggregations