如何通过Stripe API批量查询50位客户的付费订阅状态?
可以实现,具体方案如下
核心思路
通过Stripe的List Subscriptions API,结合过滤参数一次性查询指定客户的有效订阅:
- 用
status参数筛选符合你定义的“有效”订阅状态(比如active表示正常付费、trialing表示试用中,可按需组合) - 用
customer[in]参数传入50个客户ID的逗号分隔列表,精准定位目标客户的订阅数据
代码示例(Node.js)
const stripe = require('stripe')('你的Stripe密钥'); async function fetchValidCustomerSubscriptions(customerIds) { // 调用List Subscriptions接口,筛选有效订阅并指定目标客户 const result = await stripe.subscriptions.list({ status: 'active', // 可替换为你需要的状态,比如`status[in]=active,trialing`同时筛选多个状态 customer: { in: customerIds }, limit: 100, // 单次请求最多返回100条,足够覆盖50个客户的订阅数据 }); // 整理成客户ID对应订阅状态的映射 const subscriptionStatusMap = {}; // 先标记有有效订阅的客户 result.data.forEach(sub => { subscriptionStatusMap[sub.customer] = '有效付费订阅'; }); // 给无有效订阅的客户补全状态 customerIds.forEach(id => { if (!subscriptionStatusMap[id]) { subscriptionStatusMap[id] = '无有效订阅'; } }); return subscriptionStatusMap; } // 调用示例:传入50个客户ID数组 const targetCustomerIds = ['cus_XXX123', 'cus_YYY456', /* ... 其他客户ID */]; fetchValidCustomerSubscriptions(targetCustomerIds) .then(statusMap => console.log(statusMap)) .catch(err => console.error('查询失败:', err));
注意事项
- 状态定义:根据业务需求调整
status参数,Stripe订阅状态包括active、trialing、past_due(逾期未取消)等,可通过status[in]=状态1,状态2的格式同时筛选多个有效状态 - 分页处理:如果50个客户的订阅总数超过100条,需要通过
starting_after参数实现分页查询,循环获取所有数据 - 权限验证:确保你的Stripe API密钥拥有
read_subscriptions的权限,否则会返回权限错误
内容的提问来源于stack exchange,提问作者Yusuke
相关产品推荐
相关产品推荐

