vulcandigital/silverstripe-paypalwebhook

处理 PayPal webhook 事件的代理接口

安装: 3

依赖项: 0

建议者: 0

安全: 0

星级: 1

关注者: 2

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

1.0.0 2018-03-01 13:38 UTC

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 模拟器将与此模块正常工作

警告:在沙盒模式下,事件将不会被验证!

使用方法

  1. 安装并执行 dev/build
  2. 将沙盒 webhook 端点添加到 PayPal,使其指向 https://yourdomain.com/paypal-webhook,并确保它发送所需的 events
  3. 创建您的事件(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 $eventspublic static function handle($event, $data)

private static $events 必须定义,可以是一个包含单个 事件标识符 的字符串,也可以是一个包含多个的数组

public static function handle($event,$data) 必须定义,不应调用父类。$data 将是一个 \Stripe\Event 对象,它具有与他们的示例中描述的 JSON 响应相同的层次结构。

特性

  • 所有已处理的 events 都会被记录,以及从其处理器那里得到的响应。
  • 忽略重复项,如果 PayPal 发送了相同的事件多次,则不会进行处理,但记录的事件会计算发生次数
  • 所有事件都会被验证,以确保它们是使用配置中定义的 webhook ID 从 PayPal 发送的

为什么?

轻松引入新的事件处理功能,无需触摸任何与其它事件处理类相关的文件。

许可

BSD-3-Clause - Vulcan Digital Ltd