Laravel Cashier Stripe Setup


Example

Initial Setup

To use Stripe for handling payments we need to add the following to the composer.json then run composer update:

"laravel/cashier": "~6.0"

The following line then needs to be added to config/app.php, the service provider:

Laravel\Cashier\CashierServiceProvider

Databse Setup

In order to use cashier we need to configure the databases, if a users table does not already exist we need to create one and we also need to create a subscriptions table. The following example amends an existing users table. See Eloquent Models for more information about models.

To use cashier create a new migration and add the following which will achieve the above:

// Adjust users table

Schema::table('users', function ($table) {
    $table->string('stripe_id')->nullable();
    $table->string('card_brand')->nullable();
    $table->string('card_last_four')->nullable();
    $table->timestamp('trial_ends_at')->nullable();
});

//Create subscriptions table

Schema::create('subscriptions', function ($table) {
    $table->increments('id');
    $table->integer('user_id');
    $table->string('name');
    $table->string('stripe_id');
    $table->string('stripe_plan');
    $table->integer('quantity');
    $table->timestamp('trial_ends_at')->nullable();
    $table->timestamp('ends_at')->nullable();
    $table->timestamps();
});

We then need to run php artisan migrate to update our database.


Model Setup

We then have to add the billable trait to the User model found in app/User.php and change it to the following:

use Laravel\Cashier\Billable;

class User extends Authenticatable
{
    use Billable;
}

Stripe Keys

In order to ensure that we ares ending the money to our own Stripe account we have to set it up in the config/services.php file by adding the following line:

'stripe' => [
    'model'  => App\User::class,
    'secret' => env('STRIPE_SECRET'),
],

Replacing the STRIPE_SECRET with your own stripe secret key.


After completing this Cashier and Strip is setup so you can continue with setting up subscriptions.