laravel - 网站未反映 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 以了解客户的订阅状态?
解决方案
推荐阅读
- woocommerce - 如何在与该供应商相关的每个产品中显示 Woocommerce 产品供应商的个人资料图片
- php - 如何在 PHP 中上传到 App Engine 中的存储桶?
- python - 在一个类中组合python中的不同过程
- neo4j.rb - Neo4j.rb 在同一个查询中给出两种类型的对象(随机)
- python-2.7 - 如何从 Python Scrapy 中的子 url 获取数据
- c# - 将第一行设置为列名并调整列宽
- json - HttpClient.post 成功但没有向 json 发送数据
- haskell - Haskell 中的容器类型类
- tcl - TCL 获取二级变量的值
- java - 如何将字符串存储到android中的文件