我在我的laravel应用程序上使用Cashier。它有一种验证用户是否订阅的简单方法:
$user->subscribed();
收银员在用户表上存储一个字段" stripe_active"检查用户是否具有有效订阅。现在,我尝试做一些简单的事情,但在文档中找不到。
当用户订阅到期时,我想运行一个功能,该功能将禁用用户帐户上的某些内容并将其保存到数据库中。我不想在每次登录时检查并运行它,我希望它只在帐户过期时触发一次。
所以我查看了Cashier的StripeGateway文件,该文件具有以下功能:
public function cancel($atPeriodEnd = true)
{
$customer = $this->getStripeCustomer();
if ($customer->subscription) {
if ($atPeriodEnd) {
$this->billable->setSubscriptionEndDate(
Carbon::createFromTimestamp($this->getSubscriptionEndTimestamp($customer))
);
}
$customer->cancelSubscription(['at_period_end' => $atPeriodEnd]);
}
if ($atPeriodEnd) {
$this->billable->setStripeIsActive(false)->saveBillableInstance();
} else {
$this->billable->setSubscriptionEndDate(Carbon::now());
$this->billable->deactivateStripe()->saveBillableInstance();
}
}
现在看来,当帐户被取消时,会运行两个功能 - cancelSubscription和deactivateStripe。我没有找到一个记录的方法来运行帐户过期的东西,所以我想我可能必须扩展这些方法并自己运行它,但我有点迷失了如何做到这一点。有人可以帮忙吗?