public CheckoutPlaceOrderModel PlaceOrder() { var model = new CheckoutPlaceOrderModel(); try { var processPaymentRequest = _session["OrderPaymentInfo"] as ProcessPaymentRequest; if (processPaymentRequest == null) { model.RedirectToCart = true; return(model); } //prevent 2 orders being placed within an X seconds time frame if (!_stripeCheckoutService.IsMinimumOrderPlacementIntervalValid(_workContext.CurrentCustomer)) { throw new Exception(_localizationService.GetResource("Checkout.MinOrderPlacementInterval")); } //place order processPaymentRequest.StoreId = _storeContext.CurrentStore.Id; processPaymentRequest.CustomerId = _workContext.CurrentCustomer.Id; processPaymentRequest.PaymentMethodSystemName = "Payments.Stripe"; var placeOrderResult = _orderProcessingService.PlaceOrder(processPaymentRequest); if (placeOrderResult.Success) { _session["OrderPaymentInfo"] = null; var postProcessPaymentRequest = new PostProcessPaymentRequest { Order = placeOrderResult.PlacedOrder }; _paymentService.PostProcessPayment(postProcessPaymentRequest); if (_webHelper.IsRequestBeingRedirected || _webHelper.IsPostBeingDone) { //redirection or POST has been done in PostProcessPayment model.IsRedirected = true; return(model); } else { model.CompletedId = placeOrderResult.PlacedOrder.Id; return(model); } } else { foreach (var error in placeOrderResult.Errors) { model.Warnings.Add(error); } } } catch (Exception exc) { _logger.Warning(exc.Message, exc); model.Warnings.Add(exc.Message); } return(model); }
public CheckoutPlaceOrderModel PlaceOrder() { var model = new CheckoutPlaceOrderModel(); try { var processPaymentRequest = _session.Get <ProcessPaymentRequest>(Defaults.ProcessPaymentRequestKey); if (processPaymentRequest == null) { model.RedirectToCart = true; return(model); } //prevent 2 orders being placed within an X seconds time frame if (!_payPalExpressCheckoutService.IsMinimumOrderPlacementIntervalValid(_workContext.CurrentCustomer)) { throw new Exception(_localizationService.GetResource("Checkout.MinOrderPlacementInterval")); } //place order processPaymentRequest.StoreId = _storeContext.CurrentStore.Id; processPaymentRequest.CustomerId = _workContext.CurrentCustomer.Id; processPaymentRequest.PaymentMethodSystemName = "Payments.PayPalExpressCheckout"; var placeOrderResult = _orderProcessingService.PlaceOrder(processPaymentRequest); if (placeOrderResult.Success) { var doExpressCheckoutPaymentResponseType = _session.Get <DoExpressCheckoutPaymentResponseType>(Defaults.CheckoutPaymentResponseTypeKey); doExpressCheckoutPaymentResponseType?.LogOrderNotes(placeOrderResult.PlacedOrder.OrderGuid); _session.Remove(Defaults.ProcessPaymentRequestKey); var postProcessPaymentRequest = new PostProcessPaymentRequest { Order = placeOrderResult.PlacedOrder }; _paymentService.PostProcessPayment(postProcessPaymentRequest); if (_webHelper.IsRequestBeingRedirected || _webHelper.IsPostBeingDone) { //redirection or POST has been done in PostProcessPayment model.IsRedirected = true; return(model); } model.CompletedId = placeOrderResult.PlacedOrder.Id; return(model); } foreach (var error in placeOrderResult.Errors) { model.Warnings.Add(error); } } catch (Exception exc) { _logger.Warning(exc.Message, exc); model.Warnings.Add(exc.Message); } return(model); }