如何使用Stripe在一个动作中创build一个客户和一个卡?

我正尝试首次初始化客户。 我有一个他们注册的表格和一切,然后提交。 在客户端上,发生以下情况:

var cardValues = AutoForm.getFormValues('credit-card-form').insertDoc; Stripe.createToken(cardValues, function (err, token) { if (!err && token) { Meteor.call('Stripe.initializeCustomer', token); } }); 

在服务器端,我试图做这样的事情:

 Meteor.methods({ 'Stripe.initializeCustomer': function (token) { var Stripe = StripeAPI(process.env.STRIPE_KEY); // some validation here that nobody cares about Stripe.customers.create({ source: token }).then(function (customer) { return Stripe.customers.createCard(customer.id, { source: token }) }).catch(function (error) { // need to do something here }) } }); 

看来Stripe API不喜欢这个

未处理的拒绝错误:您不能多次使用条纹标记

是否有规范的方法来使多个请求在服务器上为单个令牌分条?

看起来你遇到了这个问题,因为你不小心试图重复使用一个令牌为客户创build一个新的卡,当你不知道你已经使用该令牌为该用户创build该卡。 使用存储卡创build客户实际上比您期望的要容易得多:使用令牌初始化客户对象时,Stripe API会继续并将该卡与新客户关联存储。 也就是说,您可以立即继续向您的客户收费,如下所示:

 Stripe.customers.create({ source: token.id }).then(function (customer) { Stripe.charge.create({ amount: 1000, currency: 'usd', customer: customer.id }); }); 

欲了解更多信息,我build议在https://support.stripe.com/questions/can-i-save-a-card-and-charge-it-later和https://stripe.com/上的条纹文档docs / api / node#create_customer 。

让我知道如果这解决了你的问题!