puz / laravel-mailgun-webhooks
Handle Mailgun webhooks in a Laravel applications
Requires
- php: ^7.2
- illuminate/support: ^6.0
- spatie/laravel-webhook-client: ^2.2
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^8.4
This package is auto-updated.
Last update: 2024-10-25 06:15:59 UTC
README
A clone of spatie/laravel-stripe-webhooks
Mailgun can notify your application of events using webhooks. This package can help you handle those webhooks. Out of the box it will verify the Mailgun signature of all incoming requests. All valid calls will be logged to the database. You can easily define jobs or events that should be dispatched when specific events hit your app.
This package will not handle what should be done after the webhook request has been validated and the right job or event is called. You should still code up any work yourself.
Installation
You can install the package via composer:
composer require puz/laravel-mailgun-webhooks
The service provider will automatically register itself.
You must publish the config file with:
php artisan vendor:publish --provider="Puz\MailgunWebhooks\MailgunWebhooksServiceProvider" --tag="config"
In the webhook_secret
key of the config file you should add a valid webhook secret. You can find the secret used at the API security settings on the Mailgun dashboard.
Next, you must publish the migration with:
php artisan vendor:publish --provider="Spatie\WebhookClient\WebhookClientServiceProvider" --tag="migrations"
After the migration has been published you can create the webhook_calls
table by running the migrations:
php artisan migrate
Finally, take care of the routing: At each domain on your Mailgun account, you must add the callback URL as a webhook for each event you want to listen too. In the routes file of your app you must pass that route to Route::mailgunWebhooks
:
Route::mailgunWebhooks('webhook-route-configured-in-mailgun');
Behind the scenes this will register a POST
route to a controller provided by this package. Because Mailgun has no way of getting a csrf-token, you must add that route to the except
array of the VerifyCsrfToken
middleware:
protected $except = [ 'webhook-route-configured-in-mailgun', ];
Usage
This package is a complete copy of spatie/laravel-stripe-webhooks and you can read more on how it works over there. There is some great code snippets to see how you can use it
Testing
composer test
Credits
License
The MIT License (MIT). Please see License File for more information.