Laravel Cashier - 订阅结束后如何执行一次功能?

时间:2015-11-17 04:13:40

标签: php laravel-5.1

我在我的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。我没有找到一个记录的方法来运行帐户过期的东西,所以我想我可能必须扩展这些方法并自己运行它,但我有点迷失了如何做到这一点。有人可以帮忙吗?

0 个答案:

没有答案