aerni/snipcart-webhooks

在 Laravel 中接收和处理 Snipcart Webhooks

v1.2.0 2023-05-19 21:42 UTC

This package is auto-updated.

Last update: 2024-09-20 00:32:21 UTC


README

此包使您在 Laravel 应用程序中设置和使用 Snipcart Webhooks 变得非常简单。

安装

使用 Composer 安装此包。

composer require aerni/snipcart-webhooks

在您的 .env 文件中设置 Snipcart 的 Live SecretTest 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),

];

基本用法

  1. 注册 webhook 接收路由
  2. 创建事件监听器或订阅者来监听 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