Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 27 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dillinghamio/7f3b776e0ff1007cc877d63d6aaee10d to your computer and use it in GitHub Desktop.
Save dillinghamio/7f3b776e0ff1007cc877d63d6aaee10d to your computer and use it in GitHub Desktop.
Per Team User Subscription in Laravel Spark

Per Team User Subscription in Laravel Spark

If you want the ability to charge a team owner based on how many members their team has, like $10/user/month, then you utilize the Laravel Cashier functionality of incrementing the quantity.

You listen for when a new team member is added and you increase the quantity of the subscription by the amount of users and also listen for when a team member is removed to downsize charges. - Not Braintree Compatible


Within EventServiceProvider.php
'Laravel\Spark\Events\Teams\TeamMemberAdded' => [
    'App\Listeners\UpdatePerUserCharge'
],

'Laravel\Spark\Events\Teams\TeamMemberRemoved' => [
    'App\Listeners\UpdatePerUserCharge'
],
And add a new listener
<?php

namespace App\Listeners;

class UpdatePerUserCharge
{
    public function handle($event)
    {
        $userCount = $event->team->users()->count();

        $event->team->subscription()->updateQuantity($userCount);
    }
}

Made by: @dillinghamio Find More Awesome Spark Stuff Here

@kmukku
Copy link

kmukku commented Jun 11, 2016

If you start with a fresh install there's no users or teams and this listener will choke registration process. I tried to add null checks with no luck...

@jamesgraham
Copy link

@kmukku you can just wrap the code in your listener like:

        if ($event->team->subscription() != null) {
            $event->team->subscription()->updateQuantity($userCount);
        }

@jfoxworth
Copy link

Accounts can have multiple teams, so how do you denote for which team the user is billed for? If I have a sass company where I want to charge a company $10 per user per month and then let that company create teams for various permissions issues, how do I decide which of those teams I am billing for?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment