Search in sources :

Example 1 with PayPalAPIInterfaceServiceService

use of urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService in project structr by structr.

the class PayPalHelper method getExpressCheckoutResponse.

public static GetExpressCheckoutDetailsResponseType getExpressCheckoutResponse(final String token) throws Throwable {
    final GetExpressCheckoutDetailsRequestType getExpressCheckoutDetailsRequest = new GetExpressCheckoutDetailsRequestType(token);
    getExpressCheckoutDetailsRequest.setVersion("104.0");
    final GetExpressCheckoutDetailsReq getExpressCheckoutDetailsReq = new GetExpressCheckoutDetailsReq();
    getExpressCheckoutDetailsReq.setGetExpressCheckoutDetailsRequest(getExpressCheckoutDetailsRequest);
    final PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(getPayPalConfig());
    return service.getExpressCheckoutDetails(getExpressCheckoutDetailsReq);
}
Also used : GetExpressCheckoutDetailsReq(urn.ebay.api.PayPalAPI.GetExpressCheckoutDetailsReq) PayPalAPIInterfaceServiceService(urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService) GetExpressCheckoutDetailsRequestType(urn.ebay.api.PayPalAPI.GetExpressCheckoutDetailsRequestType)

Example 2 with PayPalAPIInterfaceServiceService

use of urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService in project structr by structr.

the class PayPalHelper method getExpressCheckoutToken.

public static SetExpressCheckoutResponseType getExpressCheckoutToken(final List<PaymentDetailsType> paymentDetails, final String successUrl, final String cancelUrl) throws Throwable {
    final SetExpressCheckoutRequestDetailsType setExpressCheckoutRequestDetails = new SetExpressCheckoutRequestDetailsType();
    setExpressCheckoutRequestDetails.setReturnURL(successUrl);
    setExpressCheckoutRequestDetails.setCancelURL(cancelUrl);
    setExpressCheckoutRequestDetails.setPaymentDetails(paymentDetails);
    final SetExpressCheckoutRequestType setExpressCheckoutRequest = new SetExpressCheckoutRequestType(setExpressCheckoutRequestDetails);
    setExpressCheckoutRequest.setVersion("104.0");
    final SetExpressCheckoutReq setExpressCheckoutReq = new SetExpressCheckoutReq();
    setExpressCheckoutReq.setSetExpressCheckoutRequest(setExpressCheckoutRequest);
    final PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(getPayPalConfig());
    return service.setExpressCheckout(setExpressCheckoutReq);
}
Also used : SetExpressCheckoutRequestDetailsType(urn.ebay.apis.eBLBaseComponents.SetExpressCheckoutRequestDetailsType) SetExpressCheckoutRequestType(urn.ebay.api.PayPalAPI.SetExpressCheckoutRequestType) PayPalAPIInterfaceServiceService(urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService) SetExpressCheckoutReq(urn.ebay.api.PayPalAPI.SetExpressCheckoutReq)

Example 3 with PayPalAPIInterfaceServiceService

use of urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService in project structr by structr.

the class PayPalHelper method commitExpressCheckout.

public static DoExpressCheckoutPaymentResponseType commitExpressCheckout(final String notifyUrl, final CurrencyCodeType currencyCode, final int amountInCents, final String token, final String payerId) throws Throwable {
    final PaymentDetailsType paymentDetail = new PaymentDetailsType();
    paymentDetail.setNotifyURL(notifyUrl);
    paymentDetail.setOrderTotal(getAmountForCurrency(currencyCode.name(), amountInCents));
    paymentDetail.setPaymentAction(PaymentActionCodeType.SALE);
    final List<PaymentDetailsType> paymentDetails = new ArrayList<>();
    paymentDetails.add(paymentDetail);
    final DoExpressCheckoutPaymentRequestDetailsType doExpressCheckoutPaymentRequestDetails = new DoExpressCheckoutPaymentRequestDetailsType();
    doExpressCheckoutPaymentRequestDetails.setToken(token);
    doExpressCheckoutPaymentRequestDetails.setPayerID(payerId);
    doExpressCheckoutPaymentRequestDetails.setPaymentDetails(paymentDetails);
    final DoExpressCheckoutPaymentRequestType doExpressCheckoutPaymentRequest = new DoExpressCheckoutPaymentRequestType(doExpressCheckoutPaymentRequestDetails);
    doExpressCheckoutPaymentRequest.setVersion("104.0");
    final DoExpressCheckoutPaymentReq doExpressCheckoutPaymentReq = new DoExpressCheckoutPaymentReq();
    doExpressCheckoutPaymentReq.setDoExpressCheckoutPaymentRequest(doExpressCheckoutPaymentRequest);
    final PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(getPayPalConfig());
    return service.doExpressCheckoutPayment(doExpressCheckoutPaymentReq);
}
Also used : DoExpressCheckoutPaymentRequestDetailsType(urn.ebay.apis.eBLBaseComponents.DoExpressCheckoutPaymentRequestDetailsType) PaymentDetailsType(urn.ebay.apis.eBLBaseComponents.PaymentDetailsType) ArrayList(java.util.ArrayList) DoExpressCheckoutPaymentReq(urn.ebay.api.PayPalAPI.DoExpressCheckoutPaymentReq) PayPalAPIInterfaceServiceService(urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService) DoExpressCheckoutPaymentRequestType(urn.ebay.api.PayPalAPI.DoExpressCheckoutPaymentRequestType)

Example 4 with PayPalAPIInterfaceServiceService

use of urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService 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 5 with PayPalAPIInterfaceServiceService

use of urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService in project shopizer by shopizer-ecommerce.

the class PayPalExpressCheckoutPayment method refund.

