简体   繁体   中英

Meteorjs: Stripe Checkout error

I keep getting error from server for the transaction in Stripe checkout, I follow this tutorial ( http://www.wsvincent.com/meteor-stripe-checkout/ )

Even though I keep getting exception, but the transaction is registered in Stripe, which shows that it is okay, but I just want to know what is this error is about?

Template.bookingPost2.events({
  "click #accept": function(event, template){
    event.preventDefault();

    StripeCheckout.open({
      key: 'public_key',
      amount: 5000, // this is equivalent to $50
      name: 'Meteor Tutorial',
      description: 'On how to use Stripe ($50.00)',
      panelLabel: 'Pay Now',
      token: function(res) {
        stripeToken = res.id;
        console.info(res);
        Meteor.call('chargeCard', stripeToken);
      }
    });

  }
});

Server side

Meteor.methods({
    'chargeCard': function(stripeToken) {
      check(stripeToken, String);
      var Stripe = StripeAPI('secret_key');

      Stripe.charges.create({
        source: stripeToken,
        amount: 5000, // this is equivalent to $50
        currency: 'usd'
      }, function(err, charge) {
        console.log(err, charge);
      });
    }
  });

Error msg

Exception while simulating the effect of invoking 'chargeCard' ReferenceError: StripeAPI is not defined
    at Meteor.methods.chargeCard (http://localhost:3000/lib/collections/stripeStuff.js?c2bc7ea1ef220be9a0448871dc837fcc30c64138:4:20)
    at http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:4269:25
    at _.extend.withValue (http://localhost:3000/packages/meteor.js?43b7958c1598803e94014f27f5f622b0bddc0aaf:955:17)
    at _.extend.apply (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:4260:54)
    at _.extend.call (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:4138:17)
    at TokenCallback.StripeCheckout.open.token [as fn] (http://localhost:3000/client/helper/booking2.js?49ebf774558be893cec6b35973bdb33ebfc76887:22:16)
    at TokenCallback.trigger (https://checkout.stripe.com/checkout.js:2:13749)
    at TokenCallback.__bind [as trigger] (https://checkout.stripe.com/checkout.js:2:13081)
    at IframeView.onToken (https://checkout.stripe.com/checkout.js:2:11783)
    at IframeView.closed (https://checkout.stripe.com/checkout.js:2:18825) ReferenceError: StripeAPI is not defined
    at Meteor.methods.chargeCard (http://localhost:3000/lib/collections/stripeStuff.js?c2bc7ea1ef220be9a0448871dc837fcc30c64138:4:20)
    at http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:4269:25
    at _.extend.withValue (http://localhost:3000/packages/meteor.js?43b7958c1598803e94014f27f5f622b0bddc0aaf:955:17)
    at _.extend.apply (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:4260:54)
    at _.extend.call (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:4138:17)
    at TokenCallback.StripeCheckout.open.token [as fn] (http://localhost:3000/client/helper/booking2.js?49ebf774558be893cec6b35973bdb33ebfc76887:22:16)
    at TokenCallback.trigger (https://checkout.stripe.com/checkout.js:2:13749)
    at TokenCallback.__bind [as trigger] (https://checkout.stripe.com/checkout.js:2:13081)
    at IframeView.onToken (https://checkout.stripe.com/checkout.js:2:11783)
    at IframeView.closed (https://checkout.stripe.com/checkout.js:2:18825)

It looks like your server side method is in a shared (client + server) directory. Make sure it is in a server folder or wrapped in an if (Meteor.isServer){} block. See if that does the trick.

(And note that your Stripe secret key should not be exposed on the client side).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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