如何在Node.js中通过客户邮箱检索Stripe订阅并查看状态
Stripe通过客户邮箱查询订阅状态的实现方案
该需求可正常实现,无需提前存储订阅ID,按两步操作即可:
- 第一步:调用Stripe客户列表接口,通过邮箱参数匹配获取对应客户ID
stripe.subscriptions.retrieve接口仅支持传入订阅ID查询单条订阅,不支持过滤参数,因此不能直接传入邮箱查询,需要先通过邮箱拿到关联的客户ID - 第二步:调用订阅列表接口,传入第一步获取的客户ID,即可查询该客户名下的所有订阅,也可直接传入状态参数过滤活跃订阅
完整实现代码
const stripe = require('stripe')('你的Stripe密钥'); async function getActiveSubscriptionByEmail(email) { // 1. 通过邮箱检索匹配的客户 const customerList = await stripe.customers.list({ email: email, limit: 1 }); // 无匹配客户直接返回空 if (customerList.data.length === 0) { return []; } const targetCustomerId = customerList.data[0].id; // 2. 检索该客户名下的活跃订阅 const activeSubscriptions = await stripe.subscriptions.list({ customer: targetCustomerId, status: 'active', // 直接过滤活跃状态订阅,无需手动筛选 limit: 5 }); return activeSubscriptions.data; } // 调用示例 const subscriptions = await getActiveSubscriptionByEmail('contact@Inderatech.com'); res.send(subscriptions);
注意:如果你的业务允许同一个邮箱绑定多个Stripe客户,可调整第一步的
limit参数,遍历所有匹配到的客户分别查询订阅即可。
内容的提问来源于stack exchange,提问作者gianlps
相关产品推荐
相关产品推荐

