Я взял проект, уже выполненный другим разработчиком, но незаконченный и полный ошибок. В этом проекте у меня есть интеграция PayPal, которая использует PayPal (2.0.0-rc2). У меня есть PayPalAccountId и PayPalClientSettings в настройках конфигурации, и я заполняю их данными о реальной среде, взятыми с сайта разработчиков Paypal. У меня есть некоторый код, который инициализирует настройку PayPalHttpClient и транзакцию (введите правильную сумму) и отправляет в PayPal, я полагаю, что это следует этот пример . Все работает, пользователь переходит в PayPal и, если он отменяет, возвращается на правильный URL-адрес, но если пользователь входит в свою учетную запись PayPal и делает платеж, PayPal возвращается в мой код именно в этот момент:
public async Task<IActionResult> PayPalReturnCallback(string paymentId, string token, string payerId)
{
try
{
var payPalManager = PayPalManager.GetInstance(_payPalConfig);
var paymentUrl = await payPalManager.ExecutePayment(paymentId, payerId);
}
catch(Exception ex)
{
return RedirectToAction("PaymentFailed","Checkout",new {paymentId, ex.Message});
}
Order order = new Order(_orderDl);
await order.LoadOrderByPayPalCode(paymentId);
order.ExecutePaymentTimeStamp = DateTime.Now;
await order.Save();
return RedirectToAction("PaymentSuccess","Checkout",new { order.Id});
}
и вызывает исключение, когда прибывает в метод payPalManager.ExecutePayment с этим сообщением:
Произошла одна или несколько ошибок. ({"error": "invalid_client", "error_description": "Аутентификация клиента не удалась"})
, но аутентификация клиента также подойдет, потому что в противном случае он не будет подключаться к PayPal в первый раз. Мне кажется, что каким-то образом следует использовать возвращаемый параметр «token», но я не знаю, где.
Любая помощь более чем приветствуется