我正在尝试设置 Stripe 付款但遇到错误:
TypeError: 无法读取未定义的属性“id”
位于/Users/andreykondratyuk/websites/tallllly/src/server/app.js:56:37
位于 Layer.handle [作为 handle_request]...
形式:
<form stripe-form="stripeCallback" name="checkoutForm">
<input ng-model="number" placeholder="Card Number" payments-format="card" payments-validate="card" name="card" />
<input ng-model="expiry" placeholder="Expiration" payments-format="expiry" payments-validate="expiry" name="expiry" />
<input ng-model="cvc" placeholder="CVC" payments-format="cvc" payments-validate="cvc" name="cvc" />
<button type="submit">Submit</button>
<div ng-if="checkoutForm.card.$invalid"> Error: invalid card number! </div>
</form>
在 Controller 中
// Stripe Response Handler
$scope.stripeCallback = function (code, result) {
console.log(result);
if (result.error) {
window.alert('it failed! error: ' + result.error.message);
} else {
// Simple POST request example (passing data) :
$http.post('/charge', result)
.success(function(data, status, headers, config) {
alert(data);
})
.error(function(data, status, headers, config) {
alert(data);
});
}
};
在后端app.js
app.post('/charge', function(req, res) {
console.log(req);
var stripeToken = req.body.token.id;
var charge = stripe.charges.create({
amount: 10000, // amount in cents, again
currency: "usd",
card: stripeToken,
description: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="197c74787075597c74787075377a7674" rel="noreferrer noopener nofollow">[email protected]</a>"
}, function(err, charge) {
if (err && err.type === 'StripeCardError') {
console.log(JSON.stringify(err, null, 2));
}
res.send("completed payment!");
});
});
我做错了什么?
最佳答案
token ID 在响应正文中为 id
,stripe.js 调用没有返回 token 对象,请检查 docs .
所以在 Node 中你的行:
var stripeToken = req.body.token.id;
应该是:
var stripeToken = req.body.id;
关于javascript - 如何将 strip token 从 AngularJS 传递到 NodeJS 或修复错误 NodeJS 帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26926435/