public CheckoutResult CheckoutWithPayPalExpressCheckout(Dictionary <string, string> payPalVariables) { string token = payPalVariables["token"]; string payerId = payPalVariables["PayerID"]; PayPalExpressCheckoutPaymentProvider payPalExpress = new PayPalExpressCheckoutPaymentProvider(storeContext.CurrentStore.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); int? orderId = payPalExpress.GetOrderIdForTransactionToken(token); Order pendingOrder = Order.GetOrder(orderId.GetValueOrDefault(-1)); if (pendingOrder != null) { PaymentStatusName paymentStatus = payPalExpress.DoExpressCheckoutPayment(pendingOrder, payPalVariables); OrderStatusName orderStatus = pendingOrder.OrderStatus; if (paymentStatus == PaymentStatusName.Completed) { orderStatus = OrderStatusName.Completed; pendingOrder.CreditCardType = CreditCardType.PayPal.ToString(); } UpdateOrderStatus(pendingOrder, orderStatus, paymentStatus); } return(DoPostCheckoutProcessing(pendingOrder, true)); }
/// <summary> /// Check for the PayPal Express Checkout return page variables and update the Order if needed. /// </summary> private void HandlePayPalExpressCallback() { Dictionary <string, string> payPalVariables = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(Request.QueryString["token"]) && !string.IsNullOrEmpty(Request.QueryString["PayerID"])) { string payPalToken = Request.QueryString["token"]; payPalVariables["token"] = payPalToken; payPalVariables["PayerID"] = Request.QueryString["PayerID"]; checkoutOrderInfo.PayPalVariables.Merge(payPalVariables); checkoutOrderInfo.PaymentProvider = PaymentProviderName.PayPalExpressCheckout; PayPalExpressCheckoutPaymentProvider payPalExpressCheckout = new PayPalExpressCheckoutPaymentProvider(StoreContext.CurrentStore.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); Order pendingOrder = Order.GetOrder(payPalExpressCheckout.GetOrderIdForTransactionToken(payPalToken).GetValueOrDefault(-1)); if (pendingOrder != null) { payPalExpressCheckout.UpdateOrderWithExpressCheckoutDetails(pendingOrder, payPalToken); checkoutOrderInfo.SetBillingAddressFromOrder(pendingOrder); checkoutOrderInfo.SetShippingAddressFromOrder(pendingOrder); //checkoutOrderInfo.ReCalculateOrderTotals(); } UpdateCheckoutSession(checkoutOrderInfo); } }