Node.js:Stripe post route不重定向

时间:2018-02-21 09:13:20

标签: node.js express stripe-payments

我在设置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);
}
});

1 个答案:

答案 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);
   }
}