将Stripe JS与MEAN堆栈应用程序集成

时间:2016-09-15 20:17:31

标签: angularjs mongodb stripe-payments

我试图在我的MEAN堆栈应用程序中集成条带。它没有与Stripe通信来接收令牌。我不确定为什么。

我的index.html页面中有条带源代码,用于我的角度应用程序。

没有与Stripe通信接收令牌,console.log永远不会填充,所以我知道它由于某种原因没有与Stripe通信,但是相同的源代码在独立应用程序中与Stripe通信。我也相信它在发送服务器端时失败了。我试图将此请求从端口3000发送到端口8082.

然后我在我的应用程序中的另一个HTML页面中有以下脚本:

    Stripe.setPublishableKey('pk_test_******************');

    var $btn = $('#submit');
    $btn.on('click', function() {
        $btn.prop('disabled', true);
        $btn.button('progress');

        var cardNum = $('#card-num').val();
        var cardExp = $('#card-exp').val().split('/');
        var cardCVC = $('#card-cvc').val();

        // First submit the card information to Stripe to get back a token
        console.log("starting stripe token");
        Stripe.card.createToken({
            number: cardNum,
            exp_month: cardExp[0],
            exp_year: cardExp[1],
            cvc: cardCVC
        }, function(status, response) {
            var $form = $('#form');
            var token = response.id;
            console.log(response.id);

            // Save the token into a hidden input field
            $form.append($('<input type="hidden" name="stripeToken" />').val(token));

            // Now submit the form to our server so it can make the charge against the token
            $.post("http://localhost:8082/charge", $form.get(0), function(res) {
                console.log("response from charge: " + res);
            });
            // All done!
            $btn.addClass('btn-success').removeClass('btn-primary');
            $btn.button('success');
            setTimeout(function() {
                $('#checkout').modal('hide');
            }, 250);
        });

        return false;
    });

我看到启动条带令牌的console.log响应,但它实际上并没有与stripe通信。

然后这是我的服务器端代码:

app.post('/charge', function(req, res) {
    // Connect to the db
    MongoClient.connect("mongodb://localhost:27017/meanAuth", function(err, db) {
      if(!err) {
        console.log("We are connected");
      }
    });
    var stripeToken = req.body.stripeToken;
    var amount = 1000;

    stripe.charges.create({
        card: stripeToken,
        currency: 'usd',
        amount: amount
    },
    function(err, charge) {
        if (err) {
            res.send(500, err);
        } else {
            res.send(204);
        }
    });
});

我这样做的原因是我尝试将请求中的用户信息发送到服务器端代码,以便服务器可以更新Mongo数据库中的值。

我需要帮助!提前致谢

0 个答案:

没有答案