在Rails中,我尝试实施控制器操作,允许客户更改他们订阅的计划。根据Stripe文档,可以按如下方式完成:
customer = Stripe::Customer.retrieve("CUSTOMER_ID")
subscription = customer.subscriptions.retrieve("SUBSCRIPTION_ID")
subscription.plan = "premium_monthly"
subscription.save
我将每个客户的ID保存在我的数据库的用户表中,但我仍然坚持如何根据客户ID检索客户的订阅ID。这个项目中的每个客户只有一个订阅,我如何根据他们的客户ID来提取这个?
答案 0 :(得分:10)
relevant part of the Stripe API reference表明,在检索客户时,您将可以访问包含您可以访问订阅列表的网址的订阅属性。
但是,on creating a subscription,Stripe会使用订阅ID返回订阅。我建议将它作为客户模型的属性存储在您的数据库中(如果它们只有一个订阅),或者我使用的方法是在我的数据库中有一个Subscription模型,它存储一些经常访问的数据和避免过多地ping Stripe API。
答案 1 :(得分:3)
“检索您将有权访问订阅的客户”
2019 年的 API 就是这种情况。
<块引用>自 API 版本 2019-08-14 → 2020-08-27 以来的更改默认情况下不再包含客户的订阅属性。您可以展开列表,但出于性能原因,除非需要,否则我们建议不要这样做。
见https://stripe.com/docs/api/expanding_objects
示例代码(PHP):
$stripe = new \Stripe\StripeClient(YOURSTRIPE_SECRETKEY);
$stripe_customer = $stripe->customers->retrieve($payerid, [ 'expand' => ['subscriptions'] ]);
$stripe_status = $stripe_customer->subscriptions->data[0]->status;
我仍在尝试找出“推荐的方法”,希望能回来报告。