Search in sources :

Example 1 with PaymentDetailsItemType

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);
    }
}
Also used : IntegrationException(com.salesmanager.core.modules.integration.IntegrationException) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) BasicAmountType(urn.ebay.apis.CoreComponentTypes.BasicAmountType) PayPalAPIInterfaceServiceService(urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService) BigDecimal(java.math.BigDecimal) Date(java.util.Date) ServiceException(com.salesmanager.core.business.exception.ServiceException) IntegrationException(com.salesmanager.core.modules.integration.IntegrationException) SetExpressCheckoutResponseType(urn.ebay.api.PayPalAPI.SetExpressCheckoutResponseType) Transaction(com.salesmanager.core.model.payments.Transaction) SetExpressCheckoutRequestDetailsType(urn.ebay.apis.eBLBaseComponents.SetExpressCheckoutRequestDetailsType) SetExpressCheckoutRequestType(urn.ebay.api.PayPalAPI.SetExpressCheckoutRequestType) PaymentDetailsType(urn.ebay.apis.eBLBaseComponents.PaymentDetailsType) ShoppingCartItem(com.salesmanager.core.model.shoppingcart.ShoppingCartItem) PaymentDetailsItemType(urn.ebay.apis.eBLBaseComponents.PaymentDetailsItemType) OrderTotal(com.salesmanager.core.model.order.OrderTotal) SetExpressCheckoutReq(urn.ebay.api.PayPalAPI.SetExpressCheckoutReq)

Example 2 with PaymentDetailsItemType

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.");
}
Also used : SetExpressCheckoutResponseType(urn.ebay.api.PayPalAPI.SetExpressCheckoutResponseType) FrameworkException(org.structr.common.error.FrameworkException) PaymentDetailsType(urn.ebay.apis.eBLBaseComponents.PaymentDetailsType) PaymentDetailsItemType(urn.ebay.apis.eBLBaseComponents.PaymentDetailsItemType) PaymentItem(org.structr.payment.api.PaymentItem) LinkedList(java.util.LinkedList)

Aggregations

SetExpressCheckoutResponseType (urn.ebay.api.PayPalAPI.SetExpressCheckoutResponseType)2 PaymentDetailsItemType (urn.ebay.apis.eBLBaseComponents.PaymentDetailsItemType)2 PaymentDetailsType (urn.ebay.apis.eBLBaseComponents.PaymentDetailsType)2 ServiceException (com.salesmanager.core.business.exception.ServiceException)1 OrderTotal (com.salesmanager.core.model.order.OrderTotal)1 Transaction (com.salesmanager.core.model.payments.Transaction)1 ShoppingCartItem (com.salesmanager.core.model.shoppingcart.ShoppingCartItem)1 IntegrationException (com.salesmanager.core.modules.integration.IntegrationException)1 BigDecimal (java.math.BigDecimal)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 FrameworkException (org.structr.common.error.FrameworkException)1 PaymentItem (org.structr.payment.api.PaymentItem)1 PayPalAPIInterfaceServiceService (urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService)1 SetExpressCheckoutReq (urn.ebay.api.PayPalAPI.SetExpressCheckoutReq)1 SetExpressCheckoutRequestType (urn.ebay.api.PayPalAPI.SetExpressCheckoutRequestType)1 BasicAmountType (urn.ebay.apis.CoreComponentTypes.BasicAmountType)1 SetExpressCheckoutRequestDetailsType (urn.ebay.apis.eBLBaseComponents.SetExpressCheckoutRequestDetailsType)1