vulcandigital / silverstripe-paypalwebhook
处理 PayPal webhook 事件的代理接口
1.0.0
2018-03-01 13:38 UTC
Requires
- paypal/rest-api-sdk-php: ^1.13
- silverstripe/framework: ^4.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-09-18 20:43:59 UTC
README
此模块是一个 PayPal webhook 事件处理代理接口,子类可以处理一个或多个事件,一个事件可以由一个或多个子类处理
需求
- silverstripe/framework: ^4
配置
默认情况下,环境设置为沙盒
Vulcan\PayPalWebhook\PayPalWebhook: environment: sandbox oauth_sandbox_clientid: ".." oauth_sandbox_secretid: ".." oauth_live_clientid: ".." oauth_live_secretid: ".." webhook_sandbox_id: ".." webhook_live_id: ".."
您还可以使用测试密钥,webhook 模拟器将与此模块正常工作
警告:在沙盒模式下,事件将不会被验证!
使用方法
- 安装并执行 dev/build
- 将沙盒 webhook 端点添加到 PayPal,使其指向 https://yourdomain.com/paypal-webhook,并确保它发送所需的 events
- 创建您的事件(s)的功能
<?php use Vulcan\PayPalWebhook\Handlers\PayPalEventHandler; class CustomerDisputeHandler extends PayPalEventHandler { private static $events = [ 'CUSTOMER.DISPUTE.CREATED' ]; public static function handle($event, array $data) { // $event is the string identifier of the event return "Do something here"; } }
任何 PayPalEventHandler
的子类都会被检测到,并需要定义 private static $events
和 public static function handle($event, $data)
。
private static $events
必须定义,可以是一个包含单个 事件标识符 的字符串,也可以是一个包含多个的数组
public static function handle($event,$data)
必须定义,不应调用父类。$data 将是一个 \Stripe\Event
对象,它具有与他们的示例中描述的 JSON 响应相同的层次结构。
特性
- 所有已处理的 events 都会被记录,以及从其处理器那里得到的响应。
- 忽略重复项,如果 PayPal 发送了相同的事件多次,则不会进行处理,但记录的事件会计算发生次数
- 所有事件都会被验证,以确保它们是使用配置中定义的 webhook ID 从 PayPal 发送的
为什么?
轻松引入新的事件处理功能,无需触摸任何与其它事件处理类相关的文件。