如何使用Stripe和Node.js创建费用

时间:2016-04-21 16:30:54

标签: javascript node.js express stripe-payments

我有Stripe的问题我没有在回调中得到任何东西......

这是我的服务器端:

Stripe.charges.create(
                        {
                            amount: totalCostUSD,
                            currency: 'usd',
                            source: req.body.stripeToken,
                            description: 'Example Charge',
                            metadata: {'order_id': '6735'}
                        }, function (err, charge) {
                    if (err && err.type === "StripeCardError") {
                        return res
                                .status(status.BAD_REQUEST)
                                .json({error: err.toString()});
                    }

                    if (err) {
                        console.log(err);
                        return res
                                .status(status.INTERNAL_SERVER_ERROR)
                                .json({error: err.toString()});
                    }

                    req.user.data.cart = [];

                    req.user.save(function () {
                        return res.json({id: charge.id});
                    });
                });

从我的客户端,我尝试发送这样的请求:

superagent
   .post(url)
   .send({
   stripeToken: {
            number: '4242424242424242',
            exp_month: 12,
            exp_year: 2017,
            cvc: '123'
               }
                 })
   .end(function (error, res) {
         console.log(error);
        console.log(res.text);
     });

我尝试在服务器和客户端登录我的回调,但它没有返回任何内容......任何人都知道什么是问题?

2 个答案:

答案 0 :(得分:1)

你能够制作任何日志吗?我会尝试抛出一些登录信息,以确切了解可能出现的问题。

console.log("Ready to create a charge!");

Stripe.charges.create({
    amount: totalCostUSD,
    currency: 'usd',
    source: req.body.stripeToken,
    description: 'Example Charge',
    metadata: {'order_id': '6735'}
  }, function (err, charge) {

    console.log("Entered ChargeCreate Callback Function.");

    if (err && err.type === "StripeCardError") {
      console.log("Encountered Stripe error.");
      return res.status(status.BAD_REQUEST).json({
        error: err.toString()
      });
    }

    if (err) {
      console.log("Encountered unknown error.");
      return res.status(status.INTERNAL_SERVER_ERROR).json({
        error: err.toString()
      });
    }

    req.user.data.cart = [];

    req.user.save(function () {
      console.log("Entered UserSave Callback Function.");
      return res.json({id: charge.id});
    });
  }
);

如果您没有看到任何日志,您是否可能无法从Node.js服务器查看stdOut?你在本地运行吗?

答案 1 :(得分:0)

我发现问题是什么,我的单元测试仅限于在2000毫秒内执行,之后失败......

但是为了引用Strip api需要更多的时间来执行......

所以为了延长执行期,我把它放在测试中:

it("Can chackout", function (done) {

        this.timeout(15000);
        setTimeout(done, 15000);