benjaminbowles / gocardless-laravel
GoCardless Pro PHP 客户端包集成到 Laravel。
Requires
- php: >=7.1.3
- gocardless/gocardless-pro: ^4.0
- illuminate/support: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ~7.0
This package is auto-updated.
Last update: 2024-09-05 00:27:12 UTC
README
GoCardless Pro PHP 客户端包集成到 Laravel。
此包旨在提供一个简单、可扩展且易于维护的方法,将 GoCardless 集成到您的 Laravel 项目中。
它提供了一个 Facade,用于包装 GoCardless PHP 客户端,并提供了一种处理 GoCardless 发送的 webhooks 的简便方法。这是按照 Spatie 使用的步骤进行的,他们的 Stripe Laravel Webhooks 包。
安装
使用 composer 获取包
composer require benjaminbowles/gocardless-laravel
1. 如果您使用 Laravel >5.5,则包将自动发现,对于旧版本,请在您的 config/app.php 文件中添加服务提供者。
2. 发布配置文件
$ php artisan vendor:publish --provider="Benjaminbowles\Gocardless\GocardlessServiceProvider"
这将发布配置文件和迁移文件。
3. 查看配置文件
config/gocardless.php
并将您的 GoCardless API 令牌和环境添加到 .env
文件中。
4. 发布迁移后,您可以运行迁移以创建 gocardless_webhooks_table
5. 该包提供了一个 Macro 路由(gocardlessWebhooks
)。您可以在应用程序的路由文件中创建一个路由。这将成为 GoCardless 发送 webhooks 的端点,您应该在 GoCardless 控制台中注册此 webhook 端点。
Route::gocardlessWebhooks('gocardless-webhook-endpoint');
这将注册一个到该包提供的控制器的 POST
路由。您应将路由添加到 VerifyCsrfToken
中间件的 except
数组中。
protected $except = [ 'gocardless-webhook-endpoint', ];
使用方法
一旦包正确安装,您就可以使用 Gocardless
Facade 访问 GoCardless PHP 客户端的函数。这些函数的文档可以在这里找到: Gocardless PHP 客户端文档
如果您在项目中使用 GoCardless,您可能会使用 webhooks 来处理异步支付状态。此包提供了一个处理 webhooks 的简便方法。
GoCardless 会向您发送带有事件的 webhooks。这些事件将包含您的 GoCardless 资源更新。
此包将验证请求的签名,如果有效。除非发生严重错误,即使 webhook 中的某些事件失败,控制器也会向 GoCardless 返回 200
响应。这可以防止 GoCardless 对端点进行重复尝试。
如果事件处理失败,异常将被保存到数据库中的 gocardless_webhook_calls
表中,您可以在那里找到失败的事件。
此包提供了两种处理 webhook 请求的方式
- 使用作业
- 使用事件
使用作业
您可以在 config\gocardless.php
中找到一个作业数组。
您可以将任何作业注册到 gocardless 事件。来自 GoCardless 的事件引用一个资源 resource_type
和一个 action
。为了将作业注册到操作,您应该使用键 {resource_type}_{action}
添加它。
'jobs' => [ // '{resource_type}_{action} => path/to/job::class, 'payments_created' => App\Jobs\PaymentConfirmed::class, ]
为了避免超时,强烈建议使用队列作业。
使用事件
每次事件被包处理时,它都会触发一个具有此结构的事件
gocardless-webhooks::{resource_type}_{action}
事件的负载将是使用请求创建的 GocardlessWebhookCall
(或扩展模型)实例。
您可以在 EventServiceProvider
中注册对此事件的监听器。
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ 'gocardless-webhooks::payments_created' => [ App\Listeners\ListenerOfPaymentsCreated::class, ], ];