При реализации интеграции с сервером Paypal вызов POST Create работает правильно для https://api.sandbox.paypal.com/v1/payments/payment с объектом ответа, совпадающим с найденным в API. Сервер успешно возвращает результат клиенту, а res.id для функции .then (res) в paypal.request.post: PAY-76T970067E989851JLPLCMKA
После того, как пользователь авторизует платеж, клиент отправляет запрос на конечную точку выполнения моего сервера с полезной нагрузкой:
{
"paymentID" : "PAY-76T970067E989851JLPLCMKA",
"payerID" : "3LSD3Q8J7T3ZL"
}
Затем сервер перемоделирует полезную нагрузку для запроса к конечной точке POST Execute PayPal следующим образом:
заголовки:
Content-Type = "application/json"
Authorization = "Bearer " + accessToken // checked not expired
и грузоподъемность кузова:
{"payer_id" : "3LSD3Q8J7T3ZL"}
Затем создается сообщение:
https://api.sandbox.paypal.com/v1/payments/payment/PAY-76T970067E989851JLPLCMKA/execute
В этот момент сервер PayPal отвечает: Удаленный сервер возвратил ошибку: (400) Неверный запрос.
Форма, которую я вижу, соответствует требованиям API, изложенным здесь: https://developer.paypal.com/docs/api/payments/v1/#payment_execute
В качестве примечания я настроил конечную точку на своем собственном сервере, чтобы проверить правильность заголовков и полезной нагрузки JSON, передаваемых конечной точке выполнения Paypal.
Любые предложения будут с благодарностью.