// Ajax. public ActionResult ConfirmOrder(string formData) { string redirectUrl = null; var messages = new List <string>(); var success = false; try { var store = Services.StoreContext.CurrentStore; var customer = Services.WorkContext.CurrentCustomer; var processPaymentRequest = (_httpContext.Session["OrderPaymentInfo"] as ProcessPaymentRequest) ?? new ProcessPaymentRequest(); processPaymentRequest.StoreId = store.Id; processPaymentRequest.CustomerId = customer.Id; processPaymentRequest.PaymentMethodSystemName = AmazonPayPlugin.SystemName; // We must check here if an order can be placed to avoid creating unauthorized Amazon payment objects. var warnings = _orderProcessingService.GetOrderPlacementWarnings(processPaymentRequest); if (!warnings.Any()) { if (_orderProcessingService.IsMinimumOrderPlacementIntervalValid(customer, store)) { if (_apiService.ConfirmOrderReference()) { success = true; var state = _httpContext.GetAmazonPayState(Services.Localization); state.FormData = formData.EmptyNull(); } else { _httpContext.Session["AmazonPayFailedPaymentReason"] = "PaymentMethodNotAllowed"; redirectUrl = Url.Action("PaymentMethod", "Checkout", new { area = "" }); } } else { messages.Add(T("Checkout.MinOrderPlacementInterval")); } } else { messages.AddRange(warnings.Select(x => HtmlUtils.ConvertPlainTextToHtml(x))); } } catch (Exception ex) { messages.Add(ex.Message); Logger.Error(ex); } return(Json(new { success, redirectUrl, messages })); }