コード例 #1
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);
        }
コード例 #2
0
            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);
            }