Laravel Cashier 和 stripe:如何将订阅绑定到资源

Laravel Cashier and stripe: how to tie subscriptions to resources

我正在尝试设置基于订阅的服务,其中拥有计费帐户的公司可以为其公司注册的每个单独场所创建一个订阅。这个想法是,使用用户模型的公司所有者具有可计费特征,并且可以为每个场所创建订阅。公司可以根据需要创建任意数量的场地,但必须为他们为公司注册的每个场地单独付费。场地可以拥有的订阅类型是每月、每年或试用。

我想将订阅附加到资源上,以便我知道该地点适用于哪个订阅。公司和场所都有独立的模型,并通过许多关系链接起来。

结构如下所示

Company Owner (user model, has billable trait)

     |

Company (model)

     | Venue 1 (model) - Monthly subscription 

     | Venue 2 (model) - Yearly subscription

     | Venue 3 (model) - Yearly subscription

     | etc ... 

我正在考虑将 venue_id 列添加到 Cashier 附带的 subscriptions table 中。我不知道是否可以将多个场地订阅附加到同一个计费用户,因为我不知道 Cashier 是否支持这一点。如果不是,将可计费特征附加到场地模型并只向场地收费会更好吗?

Laravel Cashier 仍然不支持每个实体的多个订阅,也不支持多计划订阅。自从 Stripe 允许后,在 Cashier 的未来版本中已经进行了讨论和一些拉取请求。

https://github.com/laravel/cashier/issues/397

https://github.com/laravel/cashier/pull/398

https://github.com/laravel/cashier/pull/420

尝试使用 Stripe 的官方 PHP SDK 进行 API 调用。

您可以尝试使用 Catalyst 的 Stripe 包,有或没有直接集成 Laravel,但您需要构建数据库模型以获得概览并将其绑定到计费实体。

或者您可以使用他们的付费套餐 - Stripe - Billing - Laravel

https://cartalyst.com/manual/stripe/2.0

https://cartalyst.com/manual/stripe-laravel/10.x

https://cartalyst.com/manual/stripe-billing-laravel/10.x

如果您想自己构建数据库模型,您应该至少创建 tables 订阅、计划和发票。

在订阅 table 中,您应该有一个用于计费实体 ID 的列,在本例中为公司,并且 venue_id 与属于公司的地点相关。

除此之外,要更好地了解如何构建其余的 table,请查看 Cashier's Stripe 相关的 table 结构,并查看订阅对象发票对象 等 API 的 Stripe 综合文档:

https://stripe.com/docs/api https://stripe.com/docs

https://stripe.com/docs/api