Пример #1
0
        public async Task CanRetrieveOrderAfterCreationOrder()
        {
            // If: we create a new order
            OrderRequest  orderRequest = CreateOrderRequestWithOnlyRequiredFields();
            OrderResponse createdOrder = await OrderClient.CreateOrderAsync(orderRequest);

            // When: We attempt to retrieve the order
            OrderResponse retrievedOrder = await OrderClient.GetOrderAsync(createdOrder.Id);

            // Then: Make sure we get a valid response
            Assert.IsNotNull(retrievedOrder);
            Assert.AreEqual(createdOrder.Id, retrievedOrder.Id);
        }
Пример #2
0
        public async Task <data.Orders.CustomerOrder> CreateOrderAsync()
        {
            data.Orders.CustomerOrder order = null;

            var cart = await _cartClient.GetCartAsync(SiteContext.Current.StoreId, SiteContext.Current.CustomerId);

            if (cart != null)
            {
                order = await _orderClient.CreateOrderAsync(cart.Id);
                await DeleteCartAsync(cart.Id);
            }

            return(order);
        }
Пример #3
0
        public async Task CanCancelCreatedOrder()
        {
            // If: we create a new order
            OrderRequest  orderRequest = CreateOrderRequestWithOnlyRequiredFields();
            OrderResponse createdOrder = await OrderClient.CreateOrderAsync(orderRequest);

            // When: We attempt to cancel the order and then retrieve it
            await OrderClient.CancelOrderAsync(createdOrder.Id);

            OrderResponse canceledOrder = await OrderClient.GetOrderAsync(createdOrder.Id);

            // Then: The order status should be cancelled
            Assert.AreEqual(OrderStatus.Canceled, canceledOrder.Status);
        }
Пример #4
0
        public async Task CanCreateOrderWithOnlyRequiredFields()
        {
            // If: we create a order request with only the required parameters
            OrderRequest orderRequest = CreateOrderRequestWithOnlyRequiredFields();

            // When: We send the order request to Mollie
            OrderResponse result = await OrderClient.CreateOrderAsync(orderRequest);

            // Then: Make sure we get a valid response
            Assert.IsNotNull(result);
            Assert.AreEqual(orderRequest.Amount.Value, result.Amount.Value);
            Assert.AreEqual(orderRequest.Amount.Currency, result.Amount.Currency);
            Assert.AreEqual(orderRequest.OrderNumber, result.OrderNumber);
        }
Пример #5
0
        public async Task CanUpdateOrderLine()
        {
            // If: we create a new order
            OrderRequest  orderRequest = CreateOrderRequestWithOnlyRequiredFields();
            OrderResponse createdOrder = await OrderClient.CreateOrderAsync(orderRequest);

            // When: We update the order line
            OrderLineUpdateRequest updateRequest = new OrderLineUpdateRequest()
            {
                Name = "A fluffy bear"
            };
            OrderResponse updatedOrder = await OrderClient.UpdateOrderLinesAsync(createdOrder.Id, createdOrder.Lines.First().Id, updateRequest);

            // Then: The name of the order line should be updated
            Assert.AreEqual(updateRequest.Name, updatedOrder.Lines.First().Name);
        }
Пример #6
0
        public async Task CreateOrderAsync_SinglePaymentMethod_RequestIsSerializedInExpectedFormat()
        {
            // Given: we create a order with a single payment method
            OrderRequest orderRequest = this.CreateOrderRequestWithOnlyRequiredFields();

            orderRequest.Method = PaymentMethod.Ideal;
            string       expectedPaymentMethodJson = $"\"method\":[\"{PaymentMethod.Ideal}";
            const string jsonResponse = defaultOrderJsonResponse;
            var          mockHttp     = this.CreateMockHttpMessageHandler(HttpMethod.Post, $"{BaseMollieClient.ApiEndPoint}orders", jsonResponse, expectedPaymentMethodJson);
            HttpClient   httpClient   = mockHttp.ToHttpClient();
            OrderClient  orderClient  = new OrderClient("abcde", httpClient);

            // When: We send the request
            OrderResponse orderResponse = await orderClient.CreateOrderAsync(orderRequest);

            // Then
            mockHttp.VerifyNoOutstandingExpectation();
            Assert.AreEqual(orderRequest.Method, orderResponse.Method);
        }
