【问题标题】:Which Stripe subscriptions have expired哪些 Stripe 订阅已过期
【发布时间】:2015-03-17 10:19:18
【问题描述】:

我正在尝试编写一个 ruby​​ rails rake 任务来列出所有订阅已过期的条带客户?我查看了条带 api,但看不到如何检索此信息。

亲切的问候

古迪佩

【问题讨论】:

  • 据我所知,除非您遍历每个客户并检查该客户可能拥有的每个订阅的状态,否则您无法在条带中执行此操作。在您的情况下,客户有一个或多个订阅?
  • 感谢您的快速更新,我认为我们的客户每人只有一个订阅。

标签: ruby-on-rails ruby stripe-payments


【解决方案1】:

我能想到的最好的办法是从每个客户的条带中获取客户订阅状态:

2.1.1 :082 > a =Stripe::Customer.all.collect{|c| c.subscriptions.collect{|s| [c.id, s.status]}}.reject(&:empty?)
 => [[["cus_5VT4xC8uCoVIV5", "trialing"]], [["cus_5VT4Oh4AX74vqN", "trialing"]], [["cus_5VT4GFL6pPvsmH", "trialing"]], [["cus_5VT4uePgqT4Rrz", "trialing"]], [["cus_5VT4F8c8iK9cG8", "trialing"]], [["cus_5VT4zO0iMjoKsu", "trialing"]], [["cus_5VT4XQkAKCmRmg", "trialing"]]] 
2.1.1 :083 > 

在我的例子中,他们都是演示客户,所以他们都有试用状态,接下来你应该循环保存订阅状态等于 active 或 trial 的客户并保存到变量中,然后使用客户 ID从 stripe 你可以在你的应用中找到用户。

附言如果你需要它作为 json (丑陋,但是......你能做什么):

2.1.1 :111 > b = a.map{|r| "#{r[0][0]}, #{r[0][1]}"}.join(', ').split(', ')
 => ["cus_5VT4xC8uCoVIV5", "trialing", "cus_5VT4Oh4AX74vqN", "trialing", "cus_5VT4GFL6pPvsmH", "trialing", "cus_5VT4uePgqT4Rrz", "trialing", "cus_5VT4F8c8iK9cG8", "trialing", "cus_5VT4zO0iMjoKsu", "trialing", "cus_5VT4XQkAKCmRmg", "trialing"] 
2.1.1 :112 > h = Hash[*b]
 => {"cus_5VT4xC8uCoVIV5"=>"trialing", "cus_5VT4Oh4AX74vqN"=>"trialing", "cus_5VT4GFL6pPvsmH"=>"trialing", "cus_5VT4uePgqT4Rrz"=>"trialing", "cus_5VT4F8c8iK9cG8"=>"trialing", "cus_5VT4zO0iMjoKsu"=>"trialing", "cus_5VT4XQkAKCmRmg"=>"trialing"} 
2.1.1 :113 > 

更新

https://stripe.com/docs/api#pagination 使用 starting_after 和 ending_before 参数来浏览条纹客户记录。

【讨论】:

  • 感谢您的精彩更新。我以为我需要做的就是找到状态为“未付款”的客户,并且当付款失败时,“未付款”状态会自动设置为条带,这是正确的吗?另外我有 100 多个客户,如何使用 Stripe::Customer.all 来获得 100 多个客户?
  • 实际上要遍历所有客户,我找到此链接stackoverflow.com/questions/19544897/…
  • 查看答案中的更新。客户也没有paid或unaid之类的东西,这些属性用于发票,在所有尝试付款后,订阅变为inactive.
  • 再次感谢精彩的更新,我正在努力使用参数 Stripe::Customer.all(limit: limit, starting_after: last_customer) 将上述命令更新为逐页,我如何找到使用收集时的 last_customer id
  • 当您加载前 100 个客户时,您会将他们保存到一个变量中,例如 customer_list,因此您需要从此列表中将最后一个客户保存到 last_customer 变量中并使用 customer_list.last 并使用它为您的下一个请求。
猜你喜欢
  • 2017-08-20
  • 2019-02-28
  • 2021-04-22
  • 2016-07-06
  • 2018-10-20
  • 2017-07-03
  • 2017-12-27
  • 2019-10-15
  • 2018-02-18
相关资源
最近更新 更多