Я использую Express для обработки платежей Stripe на целевой странице.
В случае неудавшегося платежа они по-прежнему перенаправляются на «страницу успеха», а их следует перенаправлять на страницу неудавшегося платежа. Я пытался сделать это двумя разными способами: либо с помощью chooseRedirects()
, либо с помощью перенаправления после обнаружения ошибки, но ни один из них, похоже, не эффективен.
app.post('/charge', (req,res) => {
var ctx = req.webtaskContext;
var STRIPE_SECRET_KEY = ctx.secrets.STRIPE_SECRET_KEY;
function handleRedirects(){
if (req.query.sku == "sku_123" && res.status(200)) {
res.redirect(301, 'https://payment-succeeded.url')
} else {
res.redirect(301, 'https://payment-failed.url')
}
}
stripe(STRIPE_SECRET_KEY).customers.create({
email: req.body.stripeEmail,
source: req.body.stripeToken
})
.then(customer =>
stripe(STRIPE_SECRET_KEY).charges.create({
amount: req.query.amount,
currency: req.query.currency,
customer: customer.id,
description: req.query.description
}))
.then(charge => res.send(charge))
.catch(err => {
console.log("Error:", err);
res.redirect(301, 'https://payment-failed.url')
})
.then(
handleRedirects()
);
});
app.listen(8000);