首页 > 解决方案 > 网站未反映 Stripe 客户/订阅更改

问题描述

我有一个使用 Laravel 框架构建的网站,该框架使用 Stripe 来处理订阅付款。当用户通过我的网站订阅计划时,此行出现在“订阅”数据库表中:

在此处输入图像描述

通过我的网站取消订阅时,该ends_at列将填充当前订阅期结束且不会续订的日期:

在此处输入图像描述

这是期望的行为,但是,当付款方式无效时,Stripe 会自动取消网站外的订阅。由于订阅在 Stripe 端自动取消,我的网站不会反映更改,并且ends_at数据库列将无限期地具有值NULL,允许用户继续免费使用网站的高级功能。

这是我目前检查用户在我的网站上是否有有效订阅计划的方式:

public function index()
{
    $user = auth()->user();

    if (!$user->subscribed('plan') && $user->posts->count() > 0) {
        foreach ($user->posts as $post) {
            $post->update(['status' => 'unpublished']);
        }
    }

    return view('dashboard');
}

这是用户在我的网站上取消订阅的方式:

public function cancel()
{
    $user = auth()->user();

    $user->subscription('plan')->cancel();

    return redirect()->back()->with("success", "Subscription canceled.");
}

如何解决此问题,以便我的网站自动检查 Stripe 以了解客户的订阅状态?

标签: laraveldatabasestripe-paymentssubscriptionlaravel-cashier

解决方案


推荐阅读