public SetExpressCheckoutResponse SendPayPalSetExpressCheckoutRequest(ApplicationCart cart, string serverURL, string userEmail = null) { try { ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; ServicePointManager.DefaultConnectionLimit = 9999; WebUILogging.LogMessage("SendPayPalSetExpressCheckoutRequest"); // Optional handling of cart items: If there is only a single item being sold we don't need a list of expressCheckoutItems // However if you're selling a single item as a sale consider also adding it as an ExpressCheckoutItem as it looks better once you get to PayPal's site // Note: ExpressCheckoutItems are currently NOT stored by PayPal against the sale in the users order history so you need to keep your own records of what items were in a cart List <ExpressCheckoutItem> expressCheckoutItems = null; if (cart.Items != null) { expressCheckoutItems = new List <ExpressCheckoutItem>(); foreach (ApplicationCartItem item in cart.Items) { expressCheckoutItems.Add(new ExpressCheckoutItem(item.Quantity, item.Price, item.Name, item.Description)); } } SetExpressCheckoutResponse response = _payPalTransactionRegistrar.SendSetExpressCheckout(cart.Currency, cart.TotalPrice, cart.PurchaseDescription, cart.Id.ToString(), serverURL, expressCheckoutItems, userEmail); // Add a PayPal transaction record PayPalTransaction transaction = new PayPalTransaction { RequestId = response.RequestId, TrackingReference = cart.Id.ToString(), RequestTime = DateTime.Now, RequestStatus = response.ResponseStatus.ToString(), TimeStamp = response.TIMESTAMP, RequestError = response.ErrorToString, Token = response.TOKEN, }; // Store this transaction in your Database return(response); } catch (Exception ex) { WebUILogging.LogException(ex.Message, ex); } return(null); }
public ActionResult PayPalExpressCheckout() { WebUILogging.LogMessage("Express Checkout Initiated"); // SetExpressCheckout ApplicationCart cart = (ApplicationCart)Session["Cart"]; string serverURL = HttpContext.Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/"); SetExpressCheckoutResponse transactionResponse = transactionService.SendPayPalSetExpressCheckoutRequest(cart, serverURL); // If Success redirect to PayPal for user to make payment if (transactionResponse == null || transactionResponse.ResponseStatus != PayPalMvc.Enums.ResponseType.Success) { SetUserNotification("Sorry there was a problem with initiating a PayPal transaction. Please try again and contact an Administrator if this still doesn't work."); string errorMessage = (transactionResponse == null) ? "Null Transaction Response" : transactionResponse.ErrorToString; WebUILogging.LogMessage("Error initiating PayPal SetExpressCheckout transaction. Error: " + errorMessage); return(RedirectToAction("Error", "Purchase")); } return(Redirect(string.Format(PayPalMvc.Configuration.Current.PayPalRedirectUrl, transactionResponse.TOKEN))); }
public SetExpressCheckoutResponse SendPayPalSetExpressCheckoutRequest(PanierViewModel panier, string serverURL, string userEmail = null) { try { List <ExpressCheckoutItem> expressCheckoutItems = null; if (panier.ListOfConversions != null) { expressCheckoutItems = new List <ExpressCheckoutItem>(); foreach (ListTaskViewModel item in panier.ListOfConversions) { expressCheckoutItems.Add(new ExpressCheckoutItem(1, new decimal(item.PRICE), item.FILE_URL_ACCESS, "")); } } SetExpressCheckoutResponse response = _payPalTransactionRegistrar.SendSetExpressCheckout("EUR", new decimal(panier.GlobalPrice), "Transcoder", panier.PaypalTransactionId, serverURL, expressCheckoutItems, userEmail); return(response); } catch (Exception ex) { Debug.WriteLine(ex.Message, ex); } return(null); }
public ActionResult ValiderPanier(PanierViewModel model) { ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; if (!ModelState.IsValid) { return(View("Panier", model)); } Session["Panier"] = model; string serverURL = HttpContext.Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/"); SetExpressCheckoutResponse transactionResponse = paypalService.SendPayPalSetExpressCheckoutRequest(model, serverURL); if (transactionResponse == null || transactionResponse.ResponseStatus != Core.Transcoder.PayPalMvc.Enums.ResponseType.Success) { string errorMessage = (transactionResponse == null) ? "Null Paypal Transaction Response" : transactionResponse.ErrorToString; Debug.WriteLine("Error initiating PayPal SetExpressCheckout transaction. Error: " + errorMessage); return(RedirectToAction("Panier", model)); } FlashMessage.Confirmation(UiStrings.add_conversion_message_cart_validated); return(Redirect(string.Format(Configuration.Current.PayPalRedirectUrl, transactionResponse.TOKEN))); }