elegantly / laravel-stripe
Stripe and Stripe Connect for your Laravel App
Fund package maintenance!
Elegantly
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.16
- spatie/laravel-stripe-webhooks: ^3.7
- stripe/stripe-php: ^13.0|^14.0|^15.0|^16.0
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1
- orchestra/testbench: ^8.8|^9.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
README
A simple way to attach Stripe Customer and Account to your Model in Laravel.
- Stripe webhooks ready to use out of the box
- Access Stripe php sdk easily
Installation
You can install the package via composer:
composer require elegantly/laravel-stripe
You should publish and run the migrations with:
php artisan vendor:publish --tag="stripe-migrations" php artisan vendor:publish --provider="Spatie\WebhookClient\WebhookClientServiceProvider" --tag="webhook-client-migrations" php artisan migrate
You can publish the config file with:
php artisan vendor:publish --tag="stripe-config"
This is the contents of the published config file:
use Elegantly\Stripe\Commands\CreateStripeWebhooksCommand; use Elegantly\Stripe\ModelRepository; return [ 'models' => [ 'accounts' => [ \App\Models\User::class, ], 'customers' => [ \App\Models\User::class, ], 'repository' => ModelRepository::class, ], 'cache' => [ 'accounts' => true, 'customers' => false, ], 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), 'version' => env('STRIPE_VERSION', '2024-04-10'), /** * This is only used for the CreateStripeWebhooksCommand * You can add more webhooks directly from your Stripe Dashboard */ 'webhooks' => [ [ 'url' => '/webhooks/stripe', 'connect' => false, 'enabled_events' => [ ...CreateStripeWebhooksCommand::DEFAULT_WEBHOOKS_EVENTS, ], ], ], ];
Example
Creating and retreiving Stripe Account:
$user->createStripeAccount(); $user->getStripeAccount();
Creating and retreiving Stripe Customer:
$user->createStripeCustomer(); $user->getStripeCustomer();
Prepare your model
Setup your database
This package simply rely on columns you have to add to any Model having a stripe customer or account. To do so, we provide a mirgation that will automatically add the required columns to your models. To configure what models are related to stripe, you must edit the configs.
Add the right trait
Add HasStripeCustomer
trait to your Model:
class Organization extends Model { use HasStripeCustomer; // ... }
Configuring Webhooks
This package comes the command stripe:create-webhooks
, it will create and configure webhooks on Stripe dashboard for you.
All you need to do is edit the webhooks and the endpoints you want to enable in the config file.
Edit your config
For example you could configure two different webhooks with different routes and endpoints like so:
return [ // configs ... /** * This is only used for the CreateStripeWebhooksCommand * You can add more webhooks directly from your Stripe Dashboard */ 'webhooks' => [ [ 'url' => '/stripe/webhook/account', 'connect' => false, 'enabled_events' => [ ...CreateStripeWebhooksCommand::DEFAULT_WEBHOOKS_EVENTS, 'checkout.session.expired', 'checkout.session.completed', 'checkout.session.async_payment_succeeded', 'checkout.session.async_payment_failed', ], ], [ 'url' => '/stripe/webhook/connect', 'connect' => true, 'enabled_events' => [ ...CreateStripeWebhooksCommand::DEFAULT_WEBHOOKS_EVENTS, ], ], ], ];
Run the command
Now that you are happy with the configs , you just have to run:
php artisan stripe:create-webhooks
Activate the webhooks from Stripe
All the webhooks configured by this command are disabled by default to prevent unexpected behaviour. When you are ready, just activate them from your Stripe Dashboard.
Listen to Stripe events in your App
Now that Stripe actually send webhooks to your app, you can listen to them from EventServiceProvider
.
This package rely on the great spatie/laravel-stripe-webhooks
package.
You must follow their documentation to setup your listeners.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.