Подтвердить что ты не робот

Как правильно создать "заряд" в библиотеке Stripe nodejs?

Client

Я использую специальную интеграцию Stripe Checkout - https://stripe.com/docs/checkout#integration-custom - следующим образом:

  var handler = StripeCheckout.configure({
    key: 'YOUR_KEY_HERE',
    image: 'images/logo-48px.png',
    token: function(token, args) {
        $.post("http://localhost:3000/charge", {token: token}, function(res) {
            console.log("response from charge: " + res);
        })
    }
  })

Использование пользовательского вопреки прост - Как изменить настройку Stripe Checkout вместо отправки запроса AJAX? - потому что простой не позволяет мне делать вызов AJAX.

Сервер

https://stripe.com/docs/tutorials/charges

У вас есть токен для данных вашей кредитной карты пользователя, что теперь? Теперь вы берете их деньги.

app.post('/charge', function(req, res) {
    console.log(JSON.stringify(req.body, null, 2));
    var stripeToken = req.body.token;

    var charge = stripe.charges.create({
        amount: 0005, // amount in cents, again
        currency: "usd",
        card: stripeToken,
        description: "[email protected]"
    }, function(err, charge) {
        if (err && err.type === 'StripeCardError') {
            console.log(JSON.stringify(err, null, 2));
        }
        res.send("completed payment!")
    });
});

Вот ошибка:

enter image description here

Мне кажется, что у меня есть last4, exp_month, exp_year, но по какой-то причине у меня нет number. Любые предложения/подсказки/идеи?

Googling для "The card object must have a value for 'number'" - 12 результатов, а не большая помощь.

4b9b3361

Ответ 1

"Токен", который вы должны указать в качестве аргумента card, фактически должен быть просто идентификатором токена (например, "tok_425dVa2eZvKYlo2CLCK8DNwq" ), а не полным объектом. Используя Checkout, ваше приложение никогда не видит номер карты.

Вам необходимо изменить:

var stripeToken = req.body.token;

в

var stripeToken = req.body.token.id;

Документация не очень понятна в этом параметре card, но Ссылка на API-интерфейс Stripe > содержит пример.