正确的方法来使用带有流星的oauth的Stripe的stripe_account标头

时间:2015-06-29 18:46:26

标签: javascript meteor stripe-payments stripe-connect

我正在尝试使用Stripe Connect构建基于Meteor的平台。我想使用"首选" Stripe的身份验证方法(通过Stripe-Account标头https://stripe.com/docs/connect/authentication进行身份验证),以便我可以代表我的用户创建计划和订阅客户。我无法让它发挥作用。我尝试使用第二个params对象,类似于文档中的例子:

var stripeplancreate = Meteor.wrapAsync(Stripe.plans.create, Stripe.plans);
var plan = stripeplancreate({
  amount: prod.price,
  interval: prod.interv,
  name: prod.name,
  currency: prod.curr,
  id: prod.id+"-"+prod.price+"-"+prod.curr+"-"+prod.interv,
  metadata: { prodId: prod._id, orgId: org._id },
  statement_descriptor: prod.descr
},{stripe_account: org.stripe_user_id});

但是我在调​​用方法' createStripeProduct'时得到了#34;异常。错误:Stripe:未知参数([object Object])。你的意思是传递一个选项对象?见https://github.com/stripe/stripe-node/wiki/Passing-Options。"这似乎没有准确反映问题,但促使我尝试在params对象本身添加stripe_account:

var stripeplancreate = Meteor.wrapAsync(Stripe.plans.create, Stripe.plans);
var plan = stripeplancreate({
  amount: prod.price,
  (...)
  statement_descriptor: prod.descr,
  stripe_account: org.stripe_user_id
});

然后我收到以下错误:"异常调用方法' createStripeProduct'错误:收到未知参数:stripe_account"

有什么想法吗?有没有人设法使用Stripe Connect stripe_account身份验证与Meteor一起工作,尤其是Meteor.wrapAsync(...)?

2 个答案:

答案 0 :(得分:0)

这应该适用于wrapAsync,但是请在此处查看我的答案,了解wrapAsync - Wrapping Stripe create customer callbacks in Fibers in Meteor可能存在的问题:

以下是关于wrapAsync的精彩视频:https://www.eventedmind.com/feed/meteor-meteor-wrapasync

var createStripePlanAsync = function(shoppingCartObject, callback){

    stripe.plans.create({
      amount: shoppingCartObject.plan.totalPrice,
      interval: shoppingCartObject.plan.interval,
      name: shoppingCartObject.plan.planName,
      currency: "usd",
      id: shoppingCartObject.plan.sku //this ID needs to be unique!
    }, function(err, plan) {
      // asynchronously called
        callback(err, plan);
    });

};

var createStripePlanSync = Meteor.wrapAsync(createStripePlanAsync);

var myShoppingCart = {
    customerInfo: {
        name: "Igor Trout"
    },
    plan: {
        totalPrice: 5000,
        interval: "month",
        name: "Set Sail For Fail Plan",
        sku: "062015SSFF"
    }
};

// Creates the plan in your Stripe Account

createStripePlanSync(myShoppingCart);

稍后,当您订阅客户计划时,您只需通过首次创建计划时提供的id计划来参考该计划。

答案 1 :(得分:0)

经过多次尝试,现在,我只是设法使用条带同步软件包而不是“普通”的一个+ wrapAsync。

try{
  var plan = Stripe.plans.create({
    amount: prod.price,
    ...
  },{stripe_account: org.stripe_user_id});
}catch(error){
  // ... process error
}