
[英]How to redirect to a success page After Stripe success with Meteor js
[英]How to force redirect to another page than the success_url in Stripe Checkout?
题:
我目前正在使用 webhook:当收到checkout.session.completed
事件时,即使我尝试使用 res.redirect("/page") (Node.js) 将用户重定向到另一个页面,默认情况下也会将用户重定向到 success_url。 js)。 如果我的执行代码失败,真的没有办法将他重定向到另一个页面吗? (即:支付成功,但是履行码失败,所以重定向到success_url是不合适的)
参考:
https://stripe.com/docs/payments/checkout/one-time
https://stripe.com/docs/payments/checkout/fulfillment#webhooks
“在您的客户被重定向之前,checkout.session.completed webhook 会发送到您的服务器。您的 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});
}
});
发送到您的 webhook 端点的checkout.session.completed
事件只是为了让您知道 Checkout Session 已完成。 除了响应成功或失败之外,您不能使用事件通知以任何方式更改结帐会话。
客户端重定向延迟直到您响应checkout.session.completed
事件的原因是允许您在用户重定向到success_url
之前在您的服务器上执行完成任务(例如更新您的数据库,进行其他 API 调用等。 )。 这可确保客户登陆反映其成功购买的页面。
在此过程中, success_url
本身无法更改,但您可以在服务器上设置一个页面,该页面将根据结帐会话 ID 将用户重定向到您希望的任何页面,并将success_url
设置为该页面。 您可以使用{CHECKOUT_SESSION_ID}
占位符在您的success_url
包含结帐会话 ID 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.