Пример #7
0
        public async Task CanUpdateExistingOrder()
        {
            // If: we create a new order
            OrderRequest  orderRequest = CreateOrderRequestWithOnlyRequiredFields();
            OrderResponse createdOrder = await OrderClient.CreateOrderAsync(orderRequest);

            // When: We attempt to update the order
            OrderUpdateRequest orderUpdateRequest = new OrderUpdateRequest()
            {
                OrderNumber    = "1337",
                BillingAddress = createdOrder.BillingAddress
            };

            orderUpdateRequest.BillingAddress.City = "Den Haag";
            OrderResponse updatedOrder = await OrderClient.UpdateOrderAsync(createdOrder.Id, orderUpdateRequest);

            // Then: Make sure the order is updated
            Assert.AreEqual(orderUpdateRequest.OrderNumber, updatedOrder.OrderNumber);
            Assert.AreEqual(orderUpdateRequest.BillingAddress.City, updatedOrder.BillingAddress.City);
        }
Пример #8
0
        /// <summary>
        /// PostProcessPayment.
        /// This method is invoked right after a customer places an order.
        /// Usually this method is used when you need to redirect a customer to a third-party site for completing a payment (for example, PayPal Standard).
        /// </summary>
        /// <param name="postProcessPaymentRequest"></param>
        public void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
        {
            var location = new Uri($"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host}");
            var url      = location.AbsoluteUri;

            var redirectUrl =
                _httpContextAccessor.HttpContext.Request.Scheme + "://" +
                _httpContextAccessor.HttpContext.Request.Host + "/" +
                "checkout/completed/" + postProcessPaymentRequest.Order.Id;

            var orderLines = CreatePaymentRequest.BuildOrderLines(
                postProcessPaymentRequest, SelectCurrency(),
                _productService, _orderService);

            var orderRequest = CreatePaymentRequest.MollieOrderRequest(
                postProcessPaymentRequest, orderLines, redirectUrl,
                SelectOrderAdress(postProcessPaymentRequest), SelectBillingAdress(postProcessPaymentRequest), SelectCurrency(),
                _stateProvinceService, _countryService, url);

            OrderResponse orderResponse = _mollieOrderClient.CreateOrderAsync(orderRequest).Result;

            _httpContextAccessor.HttpContext.Response.Redirect(orderResponse.Links.Checkout.Href);
        }
Пример #9
0
        public async Task CreateOrderAsync_MultiplePaymentMethods_RequestIsSerializedInExpectedFormat()
        {
            // Given: we create a order with a single payment method
            OrderRequest orderRequest = this.CreateOrderRequestWithOnlyRequiredFields();

            orderRequest.Methods = new List <string>()
            {
                PaymentMethod.Ideal,
                PaymentMethod.CreditCard,
                PaymentMethod.DirectDebit
            };
            string       expectedPaymentMethodJson = $"\"method\":[\"{PaymentMethod.Ideal}\",\"{PaymentMethod.CreditCard}\",\"{PaymentMethod.DirectDebit}\"]";
            const string jsonResponse = defaultOrderJsonResponse;
            var          mockHttp     = this.CreateMockHttpMessageHandler(HttpMethod.Post, $"{BaseMollieClient.ApiEndPoint}orders", jsonResponse, expectedPaymentMethodJson);
            HttpClient   httpClient   = mockHttp.ToHttpClient();
            OrderClient  orderClient  = new OrderClient("abcde", httpClient);

            // When: We send the request
            await orderClient.CreateOrderAsync(orderRequest);

            // Then
            mockHttp.VerifyNoOutstandingExpectation();
        }