ВОПРОС:
В настоящее время я использую веб-крючок: при получении события checkout.session.completed
пользователь по умолчанию перенаправляется на success_url, даже если я пытаюсь перенаправить его на другая страница с res.redirect ("/ page") (Node.js). Неужели нет способа перенаправить его на другую страницу в случае сбоя моего кода выполнения? (То есть: платеж выполнен успешно, но код выполнения не выполнен, поэтому перенаправление на success_url не подходит)
ССЫЛКА:
https://stripe.com/docs/payments/checkout/one-time
https://stripe.com/docs/payments/checkout/fulfillment#webhooks
"Webhook checkout.session.completed отправляется на ваш сервер до того, как ваш клиент будет перенаправлен. Ваше подтверждение webhook (любое 2xx код состояния) вызовет перенаправление клиента на success_url "
ЧТО Я ПОПРОБОВАЛ:
Цепочка Express. js 4 res .status (401) для перенаправления
Итак, если бы я должен был отправить код состояния 4xx, разве это не помешало бы перенаправлению success_url? Это действительно то, что я наблюдаю.
Но я не могу перенаправить на другую страницу. Я пробовал:
res.status(401).location('/submit/wait/').end();
res.redirect(401, '/submit/wait/');
res.set('Content-Type', 'text/html');
res.status(401).send('<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0; url=/submit/wait"></head></html>`);Is there really no way to then just redirect to another page ?
КОД
router.post('/webhook', bodyParser.raw({type: 'application/json'}), (req, res) => {
const sig = req.headers['stripe-signature'];
let event;
try {
event = stripe.webhooks.constructEvent(req.rawBody, sig, endpointSecret);
} catch (err) {
return res.status(400).send(`Webhook Error: ${err.message}`);
}
if (event.type === 'checkout.session.completed') {
const session = event.data.object;
(async () => {
try {
//FULFIL ORDER CODE
} catch(e) {
console.log("ERROR FULFILLING ORDER: "+e);
res.status(401).location('/submit/wait/').end();
}
})();
}
else {
console.log("DEFAULT RESPONSE");
// Return a response to acknowledge receipt of the event
res.json({received: true});
}
});