digikraaft/laravel-paystack-webhooks

在 Laravel 应用中处理 Paystack 钩子

v2.1.1 2024-04-27 11:13 UTC

This package is auto-updated.

Last update: 2024-09-27 12:07:45 UTC


README

tests Build Status Scrutinizer Code Quality Code Intelligence Status License: MIT

Paystack 可以通过 webhooks 通知您的应用各种事件。此软件包可以帮助您处理这些钩子。它将自动验证所有传入请求,并确保它们来自 Paystack。默认情况下,通过服务提供程序配置了一个指向此软件包 webhook 控制器的路由。

请注意,此软件包将不会处理请求验证后的操作。您仍需编写相关代码。

有关 Paystack 事件 的更多详细信息,请在此处查看。

安装

您可以通过 composer 安装此软件包。

composer require digikraaft/laravel-paystack-webhooks

配置文件

Laravel Paystack Webhooks 软件包附带一个配置文件,以下是文件内容:

return [

    /*
    |--------------------------------------------------------------------------
    | Paystack Keys
    |--------------------------------------------------------------------------
    |
    | The Paystack publishable key and secret key. You can get these from your Paystack dashboard.
    |
    */

    'public_key' => env('PAYSTACK_PUBLIC_KEY'),

    'secret' => env('PAYSTACK_SECRET'),

    /*
   |--------------------------------------------------------------------------
   | Webhooks Path
   |--------------------------------------------------------------------------
   |
   | This is the base URI path where webhooks will be handled from.
   |
   | This should correspond to the webhooks URL set in your Paystack dashboard:
   | https://dashboard.paystack.com/#/settings/developer.
   |
   | If your webhook URL is https://domain.com/paystack/webhook/ then you should simply enter paystack here.
   |
   | Remember to also add this as an exception in your VerifyCsrfToken middleware.
   |
   | See the demo application linked on github to help you get started.
   |
   */
    'webhook_path' => env('PAYSTACK_WEBHOOK_PATH', 'paystack'),

];

您可以使用以下命令发布此配置文件:

php artisan vendor:publish --provider="Digikraaft\PaystackWebhooks\PaystackWebhooksServiceProvider" --tag="config"

API 密钥

您应该在 .env 文件中配置您的 Paystack 密钥。您可以从 Paystack 控制面板获取 Paystack API 密钥。

PAYSTACK_PUBLIC_KEY=your-paystack-public-key
PAYSTACK_SECRET=your-paystack-secret

处理 Paystack 钩子

Paystack 可以通过 webhooks 通知您的应用各种事件。此软件包可以帮助您处理这些钩子。它将自动验证所有传入请求,并确保它们来自 Paystack。默认情况下,通过服务提供程序配置了一个指向此软件包 webhook 控制器的路由。

请注意,此软件包将不会处理请求验证后的操作。您仍需编写相关代码。您只需要扩展控制器以处理您喜欢的任何 webhook 事件。例如,如果您想处理 charge.success 事件,您应该将 handleChargeSuccess 方法添加到控制器中。

<?php

namespace App\Http\Controllers;

use Digikraaft\PaystackWebhooks\Http\Controllers\WebhooksController as PaystackWebhooksController;

class WebhookController extends PaystackWebhooksController
{
    /**
     * Handle charge success.
     *
     * @param  array  $payload
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function handleChargeSuccess($payload)
    {
        // Handle The Event
    }
}

为确保您的应用可以处理 Paystack 钩子,请确保在 Paystack 控制面板中配置 webhook URL。默认情况下,此软件包的 webhook 控制器监听 /paystack/webhook

接下来,在您的 routes/web.php 文件中定义一个路由到您的控制器。

Route::post(
    'paystack/webhook',
    '\App\Http\Controllers\WebhookController@handleWebhook'
);

钩子 & CSRF 保护

由于 Paystack 钩子需要绕过 Laravel 的 CSRF 保护,请确保在 VerifyCsrfToken 中间件中将 URI 列为异常,或将路由放在 web 中间件组之外。

protected $except = [
    'paystack/*',
];

当接收到 webhook 时,此软件包会触发 Digikraaft\PaystackWebhooks\Events\WebhookReceived 事件,当 webhook 被您处理时,会触发 Digikraaft\PaystackWebhooks\Events\WebhookHandled 事件。这两个事件都包含 Paystack 钩子的完整有效负载。

有关 Paystack 事件的详细信息,请在此处查看 这里

验证 webhook 签名

为了方便起见,此软件包自动包含一个中间件,该中间件验证传入的 Paystack webhook 请求是否有效。

测试

使用以下命令运行您的测试:

composer test

更多精彩内容

请在此处查看更多免费内容:这里

变更日志

有关最近更改的详细信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件 dev@digitalkraaft.com 而不是使用问题跟踪器来报告。

版权信息

许可协议

MIT许可协议(MIT)。请参阅许可文件以获取更多信息。