如何在Stripe中的已连接帐户上创建订阅计划?

时间:2016-08-02 18:48:58

标签: parse-platform http-post httprequest stripe-payments

我正在尝试在条带连接管理帐户上创建订阅计划。我尝试了以下代码:

Parse.Cloud.define("createSubscription", function (request, response) {
 Parse.Cloud.httpRequest({
    method:"POST",
    url: "https://" + "sk_test_****************" + ':@' + "api.stripe.com/v1" + "/accounts/" + 'acct_**********' + "/plans/",  
    headers: {
    'Authorization': 'Basic ********************'
  },
  body: {
    'amount': 2000,
    'interval': 'month',
    'name': 'JPGB Plan',
    'currency': 'usd',
    'id':'first Plan',
  },
        success: function(httpResponse) {
        response.success(httpResponse.text);
        },
        error: function(httpResponse) {
        response.error('Request failed with response code' + httpResponse.status);
        }
    });                 
});

但是这失败了404(请求的资源不存在)错误。

这就是我做到的。

  Parse.Cloud.define("createAccountPlan", function (request, response) {
 Parse.Cloud.httpRequest({
    method:"POST",
    url: "https://" + "sk_test_****************" + ':@' + "api.stripe.com/v1/plans",  
    headers: {
    'Stripe-Account': request.params.accountId
    },
    body: {
        'amount': request.params.amount,
        'interval': 'day',
        'interval_count':request.params.intervalCount,
        'name': request.params.planName,
        'currency': 'usd',
        'id':request.params.planId,
    },
    success: function(httpResponse) {
    response.success(httpResponse.text);
    },
    error: function(httpResponse) {
    response.error('Request failed with response code' + httpResponse.status);
    }
});                 
});

2 个答案:

答案 0 :(得分:0)

我认为你应该做的不是执行直接的http请求来条带化REST API,而是使用strip node-js SDK来完成它并为你做更多事情。

要在解析服务器中实现它,您需要执行以下步骤:

  1. 在您的parse-server项目中输入以下命令
  2. npm install stripe
    

    这会将条带安装到您的解析服务器项目

    1. 在您的云代码中需要条带节点SDK
    2. var stripe = require('stripe')(' your stripe API key ');

      1. 调用您需要的条带对象下可用的创建订阅功能
      2.     stripe.subscriptions.create({
              customer: "{YOUR_CUSTOMER_ID}",
              plan: "{PLAN_IDENTIFIER}"
            }, function(err, subscription) {
                // asynchronously called
              }
            );

        然后,如果您需要对条带进行额外的服务调用,则可以以相同的方式执行此操作。

        您可以使用条带运行的所有服务都可以在here

        中找到
          

        当你可以使用SDK时总是更好,因为SDK会让你的   生活更容易,正在为你背后处理所有的事情   场景,通常由提供他们的公司维护(在   这种情况下它的条纹)

答案 1 :(得分:0)

来自the Stripe connect docs

通过Stripe-Account标头进行身份验证

  

首选的第一个身份验证选项是使用您(平台帐户)的秘密密钥并传递一个Stripe-Account标头,该标头标识正在为其发出请求的连接帐户。

(展示客户的演示)

  

Stripe的所有库均基于每个请求支持这种身份验证方式

这里的条带化文档有些微妙,但这意味着您可以使用相同的技术为关联帐户上的客户进行订购。您也可以使用它来为该关联帐户制作产品和计划。以及您代表关联客户要做的其他任何事情:

(async function(){
  let subscription = await stripe.subscriptions.create({
    customer: "someCustomerID",
    plan: "planID"
  },{
    stripe_account: "connectedStripeAccountID"
  });
})();