Я использую узел и полосу для обработки платежей. У меня есть настройка маршрута /charge
, которая берет кучу параметров с передней стороны и отображает квитанцию.Как предотвратить перезагрузку браузера POST в экспресс?
мне интересно, как я перенаправлять от POST
пути к GET
маршруту, чтобы предотвратить ошибки, когда кто-то пытается перезагрузить страницу после загрузки POST
маршрута?
Это мои маршруты до сих пор. У меня есть кнопка оплаты в /
, которая отправляет запрос POST на номер /charge
.
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.post('/charge', function(req, res, next) {
var stripeToken = req.body.stripeToken;
var stripeEmail = req.body.stripeEmail;
var amount = 3999;
var description = "Product description";
var charge = stripe.charges.create({
amount: amount, // amount in cents, again
currency: "gbp",
source: stripeToken,
receipt_email: stripeEmail,
description: description
}, function(err, charge) {
if (err && err.type === 'StripeCardError') {
// The card has been declined
} else {
res.render('charge', {
title: 'Charge',
descrption: charge.description,
total: (charge.amount/100) + charge.currency.toUpperCase(),
trans_id: charge.id
});
}
});
});
Как я есть сейчас, то /charge
ошибки маршрут действительно плохо, и ломает приложение, если страница перезагружается после отправки. Это связано с тем, что токен действует только при первой попытке, поэтому объект charge
пуст во всех попытках после этого.
Каков наилучший способ справиться с этой проблемой? Перенаправить на новую страницу? Как я могу получить значения charge
для сохранения этой новой страницы? Могу ли я перенаправить на домашнюю страницу при обновлении?
Любые советы по этому вопросу будут оценены!
Рассматривали ли вы отправку POST с помощью AJAX? – csum