Как правильно создать "заряд" в библиотеке 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 результатов, а не большая помощь.
Ответы
Ответ 1
"Токен", который вы должны указать в качестве аргумента card
, фактически должен быть просто идентификатором токена (например, "tok_425dVa2eZvKYlo2CLCK8DNwq" ), а не полным объектом. Используя Checkout, ваше приложение никогда не видит номер карты.
Вам необходимо изменить:
var stripeToken = req.body.token;
в
var stripeToken = req.body.token.id;
Документация не очень понятна в этом параметре card
, но Ссылка на API-интерфейс Stripe > содержит пример.