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

Laravel Cashier and stripe: how to tie subscriptions to resources

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

我想将订阅附加到资源上,这样我就知道该场地是针对哪个订阅的。公司和场地都有不同的模型,并通过多方关系联系在一起。

结构是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
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 表中。我不知道是否可以将多个场地订阅附加到同一个计费用户,因为我不知道 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 直接集成,但您需要构建 DB 模型才能获得概览并将其绑定到计费实体。

或者你可以使用他们的付费包 - 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

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

在订阅表中,您应该有一个用于计费实体 ID 的列,在本例中为 Company,以及与属于该公司的 Venue 相关的 place_id。

除此之外,为了更好地了解如何构建其余表,请查看 Cashier\\'s Stripe 相关表结构,并查看 Subscription 对象、Invoice 对象等。在 Stripe 的 API 综合文档中:

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

https://stripe.com/docs/api