我正在使用Stripe.net库来对Stripe API进行调用。
我想获得各种计划的订阅者总数,但我不确定这是否可以使用当前的API和/或Stripe.NET库。
任何人都可以提供任何有关这是否可行的见解吗?
答案 0 :(得分:3)
没有直接的要求,但这很容易实现。
“列出所有客户”API调用(StripeCustomerService
的{{3}})为每个客户返回完整的JSON对象,包括他们的订阅和计划信息。您可以轻松地对其进行迭代并构建订阅者计数列表。
请注意,如果您拥有大量用户,则必须以块的形式检索客户列表。 API调用的上限为100条记录(默认值为10)并接受偏移量。为了便于遍历列表,Stripe的JSON响应中的count
属性是总个客户记录数。
因此,对于基本大纲,您的策略将是:
List()
List()
请求100条记录,偏移100 *迭代答案 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
找到完整的信息