在 Rails 中,我正在尝试实现一个控制器操作,该操作将允许客户更改他们订阅的计划。根据 Stripe 文档,可以按如下方式完成此操作:
customer = Stripe::Customer.retrieve("CUSTOMER_ID")
subscription = customer.subscriptions.retrieve("SUBSCRIPTION_ID")
subscription.plan = "premium_monthly"
subscription.save
我将每个客户的 ID 保存在数据库的用户表中,但我不知道如何在给定客户 ID 的情况下检索客户的订阅 ID。该项目中的每个客户只有一个订阅,鉴于他们的客户 ID,我如何才能提取该订阅?
“检索客户后您将有权访问订阅”
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;
我仍在努力找出“推荐的方式”,并希望能报告回来。
您不需要获取客户对象来检索订阅。只需使用静态 Subscription.search API,如下所示:
final SubscriptionSearchResult searchResult
= Subscription.search(SubscriptionSearchParams.builder()
.setQuery("customer:'PUT_CUSTOMER_ID_HERE'")
.build());
...
final List<Subscription> subscriptions = searchResult.getData();