我在设置Stripe API时遇到问题。一切正常,收费正在处理并显示在我的Stripe仪表板上。
然而,当我在处理充电后尝试重定向时,没有任何反应。这是我的POST路线。
router.post('/stripe', isLoggedIn, async (req, res) => {
try {
const charge = await stripe.charges.create({
amount: req.session.cart.totalPrice * 100,
currency: 'usd',
description: 'Pay for coffee',
source: req.body.id
});
req.session.cart = new Cart({});
req.user.paid += charge.amount;
await req.user.save();
res.redirect('/');
} catch (e) {
console.log(e);
}
});
答案 0 :(得分:0)
经过几个小时的敲击桌面后,我在一位经验丰富的开发人员寻求帮助后解决了这个问题。基本上,发送Stripe令牌的回调涉及动作生成器。该动作生成器向后端发送了一个AJAX请求。 AJAX请求不会在重定向上更改屏幕上显示的内容。答案在于改变前端的逻辑。
我的解决方案是使用StripeCheckout
导出react-stripe-checkout
组件(我使用withRouter
)。然后,我将history
道具传递给我的动作生成器。在动作生成器中,我在AJAX请求完成后使用history.push()
重定向。
export const handleToken = (token, history) => async dispatch => {
try {
const res = await axios.post('/api/stripe', token);
history.push('/');
dispatch({ type: 'FETCH_CART', payload: res.data });
} catch (e) {
console.log(e);
}
}