public ActionResult Index() { var receiptPage = _contentRepository.Get <ReceiptPage>(_siteConfiguration.GetSettings().ReceiptPage); var cartHelper = new CartHelper(Cart.DefaultName); if (cartHelper.IsEmpty && !PageEditing.PageIsInEditMode) { return(View("Error/_EmptyCartError")); } string message = ""; OrderViewModel orderViewModel = null; if (cartHelper.Cart.OrderForms.Count > 0) { var orderNumber = cartHelper.Cart.GeneratePredictableOrderNumber(); _log.Debug("Order placed - order number: " + orderNumber); cartHelper.Cart.OrderNumberMethod = CartExtensions.GeneratePredictableOrderNumber; var results = OrderGroupWorkflowManager.RunWorkflow(cartHelper.Cart, OrderGroupWorkflowManager.CartCheckOutWorkflowName); message = string.Join(", ", OrderGroupWorkflowManager.GetWarningsFromWorkflowResult(results)); if (message.Length == 0) { cartHelper.Cart.SaveAsPurchaseOrder(); cartHelper.Cart.Delete(); cartHelper.Cart.AcceptChanges(); } var order = _orderService.GetOrderByTrackingNumber(orderNumber); // Must be run after order is complete, // This might release the order for shipment and // send the order receipt by email _paymentCompleteHandler.ProcessCompletedPayment(order, User.Identity); orderViewModel = new OrderViewModel(_currentMarket.GetCurrentMarket().DefaultCurrency.Format, order); } ReceiptViewModel model = new ReceiptViewModel(receiptPage); model.CheckoutMessage = message; model.Order = orderViewModel; // Track successfull order in Google Analytics TrackAfterPayment(model); return(View("ReceiptPage", model)); }
public DibsPaymentProcessingResult ProcessPaymentResult(DibsPaymentResult result, IIdentity identity) { var cartHelper = new CartHelper(Cart.DefaultName); if (cartHelper.Cart.OrderForms.Count == 0) { return(null); } var cart = cartHelper.Cart; var payment = cart.OrderForms[0].Payments[0] as DibsPayment; if (payment != null) { payment.CardNumberMasked = result.CardNumberMasked; payment.CartTypeName = result.CardTypeName; payment.TransactionID = result.Transaction; payment.TransactionType = TransactionType.Authorization.ToString(); payment.Status = result.Status; cartHelper.Cart.Status = DIBSPaymentGateway.PaymentCompleted; } else { throw new Exception("Not a DIBS Payment"); } var orderNumber = cartHelper.Cart.GeneratePredictableOrderNumber(); Log.Debug("Order placed - order number: " + orderNumber); cartHelper.Cart.OrderNumberMethod = CartExtensions.GeneratePredictableOrderNumber; var results = OrderGroupWorkflowManager.RunWorkflow(cartHelper.Cart, OrderGroupWorkflowManager.CartCheckOutWorkflowName); var message = string.Join(", ", OrderGroupWorkflowManager.GetWarningsFromWorkflowResult(results)); if (message.Length == 0) { cartHelper.Cart.SaveAsPurchaseOrder(); cartHelper.Cart.Delete(); cartHelper.Cart.AcceptChanges(); } var order = _orderService.GetOrderByTrackingNumber(orderNumber); // Must be run after order is complete, // This will release the order for shipment and // send the order receipt by email _paymentCompleteHandler.ProcessCompletedPayment(order, identity); return(new DibsPaymentProcessingResult(order, message)); }
public ActionResult Index() { var receiptPage = _contentRepository.Get <ReceiptPage>(_siteConfiguration.GetSettings().ReceiptPage); var cartHelper = new CartHelper(Cart.DefaultName); if (cartHelper.IsEmpty && !PageEditing.PageIsInEditMode) { return(View("Error/_EmptyCartError")); } string message = ""; OrderViewModel orderViewModel = null; if (cartHelper.Cart.OrderForms.Count > 0) { var orderNumber = cartHelper.Cart.GeneratePredictableOrderNumber(); _log.Debug("Order placed - order number: " + orderNumber); cartHelper.Cart.OrderNumberMethod = CartExtensions.GeneratePredictableOrderNumber; System.Diagnostics.Trace.WriteLine("Running Workflow: " + OrderGroupWorkflowManager.CartCheckOutWorkflowName); var results = OrderGroupWorkflowManager.RunWorkflow(cartHelper.Cart, OrderGroupWorkflowManager.CartCheckOutWorkflowName); message = string.Join(", ", OrderGroupWorkflowManager.GetWarningsFromWorkflowResult(results)); if (message.Length == 0) { var purchaseOrder = cartHelper.Cart.SaveAsPurchaseOrder(); cartHelper.Cart.Delete(); cartHelper.Cart.AcceptChanges(); // Track successfull order //var trackingData = _trackingDataFactory.CreateOrderTrackingData(purchaseOrder, HttpContext); //_trackingService.Send(trackingData, HttpContext, RetrieveRecommendationMode.Disabled); _recommendationService.TrackOrder(purchaseOrder, HttpContext, CurrentPage); } System.Diagnostics.Trace.WriteLine("Loading Order: " + orderNumber); var order = _orderService.GetOrderByTrackingNumber(orderNumber); // Must be run after order is complete, // This might release the order for shipment and // send the order receipt by email System.Diagnostics.Trace.WriteLine(string.Format("Process Completed Payment: {0} (User: {1})", orderNumber, User.Identity.Name)); _paymentCompleteHandler.ProcessCompletedPayment(order, User.Identity); orderViewModel = new OrderViewModel(_currentMarket.GetCurrentMarket().DefaultCurrency.Format, order); } ReceiptViewModel model = new ReceiptViewModel(receiptPage); model.CheckoutMessage = message; model.Order = orderViewModel; // Track successfull order in Google Analytics TrackAfterPayment(model); _metricsLoggingService.Count("Purchase", "Purchase Success"); _metricsLoggingService.Count("Payment", "Generic"); return(View("ReceiptPage", model)); }