Stripe API:没有标识符X(stripe.charges.create)

节点/expression式相当新颖,我试图用Stripe 3.3.2和checkout.js来获得一个简单的虚拟电荷。 一旦结帐表单被提交,令牌回到后端没有问题; 使用该标记创build费用,但是,结果如下: 没有标识tok_xxxxxxxxxxxxxxxxxxxxxxxx

我在这里错过了什么?

/views/premium.mustache

<a id="subscribe" href="#">Pay with Card</a> <script> // Define handler to be called when Stripe returns a card token function onReceiveToken(token, args) { // Submit token to server so it can charge the card $.ajax({ url: '/premium/charge', type: 'POST', data: {   stripeToken: token   }   });   } // Configure Checkout var checkout = StripeCheckout.configure({ key: 'xx_xxxx_xxxxxxxxxxxxxxxxxxxx', token: onReceiveToken, image: '/images/logo/stripe.png', name: 'Test App', description: 'Premium Sounds', amount: 500 }); // Open Checkout when the link is clicked $('#subscribe').on('click', function() { checkout.open(); return false; }); </script> 

/routes/stripe/charge.js

 var dateUtils = require('date-utils'), config = require('../../../config/config.js'), stripe = require('stripe')(config.keys.stripe.test.secret_key), User = require('../../models/User'); module.exports = function(router, app, passport) { router.get('/premium/charge', function(req, res) { res.redirect('/premium'); }); router.post('/premium/charge', function(req, res) { var token = req.body.stripeToken.id, card = req.body.stripeToken.card.id; stripe.charges.create({ amount: 500, currency: 'USD', source: token, description: 'Dummy customer' }, function(err, charge) { if (err) { console.log(err); } else { console.log(charge); } }); }); } 

req.body

 { stripeToken: { id: 'tok_15jsAF2eZvKYlo2CmvgETnJg', livemode: 'false', created: '1427204031', used: 'false', object: 'token', type: 'card', card: { id: 'card_15jsAF2eZvKYlo2CdXDcaI0h', object: 'card', last4: '4242', brand: 'Visa', funding: 'credit', exp_month: '9', exp_year: '2018', country: 'US', name: 'sd@smm.com', address_line1: '', address_line2: '', address_city: '', address_state: '', address_zip: '', address_country: '', cvc_check: 'pass', address_line1_check: '', address_zip_check: '', dynamic_last4: '' }, email: 'sd@smm.com', verification_allowed: 'true', client_ip: '74.110.163.89' } } 

条纹响应

 { [Error: There is no token with ID tok_xxxxxxxxxxxxxxxxxx.] type: 'StripeInvalidRequest', stack: 'Error: There is no token with ID (node.js:442:13)', rawType: 'invalid_request_error', code: undefined, param: 'source', message: 'There is no token with ID tok_xxxxxxxxxxxxxxxxxx.', detail: undefined, raw: { type: 'invalid_request_error', message: 'There is no token with ID tok_xxxxxxxxxxxxxxxxxx.', param: 'source' } } 

条纹支持真棒 。 将这个标记为对未来绊倒你的人的正确答案。

99.9%的时间你看到这个错误,这是因为你没有用你的公钥创build令牌。 检查以确保它是正确的/设置的。