我的代码很简单:
if($user->subscribed('main')){
$user->subscription('main')->cancel();
}
我收到以下答复:
Stripe \ Error \ InvalidRequest
No such subscription: sub_EQTvxKjit2Ak6i
实际上该订阅先前已被取消,因此它不应给出true
响应。
我尝试返回$user->subscribed('main')
,结果返回为true
。
此用户有其他订阅,但“ main”未激活。
我想念什么吗?
答案 0 :(得分:1)
$user->subscribed()
仅检查数据库的订阅状态-根本不查询Stripe API。但是,当您尝试取消该订阅时,它将查询API。
因此,如果您的数据库与Stripe中的数据不同步,则可能会产生这样的错误。也许您的数据库已从Stripe测试模式进行订阅,但是您正在查询Stripe生产API?反之亦然?
答案 1 :(得分:0)
如果您阅读了 Billable 特征,那么您将在其中找到此功能
public function subscribed($subscription = 'default', $plan = null)
{
$subscription = $this->subscription($subscription);
if (is_null($subscription)) {
return false;
}
if (is_null($plan)) {
return $subscription->valid();
}
return $subscription->valid() &&
$subscription->stripe_plan === $plan;
}
此功能仅检查 subscriptions 表中的订阅记录是否存在。 根据上述功能,如果不存在订阅,则它将返回false。
确保您没有做任何错误。