adman9000 / gocardless-laravel
GoCardless Pro PHP 客户端包集成于 Laravel。
Requires
- php: >=8.2
- gocardless/gocardless-pro: ^5.7
- illuminate/support: >=10
Requires (Dev)
- phpunit/phpunit: ~7.0
This package is auto-updated.
Last update: 2024-09-26 20:42:11 UTC
README
GoCardless Pro PHP 客户端包集成于 Laravel。
此包旨在为将 GoCardless 集成到您的 Laravel 项目提供一种简单、可扩展且易于维护的方法。
它提供了一个 Facade,用于包装 GoCardless PHP 客户端,并提供了一种处理 GoCardless 发送的 Webhooks 的简单方法。这是遵循 Spatie(Spatie)使用的步骤,用于他们的 Stripe Laravel Webhooks 包。
安装
使用 composer 获取包
composer require nestednet/gocardless-laravel
1.如果您使用 Laravel >5.5,则包将自动发现,对于旧版本,请在 config/app.php 文件中添加服务提供者。
2.发布配置文件
$ php artisan vendor:publish --provider="Nestednet\Gocardless\GocardlessServiceProvider"
这将发布配置文件和迁移文件。
3.审查配置文件
config/gocardless.php
并将您的 GoCardless API 令牌和环境添加到 .env
文件中。
4.发布迁移后,您可以运行迁移以创建 gocardless_webhooks_table
5.该包提供了一个宏路由(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, ], ];