public void CreateOrderOnCustomerToken()
        {
            // X-Example: POST /customer-token/v1/tokens/{customerToken}/order
            var username = "******";
            var password = "******";

            var klarna        = new Klarna(username, password, KlarnaEnvironment.TestingEurope);
            var customerToken = "234534...345345....345";
            var orderData     = new CustomerTokenOrder
            {
                PurchaseCurrency   = "SEK",
                OrderAmount        = 1000,
                OrderTaxAmount     = 2000,
                MerchantReference1 = "StoreOrderId",
                AutoCapture        = true,
                OrderLines         = new List <OrderLine>()
                {
                    new OrderLine
                    {
                        Type                = OrderLineType.physical,
                        Name                = "Foo",
                        Quantity            = 1,
                        UnitPrice           = 10000,
                        TaxRate             = 2500,
                        TotalAmount         = 10000,
                        TotalTaxAmount      = 2000,
                        TotalDiscountAmount = 0,
                    }
                },
            };

            try
            {
                var order = klarna.CustomerToken.CreateOrder(customerToken, orderData).Result;
                Console.WriteLine("OrderId: " + order.OrderId);
            }
            catch (AggregateException ae)
            {
                foreach (var e in ae.InnerExceptions)
                {
                    if (e is ApiException)
                    {
                        var apiException = (ApiException)e;
                        Console.WriteLine("Status code: " + apiException.StatusCode);
                        Console.WriteLine("Error: " + string.Join("; ", apiException.ErrorMessage.ErrorMessages));
                    }
                    else
                    {
                        // Rethrow any other exception or process it
                        Console.WriteLine(e.Message);
                        throw;
                    }
                }
            }
            // /X-Example: POST /customer-token/v1/tokens/{customerToken}/order
        }
        public void CreateOrderOnCustomerToken()
        {
            var username = "******";
            var password = "******";

            var klarna        = new Klarna(username, password, KlarnaEnvironment.TestingEurope);
            var customerToken = "234534...345345....345";
            var orderData     = new CustomerTokenOrder
            {
                PurchaseCurrency   = "SEK",
                OrderAmount        = 1000,
                OrderTaxAmount     = 2000,
                MerchantReference1 = "StoreOrderId",
                AutoCapture        = true,
                OrderLines         = new List <OrderLine>()
                {
                    new OrderLine
                    {
                        Type                = OrderLineType.physical,
                        Name                = "Foo",
                        Quantity            = 1,
                        UnitPrice           = 10000,
                        TaxRate             = 2500,
                        TotalAmount         = 10000,
                        TotalTaxAmount      = 2000,
                        TotalDiscountAmount = 0,
                    }
                },
            };

            try
            {
                var order = klarna.CustomerToken.CreateOrder(customerToken, orderData).Result;
                Console.WriteLine("OrderId: " + order.OrderId);
            }
            catch (ApiException ex)
            {
                Console.WriteLine(ex.ErrorMessage.ErrorCode);
                Console.WriteLine(ex.ErrorMessage.ErrorMessages);
                Console.WriteLine(ex.ErrorMessage.CorrelationId);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        /// <summary>
        /// Creates a new order using the customer token
        /// </summary>
        /// <param name="customerToken">Customer token</param>
        /// <param name="order">A <see cref="CustomerTokenOrder"/> object</param>
        /// <returns><see cref="CustomerTokenCreateOrderResponse"/></returns>
        public async Task <CustomerTokenCreateOrderResponse> CreateOrder(string customerToken, CustomerTokenOrder order)
        {
            var url = ApiUrlHelper.GetApiUrlForController(ApiSession.ApiUrl, ApiControllerUri, $"{customerToken}/order");

            return(await Post <CustomerTokenCreateOrderResponse>(url, order).ConfigureAwait(false));
        }