aerni / snipcart-webhooks
在 Laravel 中接收和处理 Snipcart Webhooks
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- laravel/framework: ^10.0
Requires (Dev)
- nunomaduro/collision: ^7.0
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
README
此包使您在 Laravel 应用程序中设置和使用 Snipcart Webhooks 变得非常简单。
安装
使用 Composer 安装此包。
composer require aerni/snipcart-webhooks
在您的 .env
文件中设置 Snipcart 的 Live Secret
和 Test Secret
。您可以在 Snipcart 控制台 中找到它们。
SNIPCART_LIVE_SECRET=******************************** SNIPCART_TEST_SECRET=********************************
您还可以发布此包的配置。
php artisan vendor:publish --provider="Aerni\SnipcartWebhooks\SnipcartWebhooksServiceProvider"
以下配置将发布到 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), ];
基本用法
- 注册 webhook 接收路由
- 创建事件监听器或订阅者来监听 Snipcart 事件。
路由
转到您的 Snipcart 控制台 并配置接收 webhook 请求的 URL。使用提供的 Route::snipcart
宏在 routes/web.php
中注册该路由。
Route::snipcart('webhook-receiving-url');
这将注册一个由本包提供的控制器的 POST
路由。该路由将不注册 VerifyCsrfToken
中间件,因为 Snipcart 无法获取 csrf-token。
事件 & 监听器
每个传入的 Snipcart webhook 请求都会触发其相应的 Laravel 事件。创建并注册一个或多个事件监听器或订阅者,然后进行您的操作。
概述
OrderCompleted
Aerni\SnipcartWebhooks\Events\OrderCompleted
每当完成新订单时都会触发。
public function handle(OrderCompleted $payload) { $payload; }
OrderStatusChanged
Aerni\SnipcartWebhooks\Events\OrderStatusChanged
每当订单状态发生变化时都会触发。
public function handle(OrderStatusChanged $payload) { $payload; }
OrderPaymentStatusChanged
Aerni\SnipcartWebhooks\Events\OrderPaymentStatusChanged
每当订单的支付状态发生变化时都会触发。
public function handle(OrderPaymentStatusChanged $payload) { $payload; }
OrderTrackingNumberChanged
Aerni\SnipcartWebhooks\Events\OrderTrackingNumberChanged
每当订单的跟踪号发生变化时都会触发。
public function handle(OrderTrackingNumberChanged $payload) { $payload; }
OrderRefundCreated
Aerni\SnipcartWebhooks\Events\OrderRefundCreated
每当订单被退款时都会触发。
public function handle(OrderRefundCreated $payload) { $payload; }
OrderNotificationCreated
Aerni\SnipcartWebhooks\Events\OrderNotificationCreated
每当向订单添加通知时都会触发。
public function handle(OrderNotificationCreated $payload) { $payload; }
SubscriptionCreated
Aerni\SnipcartWebhooks\Events\SubscriptionCreated
每当创建新订阅时都会触发。
public function handle(SubscriptionCreated $payload) { $payload; }
SubscriptionCancelled
Aerni\SnipcartWebhooks\Events\SubscriptionCancelled
每当订阅被取消时都会触发。
public function handle(SubscriptionCancelled $payload) { $payload; }
SubscriptionPaused
Aerni\SnipcartWebhooks\Events\SubscriptionPaused
每当订阅被暂停时都会触发。
public function handle(SubscriptionPaused $payload) { $payload; }
SubscriptionResumed
Aerni\SnipcartWebhooks\Events\SubscriptionResumed
每当订阅被恢复时都会触发。
public function handle(SubscriptionResumed $payload) { $payload; }
SubscriptionInvoiceCreated
Aerni\SnipcartWebhooks\Events\SubscriptionInvoiceCreated
每当向现有订阅添加新发票时都会触发。
public function handle(SubscriptionInvoiceCreated $payload) { $payload; }
InvalidSignature
Aerni\SnipcartWebhooks\Events\InvalidSignature
每当 webhook 请求的签名无效时都会触发。
public function handle(InvalidSignature $request) { $request; }
测试
按照以下方式运行测试
vendor/bin/phpunit