コード例 #1
0
        /// <summary>
        /// Refunds the order.
        /// </summary>
        public void RefundOrder()
        {
            // X-Example: POST /ordermanagement/v1/orders/{order_id}/refunds
            var username = "******";
            var password = "******";

            var klarna  = new Klarna(username, password, KlarnaEnvironment.TestingEurope);
            var orderId = "abc-abcdefg-abc";

            try
            {
                var refundData = new OrderManagementRefund
                {
                    RefundedAmount = 10000,
                    Description    = "Full refund for order",
                    OrderLines     = new List <OrderLine>()
                    {
                        new OrderLine
                        {
                            Type                = OrderLineType.physical,
                            Name                = "Foo",
                            Quantity            = 1,
                            UnitPrice           = 10000,
                            TaxRate             = 2500,
                            TotalAmount         = 10000,
                            TotalTaxAmount      = 2000,
                            TotalDiscountAmount = 0,
                        }
                    }
                };
                var refund = klarna.OrderManagement.CreateAndFetchRefund(orderId, refundData).Result;
                Console.WriteLine("Order has been refunded");
                Console.WriteLine(refund.RefundId);
                Console.WriteLine(refund.RefundedAt);
                Console.WriteLine(refund.RefundedAmount);
            }
            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 /ordermanagement/v1/orders/{order_id}/refunds
        }
コード例 #2
0
        public virtual async Task Refund(string orderId, IOrderGroup orderGroup, OrderForm orderForm, IPayment payment)
        {
            var lines = orderForm.LineItems.Select(l => FromLineItem(l, orderGroup.Currency)).ToList();

            var refund = new OrderManagementRefund
            {
                RefundedAmount = GetAmount(payment.Amount),
                Description    = orderForm.ReturnComment,
                OrderLines     = lines
            };
            await _client.CreateAndFetchRefund(orderId, refund).ConfigureAwait(false);
        }
コード例 #3
0
        /// <summary>
        /// Refunds the order.
        /// </summary>
        public void RefundOrder()
        {
            var username = "******";
            var password = "******";

            var klarna  = new Klarna(username, password, KlarnaEnvironment.TestingEurope);
            var orderId = "abc-abcdefg-abc";

            try
            {
                var refundData = new OrderManagementRefund
                {
                    RefundedAmount = 10000,
                    Description    = "Full refund for order",
                    OrderLines     = new List <OrderLine>()
                    {
                        new OrderLine
                        {
                            Type                = OrderLineType.physical,
                            Name                = "Foo",
                            Quantity            = 1,
                            UnitPrice           = 10000,
                            TaxRate             = 2500,
                            TotalAmount         = 10000,
                            TotalTaxAmount      = 2000,
                            TotalDiscountAmount = 0,
                        }
                    }
                };
                klarna.OrderManagement.CreateRefund(orderId, refundData).RunSynchronously();
            }
            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);
            }
        }
コード例 #4
0
ファイル: OrderManagementStore.cs プロジェクト: Geta/Klarna
        /// <summary>
        /// Creates a refund and follow the Location header to fetch the data
        /// <a href="https://developers.klarna.com/api/#order-management-api-create-a-refund">
        ///     https://developers.klarna.com/api/#order-management-api-create-a-refund
        /// </a>
        /// </summary>
        /// <param name="orderId">Id of order to create a refund</param>
        /// <param name="refund">The <see cref="OrderManagementRefund"/> object</param>
        /// <returns>Object of <see cref="OrderManagementRefund"/> </returns>
        public async Task <OrderManagementRefund> CreateAndFetchRefund(string orderId, OrderManagementRefund refund)
        {
            var url = ApiUrlHelper.GetApiUrlForController(ApiSession.ApiUrl, ApiControllerUri, $"{orderId}/refunds");

            var response = new Ref <HttpResponseMessage>();

            await Post(url, refund, null, response).ConfigureAwait(false);

            var headers = response.Value.Headers;

            url = headers.Location.ToString();

            if (!string.IsNullOrEmpty(url))
            {
                return(await Get <OrderManagementRefund>(url).ConfigureAwait(false));
            }

            return(default(OrderManagementRefund));
        }
コード例 #5
0
        /// <summary>
        /// Creates a refund
        /// <a href="https://developers.klarna.com/api/#order-management-api-create-a-refund">
        ///     https://developers.klarna.com/api/#order-management-api-create-a-refund
        /// </a>
        /// </summary>
        /// <param name="orderId">Id of order to create a refund</param>
        /// <param name="refund">The <see cref="OrderManagementRefund"/> object</param>
        /// <returns></returns>
        public Task CreateRefund(string orderId, OrderManagementRefund refund)
        {
            var url = ApiUrlHelper.GetApiUrlForController(ApiSession.ApiUrl, ApiControllerUri, $"{orderId}/refunds");

            return(Post(url, refund));
        }