【问题标题】:How to pass the subscription to other users using Laravel Cashier如何使用 Laravel Cashier 将订阅传递给其他用户
【发布时间】:2019-01-21 04:59:56
【问题描述】:

我正在使用 Laravel PHP 框架构建一个项目。我使用 Laravel Auth 进行身份验证,使用 Laravel Cashier 作为 Stripe 的接口。

我怎样才能完成以下场景: 一个用户订阅了我的服务。他可以使用他的设置页面添加在他手下工作的用户。我希望他手下的所有工作都属于他的订阅范围。

例如,当主用户的订阅已过期时,我希望所有子用户都收到过期订阅警报。当主用户重新订阅时,我希望所有子用户都能登录。

我不想要完整的代码,我只想知道如何处理。

所有用户信息都存储在“用户”表中(这是用于身份验证的默认表)。

订阅信息存储在“订阅”表(即 Cashier 的默认表)中。

感谢任何帮助。

谢谢。

【问题讨论】:

  • 使用团队并将订阅与团队关联,然后在团队成员登录时使用中间件检查团队是否有有效订阅。
  • 嗨,乔,感谢您的回复。我必须创建其他数据库表吗?如果是这样,我应该如何将其绑定回订阅?请记住,所有用户(主用户和子用户)都从同一个数据库表(用户)登录。

标签: php laravel stripe-payments laravel-cashier laravel-authentication


【解决方案1】:

您可以这样做的一种方法是为子用户提供状态。例如。 1 = 启用,0 = 禁用

然后你可以使用stripe webhook支付失败或订阅过期将所有子用户状态设置为0。然后使用webhook成功支付或重新订阅将子用户状态设置回1。这是一个列表条纹 webhook 事件 - https://stripe.com/docs/api#event_types

然后在您的 Auth/LoginController.php 中,您可以通过添加以下内容来覆盖凭证方法:

protected function credentials(\Illuminate\Http\Request $request)
{
    $credentials = $request->only($this->username(), ‘password’);
    return array_add($credentials, ‘status’, ‘1’);
}

希望这能给你足够的开始。

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 2016-03-14
    • 2020-07-25
    • 2014-08-04
    • 2022-01-26
    • 2016-03-04
    • 2015-05-01
    • 2021-04-02
    • 2019-08-01
    相关资源
    最近更新 更多