This package makes it super easy to setup and work with Snipcart webhooks in your Laravel application.
Install the package using Composer.
composer require aerni/snipcart-webhooks
Set your Snipcart Live Secret
and Test Secret
in your .env
. You can find them in your Snipcart Dashboard.
SNIPCART_LIVE_SECRET=********************************
SNIPCART_TEST_SECRET=********************************
You may also publish the config of the package.
php artisan vendor:publish --provider="Aerni\SnipcartWebhooks\SnipcartWebhooksServiceProvider"
The following config will be published to config/snipcart-webhooks.php
.
return [
/*
|--------------------------------------------------------------------------
| Snipcart API Keys
|--------------------------------------------------------------------------
|
| Your secret Snipcart API Keys for the Live and Test Environment.
|
*/
'live_secret' => env('SNIPCART_LIVE_SECRET'),
'test_secret' => env('SNIPCART_TEST_SECRET'),
/*
|--------------------------------------------------------------------------
| Test Mode
|--------------------------------------------------------------------------
|
| Set this to 'false' to authenticate using the 'live_secret'.
| You probably want to do this in production only.
|
*/
'test_mode' => env('SNIPCART_TEST_MODE', true),
];
- Register a webhook receiving route
- Create Event Listeners or Subscribers to listen for Snipcart Events.
Go to your Snipcart Dashboard and configure the URL where you want to receive the webhook requests. Register that route in routes/web.php
using the provided Route::snipcart
macro.
Route::snipcart('webhook-receiving-url');
This will register a POST
route to a controller provided by this package. The route will be registered without the VerifyCsrfToken
middleware, because Snipcart has no way of getting a csrf-token.
Each incoming Snipcart webhook request will trigger its corresponding Laravel Event. Create and register one or more Event Listeners or Subscribers and do your magic.
Aerni\SnipcartWebhooks\Events\OrderCompleted
Dispatched whenever a new order is completed.
public function handle(OrderCompleted $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\OrderStatusChanged
Dispatched whenever the status of an order changes.
public function handle(OrderStatusChanged $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\OrderPaymentStatusChanged
Dispatched whenever the payment status of an order changes.
public function handle(OrderPaymentStatusChanged $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\OrderTrackingNumberChanged
Dispatched whenever the tracking number of an order changes.
public function handle(OrderTrackingNumberChanged $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\OrderRefundCreated
Dispatched whenever an order is refunded.
public function handle(OrderRefundCreated $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\OrderNotificationCreated
Dispatched whenever a notification is added to an order.
public function handle(OrderNotificationCreated $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\SubscriptionCreated
Dispatched whenever a new subscription is created.
public function handle(SubscriptionCreated $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\SubscriptionCancelled
Dispatched whenever a subscription is cancelled.
public function handle(SubscriptionCancelled $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\SubscriptionPaused
Dispatched whenever a subscription is paused.
public function handle(SubscriptionPaused $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\SubscriptionResumed
Dispatched whenever a subscription is resumed.
public function handle(SubscriptionResumed $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\SubscriptionInvoiceCreated
Dispatched whenever a new invoice is added to an existing subscription.
public function handle(SubscriptionInvoiceCreated $payload)
{
$payload;
}
Aerni\SnipcartWebhooks\Events\InvalidSignature
Dispatched whenever the signature of the webhook request is invalid.
public function handle(InvalidSignature $request)
{
$request;
}
Run the tests like this:
vendor/bin/phpunit