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.