Я следовал инструкциям по добавлению интеллектуальных кнопок оплаты из PayPal (https://developer.paypal.com/docs/checkout/integrate/) с помощью API SDK. Все работает нормально, за исключением того, что я не могу перенаправить покупателя после выполнения платежа.
Код JS на странице HTML выглядит следующим образом:
paypal.Buttons({
createOrder: function (data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: price
}
}]
});
},
onApprove: async function (data, actions) {
return actions.order.capture().then(function (details) {
alert('success!');
return fetch('/paypal-transaction-complete', {
method: 'post',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
orderID: data.orderID,
})
});
});
}
}).render('#paypal-button-container');
На стороне сервера я выполняю его с асинхронными функциями и жду обещания, используя функции стрелок:
app.post('/paypal-transaction-complete', function (req, res) {
paypalRequestHandler.handleRequest(req, res)
.then(() => {
res.redirect('/'); // not working
}).catch(err => {
console.log(err);
res.sendStatus(500);
});
});
Мне интересно, почему он не перенаправляет, я могу сделать что-то вроде console.log (), но он просто не будет перенаправлять покупателя.