Я пытаюсь внедрить Paypal SDK в свой проект ASP.NET MVC, но у меня возникает проблема, когда я пытаюсь создать платеж, всегда возникает следующее исключение:
PayPal.PaymentsException: «Ошибка на удаленном сервере: (400) неверный запрос» .
Это метод создания платежа Paypal. Я пытался кодировать разные версии, но всегда получал это исключение в методе payment.Create (apiContext).
Вот код, метод, который вызывает исключение, находится внизу:
private Payment CreatePayment(APIContext apiContext, string redirectUrl)
{
var listItems = new ItemList() { items = new List<Item>() };
List<CartItem> cart = (List<CartItem>)Session["cart"];
foreach (var cartItem in cart)
{
listItems.items.Add(new Item()
{
name = cartItem.Stock.articulo.Nombre,
currency = "EUR",
price = cartItem.PrecioTotalArticulo.ToString(),
quantity = cartItem.Cantidad.ToString(),
sku = "sku"
});
}
var payer = new Payer() { payment_method = "paypal" };
var redirUrls = new RedirectUrls()
{
cancel_url = redirectUrl,
return_url = redirectUrl
};
var subtotalCompra = cart.Sum(i => i.PrecioTotalArticulo);
var gastosEnvio = configuracionService.CalcularGastosEnvio(subtotalCompra);
var details = new Details()
{
tax = (0.21 * subtotalCompra).ToString(),
shipping = gastosEnvio.ToString(),
subtotal = subtotalCompra.ToString()
};
var amount = new Amount()
{
currency = "EUR",
total = (Convert.ToDouble(details.tax) + subtotalCompra + gastosEnvio).ToString(),
details = details
};
var transactionList = new List<Transaction>();
transactionList.Add(new Transaction()
{
description = "Paypal Testing",
invoice_number = ventaService.GenerarNumFactura(),
amount = amount,
item_list = listItems
});
payment = new Payment()
{
intent = "sale",
payer = payer,
transactions = transactionList,
redirect_urls = redirUrls
};
return payment.Create(apiContext);
}
А вот класс Configuration, где я определяю APIContext:
public class PaypalConfiguration
{
public readonly static string ClientId;
public readonly static string ClientSecret;
static PaypalConfiguration()
{
var config = GetConfig();
ClientId = config["clientId"];
ClientSecret = config["clientSecret"];
}
public static Dictionary<string, string> GetConfig()
{
return PayPal.Api.ConfigManager.Instance.GetProperties();
}
private static string GetAccessToken()
{
string accessToken = new OAuthTokenCredential(ClientId, ClientSecret, GetConfig()).GetAccessToken();
return accessToken;
}
public static APIContext GetAPIContext()
{
var apiContext = new APIContext(GetAccessToken());
apiContext.Config = GetConfig();
return apiContext;
}
}
Я пытаюсь найти разные решения или связанные проблемы, но ничего не нашел.
Спасибо за помощь.