繁体   English   中英

检索订阅条带 node.js 的状态

[英]retrieve status of subscription stripe 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 检索 subcsription 的status 这不起作用。 它说 2 件事。

  1. 它只是输出:

    { 对象:'列表',数据:[],has_more:假,网址:'/v1/subscriptions'}

  2. (node:30746) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'status' of undefined

我知道这是错误的,因为当我像这样记录它时:

console.log(subscriptions)

它返回 30 多行订阅者数据,包括活动状态。 像这样:

{
      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的订阅状态时,我得到它说状态不是返回数据的一部分。

因此,如果您发布的输出是从条带 API 获得的所有输出,那么访问状态字段的正确方法就是使用

console.log(subscriptions[0].status);

该错误消息与您所说的输出一致。 如果列表调用不返回任何订阅,则subscriptions.data[0]将是未定义的,因此没有要获取status的对象。 因为您没有使用customer过滤器的调用正确返回订阅,所以只要您传入的客户具有尚未取消的订阅(默认情况下, subscriptions.list仅返回未取消的subscriptions.list [1]),带有过滤器的调用应该可以工作。

听起来这可能是因为您正在过滤的特定客户 ID。 如果您尝试在没有过滤器的情况下列出订阅时看到的客户 ID 之一(例如cus_JEQIfxhiRu7qJh ),您的代码是否有效? 对于您在第一个示例中列出的客户,我会在您的仪表板中仔细检查该客户的页面,以查看他们是否有应由该列表调用返回的未取消订阅。

[1] https://stripe.com/docs/api/subscriptions/list

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM