mvdnbrk / laravel-postmark-webhooks
在 Laravel 应用程序中处理 Postmark webhooks。
Requires
- php: ^7.2 || ^8.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0 || ^9.0
Requires (Dev)
- orchestra/testbench: ^4.5 || ^5.0 || ^6.0 || ^7.0
- phpunit/phpunit: ^8.5 || ^9.3
README
在 Laravel 应用程序中处理 Postmark webhooks
当事件发生时,Postmark 可以向您的应用程序发送几个 webhooks。
这样,Postmark 就能在有新情况发生时立即通知您。
此包可以帮助您处理这些 webhooks。
安装
您可以通过 composer 安装此包
composer require mvdnbrk/laravel-postmark-webhooks
默认情况下,此包会将所有传入的 webhooks 记录到数据库中。
运行迁移以在数据库中创建 postmark_webhook_logs
表
php artisan migrate
如果您想禁用数据库日志记录,可以在
.env
文件中设置POSTMARK_WEBHOOKS_LOG_ENABLED=false
。
使用 Postmark 设置 webhooks
访问您的 服务器 页面。选择您要设置 webhooks 的服务器。
转到 settings
> webhooks
> add webbook
。
此包将注册一个路由,Postmark 可以将其 webhooks 发布到: /api/webhooks/postmark
。
填写您的 webhook URL: https://<your-domain.com>/api/webhooks/postmark
选择 Postmark 应该发送给您的活动,并保存 webhook。
您已准备好接收 Postmark 的 webhook 通知!
您可以将
/api/webhooks/postmark
端点更改为您喜欢的任何内容。
您可以通过更改config/postmark-webooks.php
文件中的path
键来实现此操作。
您的 webhook 保护
此包通过仅允许来自 Postmark 使用 IP 范围 的请求来自动保护您的 webhook。
用法
Postmark 可以通过发布 webhook 发送几种事件类型。
您可以在 Postmark 文档中找到 完整的 webhook 列表。
所有 webhook 请求都将记录在 postmark_webhook_logs
表中。
该表有一个 payload
列,其中保存了传入 webhook 的整个有效负载。
Postmark 分配给原始消息的 ID 将保存在 message_id
列中,
事件类型将存储在 record_type
列中,以及电子邮件地址也存储在 email
列中。
注意,事件类型将被转换为
snake_case
。
例如,SpamComplaint
将保存为spam_complaint
。
事件
每当 webhook 调用到来时,此包将触发一个 PostmarkWebhookCalled
事件。
您可以在 EventServiceProvider
中注册事件监听器
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ PostmarkWebhookCalled::class => [ YourListener::class, ], ];
监听器示例
<?php namespace App\Listeners; use Mvdnbrk\PostmarkWebhooks\Events\PostmarkWebhookCalled; class YourListener { /** * Handle the event. * * @param \Mvdnbrk\PostmarkWebhooks\Events\PostmarkWebhookCalled $event * @return void */ public function handle(PostmarkWebhookCalled $event) { // Do your work here. // You can access the payload here with: $event->payload. // The email address, message ID and record type are also available: // $event->email // $event->messageId // $event->recordType } }
您还可以为特定类型的事件注册事件监听器
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ 'webhook.postmark: spam_complaint' => [ YourSpamComplaintListener::class, ], ];
可用事件:open
、bounce
、click
、delivery
、spam_complaint
。
高级配置
您可以选择使用以下方式发布配置文件
php artisan vendor:publish --provider="Mvdnbrk\PostmarkWebhooks\PostmarkWebhooksServiceProvider" --tag="config"
在配置文件中,您可以更改用于保存日志记录到数据库的表名或 Eloquent 模型。
如果您想使用自己的模型将日志保存到数据库中,您应该扩展
Mvdnbrk\PostmarkWebhooks\PostmarkWebhook
类。
您还可以排除一个或多个事件类型以记录到数据库中。
将您想要排除的事件放置在except
键下
'log' => [ ... 'except' => [ 'open', ... ], ],
可以将此包触发的事件映射到您自己的事件类
'events' => [ 'spam_complaint' => App\Events\SpamComplaint, ... ],
变更日志
有关最近变更的更多信息,请参阅变更日志。
测试
$ composer test
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
请查阅我们的安全策略了解如何报告安全漏洞。
致谢
受Spatie的Laravel Stripe Webooks启发。
许可协议
MIT许可协议(MIT)。有关更多信息,请参阅许可文件。