So my client has a discord bot that manages discord servers on behalf of the user. The relationship on the Laravel end is each
User model hasMany()
Server models. Each of those
Server models may either be on the free plan, or a paid subscription plan on a per-Server basis.
So a User might have 6 related Servers:
- 3 on the basic $0 plan
- 2 on the $5/mo advanced plan
- 1 on the $10/mo expert plan
In this case one entity (the User) is paying for all of these, but the discord bot will be querying our API on a per Server basis to check that particular Server’s current subscription plan.
So any recommendations on how to organize this with Cashier/Stripe.
Do I apply the billable trait to the
User model (since they are being billed), and then use something like the metadata field on newSubscription() to try and sort which server the the subscription actually applies to
'metadata' => [ 'server_id' => 'Some server id' ]
Or do I apply the billable trait to the
Server model (since they are the ones that have a particular subscription plan, and will be queried against). In which case will I still be able to create one billing portal for a user to manage all of their subscriptions?
Any advice would be much appreciated! Thanks much.