esensdesign/snipcart-webhooks

[已分叉] 在 Laravel 中接收和使用 Snipcart webhooks

dev-main 2024-05-29 10:28 UTC

This package is not auto-updated.

Last update: 2024-10-03 10:19:18 UTC


README

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

安装

使用 Composer 安装此包。

composer require esensdesign/snipcart-webhooks

.env 中设置您的 Snipcart Live SecretTest Secret。您可以在 Snipcart 控制台 中找到它们。

SNIPCART_LIVE_SECRET=********************************
SNIPCART_TEST_SECRET=********************************

您还可以发布此包的配置。

php artisan vendor:publish --provider="Esensdesign\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 请求都会触发其对应的事件。创建并注册一个或多个事件监听器或订阅者,进行您的操作。

概述

OrderCompleted

Esensdesign\SnipcartWebhooks\Events\OrderCompleted

每当新的订单完成时都会触发。

public function handle(OrderCompleted $payload)
{
    $payload;
}

OrderStatusChanged

Esensdesign\SnipcartWebhooks\Events\OrderStatusChanged

每当订单的状态改变时都会触发。

public function handle(OrderStatusChanged $payload)
{
    $payload;
}

OrderPaymentStatusChanged

Esensdesign\SnipcartWebhooks\Events\OrderPaymentStatusChanged

每当订单的支付状态改变时都会触发。

public function handle(OrderPaymentStatusChanged $payload)
{
    $payload;
}

OrderTrackingNumberChanged

Esensdesign\SnipcartWebhooks\Events\OrderTrackingNumberChanged

每当订单的跟踪号码改变时都会触发。

public function handle(OrderTrackingNumberChanged $payload)
{
    $payload;
}

OrderRefundCreated

Esensdesign\SnipcartWebhooks\Events\OrderRefundCreated

每当订单被退款时都会触发。

public function handle(OrderRefundCreated $payload)
{
    $payload;
}

OrderNotificationCreated

Esensdesign\SnipcartWebhooks\Events\OrderNotificationCreated

每当向订单添加通知时都会触发。

public function handle(OrderNotificationCreated $payload)
{
    $payload;
}

SubscriptionCreated

Esensdesign\SnipcartWebhooks\Events\SubscriptionCreated

每当创建新的订阅时都会触发。

public function handle(SubscriptionCreated $payload)
{
    $payload;
}

SubscriptionCancelled

Esensdesign\SnipcartWebhooks\Events\SubscriptionCancelled

每当订阅被取消时都会触发。

public function handle(SubscriptionCancelled $payload)
{
    $payload;
}

SubscriptionPaused

Esensdesign\SnipcartWebhooks\Events\SubscriptionPaused

每当订阅被暂停时都会触发。

public function handle(SubscriptionPaused $payload)
{
    $payload;
}

SubscriptionResumed

Esensdesign\SnipcartWebhooks\Events\SubscriptionResumed

每当订阅恢复时都会触发。

public function handle(SubscriptionResumed $payload)
{
    $payload;
}

SubscriptionInvoiceCreated

Esensdesign\SnipcartWebhooks\Events\SubscriptionInvoiceCreated

每当向现有订阅添加新的发票时都会触发。

public function handle(SubscriptionInvoiceCreated $payload)
{
    $payload;
}

InvalidSignature

Esensdesign\SnipcartWebhooks\Events\InvalidSignature

每当 webhook 请求的签名无效时都会触发。

public function handle(InvalidSignature $request)
{
    $request;
}

测试

按如下方式运行测试

vendor/bin/phpunit