Я хочу позвонить на мой сервер, который затем вызовет API REST PayPal Payouts для выполнения определенного платежа. Я настроил необходимые учетные записи, и когда я пытаюсь это сделать с Почтальоном, все работает отлично! Я вызываю URL: https://api.sandbox.paypal.com/v1/payments/payouts
с токеном и Content-Type
, установленным на application/json
и тело
{
"sender_batch_header": {
"sender_batch_id": "Payouts_2018_100013",
"email_subject": "You have a payout!",
"email_message": "You have received a payout from ****! Thanks for using our service!"
},
"items": [
{
"recipient_type": "EMAIL",
"amount": {
"value": "9.87",
"currency": "EUR"
},
"receiver": "****@*****.com"
}]
}
. Это вернет что-то вроде
{
"batch_header": {
"payout_batch_id": "F5YLETFEWFLUS",
"batch_status": "PENDING",
"sender_batch_header": {
"sender_batch_id": "Payouts_2018_100012",
"email_subject": "You have a payout!",
"email_message": "You have received a payout from realnote! Thanks for using our service!"
}
},
"links": [
{
"href": "https://api.sandbox.paypal.com/v1/payments/payouts/F5YLETFEWFLUS",
"rel": "self",
"method": "GET",
"encType": "application/json"
}
]
}
с кодом HHTP201 (создано). Это абсолютно правильно, и я могу видеть состояние моего платежа при вызове соответствующего URL с payout_batch_id
из ответа.
Однако, если я пытаюсь сделать тот же звонок с моего сервера NodeJS, возникают проблемы. Я получаю токен, и все работает, но затем я создаю свой запрос следующим образом:
const options = {
url: "https://api.sandbox.paypal.com/v1/payments/payouts",
headers: {
'Content-Type': 'application/json'
},
auth: {
'bearer': token
},
form: {
"sender_batch_header": {
"sender_batch_id": "***_payment_***",
"email_subject": "You have a payout!",
"email_message": "You have received a payout from ****! Thanks for using our service!"
},
"items": [
{
"recipient_type": "EMAIL",
"amount": {
"value": "10.0",
"currency": "EUR"
},
"receiver": "*****@*****.com"
}]
}
};
Затем я отправляю запрос, используя модуль request
с таким кодом:
request.post(options, function(err,httpResponse,body){
if (err) {
console.error('Sending money failed:', err);
} else {
console.log('Response from PayPal successful! Server responded with:', body);
//var payPalAnswer = JSON.parse(body);
}
})
Ноэто приведет к получению ответа с кодом состояния 204 (без содержимого), и, что неудивительно, без содержания, поэтому нет возможности получить статус моего платежа, как с помощью ответа сервера, который я получил с помощью Postman. Где моя ошибка?