检索订阅条带node.js的状态
我有这个:
const customers = await stripe.customers.list({
email: 'contact@Inderatech.com',
});
var customerID = customers.data[0].id;
const subscriptions = await stripe.subscriptions.list({
customer: customerID
});
console.log(subscriptions)
console.log(subscriptions.data[0].status)
它应该做的是检索订户的customerid
,然后尝试转到下一个函数,根据customerid检索订阅的status
。这不管用。它说了两件事。
它只输出:
{object:‘list’,data:[],has_more:false,url:‘/v1/SUBSCRIPTIONS’}
(node:30746) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'status' of undefined
我知道这是假的,因为当我这样记录它时:
console.log(subscriptions)
它返回超过30行的Subsribers数据,包括活动状态。如下所示:
{
id: 'sub_id',
object: 'subscription',
application_fee_percent: null,
automatic_tax: [Object],
billing_cycle_anchor: 1617410065,
billing_thresholds: null,
cancel_at: null,
cancel_at_period_end: false,
canceled_at: null,
collection_method: 'charge_automatically',
created: 1617410065,
current_period_end: 1635899665,
current_period_start: 1633221265,
customer: 'cus_JEQIfxhiRu7qJh',
days_until_due: null,
default_payment_method: 'pm_1IbxRUIPT89VeZtCxyEA8SMu',
default_source: null,
default_tax_rates: [],
discount: null,
ended_at: null,
items: [Object],
latest_invoice: 'in_1JgIfuIPT89VeZtC2jsKCHRp',
livemode: false,
metadata: {},
next_pending_invoice_item_invoice: null,
pause_collection: null,
payment_settings: [Object],
pending_invoice_item_interval: null,
pending_setup_intent: null,
pending_update: null,
plan: [Object],
quantity: 1,
schedule: null,
start_date: 1617410065,
status: 'active',
tax_percent: null,
transfer_data: null,
trial_end: null,
trial_start: null
},
如何从此访问状态或任何其他参数?
编辑 为更清楚起见,我将显示以下内容:
执行此操作时:
const subscriptions = await stripe.subscriptions.list({
});
console.log(subscriptions)
它返回整个大输出(如上所示)。
当我执行此操作时:
const subscriptions = await stripe.subscriptions.list({
customer: customerID
});
console.log(subscriptions)
它只显示以下内容:
{ object: 'list', data: [], has_more: false, url: '/v1/subscriptions' }
当我尝试记录customerid
比较的订阅状态时,我发现状态不是返回数据的一部分。
解决方案
该错误消息与您所说得到的输出一致。如果列表调用没有返回任何订阅,subscriptions.data[0]
将是未定义的,因此没有要获取status
的对象。因为您没有使用customer
过滤的呼叫会正确返回订阅,所以只要您传入的客户有未取消的订阅(subscriptions.list
默认情况下只返回未取消的订阅[1]),与过滤的呼叫就会正常工作。
听起来这可能是因为您正在筛选的特定客户ID造成的。如果您尝试在没有过滤的情况下列出订阅时看到的客户ID之一(如cus_JEQIfxhiRu7qJh
),您的代码可以工作吗?对于您在第一个示例中列出的客户,我会在仪表板中仔细检查该客户的页面,看看他们是否有应该由该列表调用返回的未取消订阅。
[1]https://stripe.com/docs/api/subscriptions/list
相关文章