esensdesign / snipcart-webhooks
[Forked] Receive and work with Snipcart webhooks in Laravel
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.5
- laravel/framework: ^11.0
Requires (Dev)
- nunomaduro/collision: ^7.0
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2025-06-12 13:28:59 UTC
README
This package makes it super easy to setup and work with Snipcart webhooks in your Laravel application.
Installation
Install the package using Composer.
composer require esensdesign/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="Esensdesign\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), ];
Basic Usage
- Register a webhook receiving route
- Create Event Listeners or Subscribers to listen for Snipcart Events.
Routing
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.
Events & Listeners
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.
Overview
OrderCompleted
Esensdesign\SnipcartWebhooks\Events\OrderCompleted
Dispatched whenever a new order is completed.
public function handle(OrderCompleted $payload) { $payload; }
OrderStatusChanged
Esensdesign\SnipcartWebhooks\Events\OrderStatusChanged
Dispatched whenever the status of an order changes.
public function handle(OrderStatusChanged $payload) { $payload; }
OrderPaymentStatusChanged
Esensdesign\SnipcartWebhooks\Events\OrderPaymentStatusChanged
Dispatched whenever the payment status of an order changes.
public function handle(OrderPaymentStatusChanged $payload) { $payload; }
OrderTrackingNumberChanged
Esensdesign\SnipcartWebhooks\Events\OrderTrackingNumberChanged
Dispatched whenever the tracking number of an order changes.
public function handle(OrderTrackingNumberChanged $payload) { $payload; }
OrderRefundCreated
Esensdesign\SnipcartWebhooks\Events\OrderRefundCreated
Dispatched whenever an order is refunded.
public function handle(OrderRefundCreated $payload) { $payload; }
OrderNotificationCreated
Esensdesign\SnipcartWebhooks\Events\OrderNotificationCreated
Dispatched whenever a notification is added to an order.
public function handle(OrderNotificationCreated $payload) { $payload; }
SubscriptionCreated
Esensdesign\SnipcartWebhooks\Events\SubscriptionCreated
Dispatched whenever a new subscription is created.
public function handle(SubscriptionCreated $payload) { $payload; }
SubscriptionCancelled
Esensdesign\SnipcartWebhooks\Events\SubscriptionCancelled
Dispatched whenever a subscription is cancelled.
public function handle(SubscriptionCancelled $payload) { $payload; }
SubscriptionPaused
Esensdesign\SnipcartWebhooks\Events\SubscriptionPaused
Dispatched whenever a subscription is paused.
public function handle(SubscriptionPaused $payload) { $payload; }
SubscriptionResumed
Esensdesign\SnipcartWebhooks\Events\SubscriptionResumed
Dispatched whenever a subscription is resumed.
public function handle(SubscriptionResumed $payload) { $payload; }
SubscriptionInvoiceCreated
Esensdesign\SnipcartWebhooks\Events\SubscriptionInvoiceCreated
Dispatched whenever a new invoice is added to an existing subscription.
public function handle(SubscriptionInvoiceCreated $payload) { $payload; }
InvalidSignature
Esensdesign\SnipcartWebhooks\Events\InvalidSignature
Dispatched whenever the signature of the webhook request is invalid.
public function handle(InvalidSignature $request) { $request; }
Tests
Run the tests like this:
vendor/bin/phpunit