3

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

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

谁能提供任何关于这是否可能的见解?

4

4 回答 4

8

我发现这行得通:(对不起,这是 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;
于 2017-11-29T09:37:24.600 回答
3

没有直接要求这样做,但它很容易完成。

“列出所有客户”API 调用(Stripe.Net 中StripeCustomerService的方法)返回每个客户的完整 JSON 对象,包括他们的订阅和计划信息。您可以轻松地遍历它并建立您的订阅者数量列表。List()

请注意,如果您有很多用户,则必须分块检索客户列表。API 调用的上限为 100 条记录(默认为 10 条)并接受偏移量。为了方便遍历列表,countStripe 的 JSON 响应中的属性是客户记录的总数

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

  1. 通过以下方式请求 100 条记录List()
  2. 计算所需的额外请求数
  3. 处理最初的 100 条记录
  4. 通过 请求 100 条记录List(),偏移 100 * 迭代
  5. 处理当前 100 条记录
  6. 重复 4 & 5 直到记录用完
于 2013-10-23T15:56:30.373 回答
1

我了解您正在为 .NET 实现此功能,但这里有一个示例 Ruby 实现:

limit = 100
last_customer = nil

while limit == 100 do 
  customers = Stripe::Customer.list(limit: limit, starting_after: last_customer)

    # Do stuff to with customers
    # the list is in customers.data

    # save the last customer to know the offset
    last_customer = customers.data.last.id 
  end
end
于 2014-08-12T20:12:35.367 回答
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

于 2017-10-26T04:00:35.453 回答