vulcandigital/silverstripe-stripewebhook

处理Stripe webhook事件的代理接口

安装次数: 18

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 1

公开问题: 0

类型:silverstripe-vendormodule

1.0.0 2018-02-27 15:12 UTC

This package is auto-updated.

Last update: 2024-09-18 19:51:34 UTC


README

此模块是一个Stripe webhook事件处理代理接口,一个子类可以处理一个或多个事件,一个事件也可以由一个或多个子类处理。

要求

  • silverstripe/framework: ^4

配置

Vulcan\StripeWebhook\StripeWebhook:
  secret_key: "your-live-secret-key"
  endpoint_secret: "your-endpoint-live-secret-key

您还可以使用测试密钥,webhook模拟器将与此模块一起正常工作。

使用方法

  1. 安装和dev/build
  2. 将Stripe中的webhook端点添加到https://yourdomain.com/stripe-webhook,并确保它发送所需的 eventos
  3. 创建您的事件的功能
<?php
use Stripe\Event;
use Vulcan\StripeWebhook\Handlers\StripeEventHandler;
use SilverStripe\Security\Member;

class CustomerEventsHandler extends StripeEventHandler
{
    private static $events = [
        'customer.created',
        'customer.deleted'
    ];

    public static function handle($event, Event $data)
    {
        // $event is the string identifier of the event
        if ($event == 'customer.created') {
            // create member
            return "Member created";        
        }
        
        $member = Member::get()->filter('Email', $event->data->object->email)->first();
        
        if (!$member) {
            return "Member did not exist";
        }
        
        $member->delete();
        return "Member deleted";
    }
}

任何StripeEventHandler的子类都会被检测到,并需要定义private static $eventspublic static function handle($event, $data)

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

public static function handle($event,$data)必须被定义,不应调用父类。$data将是一个\Stripe\Event对象,其结构与其示例中的JSON响应完全相同。

功能

  • 所有已处理的事件都被记录,包括处理程序返回的响应。
  • 忽略重复事件,如果Stripe发送了相同的事件多次,则不会处理它,但记录的事件将计算发生次数。
  • 所有事件都会通过您在上述配置中定义的endpoint_secret进行验证,以确保它们确实来自Stripe。

为什么?

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

许可证

BSD-3-Clause - Vulcan Digital Ltd