简体   繁体   English

Stripe API:没有ID为X的标记(stripe.charges.create)

[英]Stripe API: There is no token with ID X (stripe.charges.create)

Fairly new to node/express, and I'm trying to get a simple dummy charge working with Stripe 3.3.2 and checkout.js . 节点/快递相当新,我正在尝试使用Stripe 3.3.2checkout.js进行简单的虚拟充电。 Once the checkout form is submitted, the token makes its way back to the backend without issue; 提交结账表单后,令牌会毫无问题地返回后端; using that token to create a charge, however, results in the following: There is no token with ID tok_xxxxxxxxxxxxxxxxxxxxxxxx 但是,使用该令牌创建费用会导致以下结果: 没有ID为tok_xxxxxxxxxxxxxxxxxxxxxxxx的令牌

What am I missing here? 我在这里错过了什么?

/views/premium.mustache /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 /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 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' 
  } 
}

Stripe response 条纹响应

{ 
  [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' 
  } 
}

Stripe support is awesome . 条纹支持很棒 Will mark this as the correct answer for those of you who stumble onto this in the future. 对于那些将来偶然发现这一点的人来说,这将是正确的答案。

99.9% of the time you see this error it's because you aren't creating the token with your public key. 99.9%的时间您看到此错误是因为您没有使用公钥创建令牌。 Check to make sure it's correct/set. 检查以确保其正确/设置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM