【问题标题】:Stripe API: There is no token with ID X (stripe.charges.create)Stripe API:没有 ID X 的令牌(stripe.charges.create)
【发布时间】:2015-05-28 00:11:19
【问题描述】:

对 node/express 相当陌生,我正在尝试使用 Stripe 3.3.2checkout.js 进行简单的虚拟充电。提交结帐表单后,令牌会毫无问题地返回后端;但是,使用该令牌创建费用会导致以下结果:没有 ID 为 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' 
  } 
}

【问题讨论】:

    标签: javascript node.js express token stripe-payments


    【解决方案1】:

    条纹支持很棒。对于将来偶然发现此问题的人,将其标记为正确答案。

    99.9% 的时间您看到此错误是因为您没有使用您的公钥创建令牌。检查以确保它正确/设置。

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 2014-04-30
      • 2019-05-06
      • 2018-11-26
      • 1970-01-01
      相关资源
      最近更新 更多