Esempio n. 1
0
        public ActionResult CancelPayment(DibsPaymentPage currentPage, DibsPaymentResult result)
        {
            var model = new CancelPaymentViewModel(currentPage, result);

            _metricsLoggingService.Count("Purchase", "Purchase Cancelled");
            _metricsLoggingService.Count("Payment", "Dibs");

            return(View("CancelPayment", model));
        }
            public override void SetUp()
            {
                base.SetUp();

                _paymentResponse  = Fixture.Create <DibsPaymentResult>();
                _processingResult = new DibsPaymentProcessingResult(Fixture.Create <PurchaseOrderModel>(),
                                                                    Fixture.Create <string>());
                _dibsPaymentProcessorMock.Setup(x => x.ProcessPaymentResult(_paymentResponse, It.IsAny <IIdentity>()))
                .Returns(_processingResult);
                _expectedModel = CreateReceiptViewModel();
                _receiptViewModelBuilderMock.Setup(b => b.BuildFor(_processingResult)).Returns(_expectedModel);
            }
        public ActionResult ProcessPayment(DibsPaymentPage currentPage, DibsPaymentResult result)
        {
            if (_log.IsDebugEnabled())
            {
                _log.Debug("Payment processed: {0}", result);
            }

            var model = GetReceiptForPayment(result);

            // Track successfull order in Google Analytics
            _googleAnalyticsTracker.TrackAfterPayment(model);

            return(View("ReceiptPage", model));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        public ActionResult ProcessPayment(DibsPaymentPage currentPage, DibsPaymentResult result)
        {
            ReceiptPage receiptPage = _contentRepository.Get <ReceiptPage>(_siteConfiguration.GetSettings().ReceiptPage);

            if (_log.IsDebugEnabled())
            {
                _log.Debug("Payment processed: {0}", result);
            }

            CartHelper     cartHelper     = new CartHelper(Cart.DefaultName);
            string         message        = "";
            OrderViewModel orderViewModel = null;

            if (cartHelper.Cart.OrderForms.Count > 0)
            {
                var payment = cartHelper.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);
                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, 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 ActionResult CancelPayment(DibsPaymentPage currentPage, DibsPaymentResult result)
        {
            var model = new CancelPaymentViewModel(currentPage, result);

            return(View("CancelPayment", model));
        }
        private ReceiptViewModel GetReceiptForPayment(DibsPaymentResult result)
        {
            var processingResult = _paymentProcessor.ProcessPaymentResult(result, _identityProvider.GetIdentity());

            return(_receiptViewModelBuilder.BuildFor(processingResult));
        }
 public CancelPaymentViewModel(DibsPaymentPage currentPage, DibsPaymentResult result)
     : base(currentPage)
 {
 }