0

当我向 Klarna API 发送 POST 请求以创建新订单时,我收到了错误请求。

这是我发送 POST 请求的代码:

Cart = new CartManager(_context, HttpContext.Session).GetCart();
Customer = new CustomerManager(HttpContext.Session).GetCustomer()
OrderViewModel order = new OrderViewModel();

order.Reference = DateTime.Now.ToOADate().ToString().Replace(",", string.Empty);
order.Cart = Cart;
order.Customer = Customer;

string url = ApiHelper.KlarnaApiClient.BaseAddress + "checkout/v3/orders";

KlarnaOrderModel klarnaOrderModel = new KlarnaOrderModel
{
    purchase_currency = "SEK",
    order_amount = (int)order.Cart.TotalCharge,
    order_lines = klarnaOrderLines
};

HttpResponseMessage response = await ApiHelper.KlarnaApiClient.PostAsJsonAsync(
        url, klarnaOrderModel);

response.EnsureSuccessStatusCode();

KlarnaOrderModel:

public class KlarnaOrderModel
{
public string purchase_country { get { return "SE"; } }
public string purchase_currency { get; set; }
public string locale { get { return "en-GB"; } }
public int order_amount { get; set; }
public int order_tax_amount { get { return 2500; } }
public List<KlarnaOrderLine> order_lines { get; set; }
public KlarnaMerchantUrls merchant_urls { get { return new Models.KlarnaMerchantUrls(); } }
}

克拉纳订单线:

public class KlarnaOrderLine
{
public string name { get; set; }
public int quantity { get; set; }
public int unit_price { get; set; }
public int tax_rate { get { return 2500; } }
public int total_amount { get { return unit_price * quantity; } }
public int total_tax_amount { get { return total_amount / 5 ; } }
}

KlarnaMerchantUrls:

public class KlarnaMerchantUrls
{
public string terms { get { return "https://localhost:44316/shop/terms"; } }
public string checkout { get { return "https://localhost:44316/shop/checkout"; } }
public string confirmation { get { return "https://localhost:44316/shop/checkout/confirmation"; } 
public string push { get { return "https://localhost:44316/shop/push"; } }
}

这是一个屏幕截图:

在此处输入图像描述

我用于初始化 API 的代码:

KlarnaApiClient = new HttpClient();

KlarnaApiClient.BaseAddress = new Uri("https://api.playground.klarna.com/");

KlarnaApiClient.DefaultRequestHeaders.Accept.Clear();
KlarnaApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
KlarnaApiClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes($"{MY KLARNA API KEY UID}:{MY KLARNA API KEY PASSWORD}")));
4

0 回答 0