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 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); }