digikraaft / laravel-paystack-webhooks
在 Laravel 应用中处理 Paystack 钩子
Requires
- php: ^8.0|^8.1|^8.2
- guzzlehttp/guzzle: ^7.3
- laravel/framework: ^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.20
README
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)。请参阅许可文件以获取更多信息。