付款成功后我想做点什么

时间:2019-06-04 11:58:38

标签: javascript node.js express mongoose

我使用Stripe在代码中创建了付款功能。付款效果很好,可以接受付款,但是我想在创建付款后将一些数据引入数组,否则如果返回带有消息的页面失败。

我刚刚创建了函数,但不知道以后该怎么做。

exports.postPayment = async (req,res,next) => {
    const loggedinUser = req.session.user._id;



const token = req.body.stripeToken;
    const charge = stripe.charges.create({
amount:200,
currency:'usd',
description:'Negative Comment',
source:token
    });


}

我应该创建一个then块,还是如何检查是否已付款。现在我处于测试模式,因此所有付款都将被接受。请帮助我,谢谢!

1 个答案:

答案 0 :(得分:0)

您不回来。即在响应'res'参数上调用返回方法之一。

注意!第一个被截断的电话进行付款,并立即返回,即付款成功或失败,该代码段将不等待结果,第二个示例将利用一个诺言。

exports.postPayment = async (req,res,next) => {
    const loggedinUser = req.session.user._id;

    const token = req.body.stripeToken;
    const charge = stripe.charges.create({
        amount:200,
        currency:'usd',
        description:'Negative Comment',
        source:token
    });

    return res.status(200).json({message: "It works!"});
}

不确定charges.create是否返回承诺,但是如果这样做,我会这样做:

exports.postPayment = async (req,res,next) => {
    const loggedinUser = req.session.user._id;

    const token = req.body.stripeToken;

    try {
        await const charge = stripe.charges.create({
            amount:200,
            currency:'usd',
            description:'Negative Comment',
            source:token
        });
    } catch (e) {
        return res.status(500).json({message: "An error occured!", error: e});
    }


    return res.status(200).json({message: "It works!"});
}