是否可以从Stripe API获取计划的订阅者数量?

时间:2013-10-23 14:43:49

标签: c# .net stripe-payments stripe.net

我正在使用Stripe.net库来对Stripe API进行调用。

我想获得各种计划的订阅者总数,但我不确定这是否可以使用当前的API和/或Stripe.NET库。

任何人都可以提供任何有关这是否可行的见解吗?

4 个答案:

答案 0 :(得分:3)

没有直接的要求,但这很容易实现。

“列出所有客户”API调用(StripeCustomerService的{​​{3}})为每个客户返回完整的JSON对象,包括他们的订阅和计划信息。您可以轻松地对其进行迭代并构建订阅者计数列表。

请注意,如果您拥有大量用户,则必须以块的形式检索客户列表。 API调用的上限为100条记录(默认值为10)并接受偏移量。为了便于遍历列表,Stripe的JSON响应中的count属性是个客户记录数。

因此,对于基本大纲,您的策略将是:

  1. 通过List()
  2. 申请100条记录
  3. 计算所需的额外请求数
  4. 处理最初的100条记录
  5. 通过List()请求100条记录,偏移100 *迭代
  6. 处理当前的100条记录
  7. 重复4& 5,直到记录用尽

答案 1 :(得分:2)

我发现这有效:(抱歉,这是PHP)

$subscriptions = \Stripe\Subscription::all(array('limit' => 1, 'plan' => 'plan-name-here', 'status' => 'trialing|active|past_due|unpaid|all', 'include[]' => 'total_count'));
echo $subscriptions->total_count;

答案 2 :(得分:0)

我知道您正在为.NET实现此功能,但这是一个示例Ruby实现:

limit = 100
iterations = (Stripe::Customer.all.count / limit).round # round up to the next whole iteration
last_customer = nil

iterations.times do 
  Stripe::Customer.all(limit: limit, starting_after: last_customer).each do |customer|

    # Do stuff to customer var

    last_customer = customer # save the last customer to know the offset
  end
end

答案 3 :(得分:0)

如果您正在使用Stripe.net软件包,则可以使用StripeSubscriptionService获取计划的订阅列表。因此,您不需要遍历所有客户。

var planService = new StripePlanService();
var planItems = planService.List(new StripeListOptions()
{
  Limit = 10 // maximum plans to be returned
});

foreach(var planItem in planItems)
{
  var subscriptionService = new StripeSubscriptionService();
  var stripeSubscriptions = subscriptionService.List(new StripeSubscriptionListOptions
  {
    PlanId = planItem.Id
  });

  // Do your calculation here
}

他们现在在他们的网站上有更好的.NET文档。您可以在https://stripe.com/docs/api/dotnet

找到完整的信息