@Override
public Transaction refund(boolean partial, MerchantStore store, Transaction transaction, Order order, BigDecimal amount, IntegrationConfiguration configuration, IntegrationModule module) throws IntegrationException {
    try {
        Validate.notNull(transaction, "Transaction cannot be null");
        Validate.notNull(transaction.getTransactionDetails().get("TRANSACTIONID"), "Transaction details must contain a TRANSACTIONID");
        Validate.notNull(order, "Order must not be null");
        Validate.notNull(order.getCurrency(), "Order nust contain Currency object");
        String mode = "sandbox";
        String env = configuration.getEnvironment();
        if (Constants.PRODUCTION_ENVIRONMENT.equals(env)) {
            mode = "production";
        }
        RefundTransactionRequestType refundTransactionRequest = new RefundTransactionRequestType();
        refundTransactionRequest.setVersion("104.0");
        RefundTransactionReq refundRequest = new RefundTransactionReq();
        refundRequest.setRefundTransactionRequest(refundTransactionRequest);
        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);
        RefundType refundType = RefundType.FULL;
        if (partial) {
            refundType = RefundType.PARTIAL;
        }
        refundTransactionRequest.setRefundType(refundType);
        BasicAmountType refundAmount = new BasicAmountType();
        refundAmount.setValue(pricingService.getStringAmount(amount, store));
        refundAmount.setCurrencyID(urn.ebay.apis.eBLBaseComponents.CurrencyCodeType.fromValue(order.getCurrency().getCode()));
        refundTransactionRequest.setAmount(refundAmount);
        refundTransactionRequest.setTransactionID(transaction.getTransactionDetails().get("TRANSACTIONID"));
        RefundTransactionResponseType refundTransactionResponse = service.refundTransaction(refundRequest);
        String refundAck = refundTransactionResponse.getAck().getValue();
        if (!"Success".equals(refundAck)) {
            LOGGER.error("Wrong value from transaction commit " + refundAck);
            throw new IntegrationException(ServiceException.EXCEPTION_TRANSACTION_DECLINED, "Paypal refund transaction code [" + refundTransactionResponse.getErrors().get(0).getErrorCode() + "], message-> " + refundTransactionResponse.getErrors().get(0).getShortMessage());
        }
        Transaction newTransaction = new Transaction();
        newTransaction.setAmount(amount);
        newTransaction.setTransactionDate(new Date());
        newTransaction.setTransactionType(TransactionType.REFUND);
        newTransaction.setPaymentType(PaymentType.PAYPAL);
        newTransaction.getTransactionDetails().put("TRANSACTIONID", refundTransactionResponse.getRefundTransactionID());
        transaction.getTransactionDetails().put("CORRELATION", refundTransactionResponse.getCorrelationID());
        return newTransaction;
    } catch (Exception e) {
        if (e instanceof IntegrationException) {
            throw (IntegrationException) e;
        } else {
            throw new IntegrationException(e);
        }
    }
}
Also used : RefundTransactionResponseType(urn.ebay.api.PayPalAPI.RefundTransactionResponseType) IntegrationException(com.salesmanager.core.modules.integration.IntegrationException) HashMap(java.util.HashMap) RefundType(urn.ebay.apis.eBLBaseComponents.RefundType) BasicAmountType(urn.ebay.apis.CoreComponentTypes.BasicAmountType) PayPalAPIInterfaceServiceService(urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService) Date(java.util.Date) ServiceException(com.salesmanager.core.business.exception.ServiceException) IntegrationException(com.salesmanager.core.modules.integration.IntegrationException) RefundTransactionReq(urn.ebay.api.PayPalAPI.RefundTransactionReq) Transaction(com.salesmanager.core.model.payments.Transaction) RefundTransactionRequestType(urn.ebay.api.PayPalAPI.RefundTransactionRequestType)

Aggregations

PayPalAPIInterfaceServiceService (urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService)7 ServiceException (com.salesmanager.core.business.exception.ServiceException)4 Transaction (com.salesmanager.core.model.payments.Transaction)4 IntegrationException (com.salesmanager.core.modules.integration.IntegrationException)4 Date (java.util.Date)4 HashMap (java.util.HashMap)4 BasicAmountType (urn.ebay.apis.CoreComponentTypes.BasicAmountType)4 ArrayList (java.util.ArrayList)3 PaymentDetailsType (urn.ebay.apis.eBLBaseComponents.PaymentDetailsType)3 DoExpressCheckoutPaymentReq (urn.ebay.api.PayPalAPI.DoExpressCheckoutPaymentReq)2 DoExpressCheckoutPaymentRequestType (urn.ebay.api.PayPalAPI.DoExpressCheckoutPaymentRequestType)2 GetExpressCheckoutDetailsReq (urn.ebay.api.PayPalAPI.GetExpressCheckoutDetailsReq)2 GetExpressCheckoutDetailsRequestType (urn.ebay.api.PayPalAPI.GetExpressCheckoutDetailsRequestType)2 SetExpressCheckoutReq (urn.ebay.api.PayPalAPI.SetExpressCheckoutReq)2 SetExpressCheckoutRequestType (urn.ebay.api.PayPalAPI.SetExpressCheckoutRequestType)2 DoExpressCheckoutPaymentRequestDetailsType (urn.ebay.apis.eBLBaseComponents.DoExpressCheckoutPaymentRequestDetailsType)2 SetExpressCheckoutRequestDetailsType (urn.ebay.apis.eBLBaseComponents.SetExpressCheckoutRequestDetailsType)2 OrderTotal (com.salesmanager.core.model.order.OrderTotal)1 ShoppingCartItem (com.salesmanager.core.model.shoppingcart.ShoppingCartItem)1 BigDecimal (java.math.BigDecimal)1