概述

在支付过程中,可能会想监听一些事件,好同时处理一些其它任务。

SDK 使用 symfony/event-dispatcheropen in new window 组件进行事件的相关操作。

在使用之前,需要先确保安装了 symfony/event-dispatcher 组件,如果没有,请安装

composer require symfony/event-dispatcher

使用

TIP

使用事件系统前,确保已初始化 pay。即调用了 Pay::config($config)

<?php

use Yansongda\Pay\Event;
use Yansongda\Pay\Event\PayStarted;

// 1. 新建一个监听器
class PayStartedListener
{
    public function sendEmail(PayStarted $event)
    {
        // 可以直接通过 $event 获取事件的额外数据,例如:
        //      支付传递的参数:$event->params
        
        // coding to send email...
    }
}

// 2. 添加监听器
Event::addListener(PayStarted::class, [new PayStartedListener(), 'sendEmail']);

// 3. 喝杯咖啡

事件

支付开始

  • 事件类:Yansongda\Pay\Event\PayStarted
  • 说明:此事件将在支付进入核心流程时进行抛出。此时 SDK 只进行了相关初始化操作,其它所有操作均未开始。
  • 额外数据:
    • $rocket (相关参数)
    • $plugins (所有使用的插件)
    • $params (传递的原始参数)

支付完毕

  • 事件类:Yansongda\Pay\Event\PayFinish
  • 说明:此事件将在所有参数处理完毕时抛出。
  • 额外数据:
    • $rocket (相关参数)

开始调用API

  • 事件类:Yansongda\Pay\Event\ApiRequesting
  • 说明:此事件将在请求支付方的 API 前抛出。
  • 额外数据:
    • $rocket (相关参数)

调用API结束

  • 事件类:Yansongda\Pay\Event\ApiRequested
  • 说明:此事件将在请求支付方的 API 完成之后抛出。
  • 额外数据:
    • $rocket (相关参数)

收到通知

  • 事件类:Yansongda\Pay\Event\CallbackReceived
  • 说明:此事件将在收到支付方的请求(通常在异步通知或同步通知)时抛出
  • 额外数据:
    • $provider (支付机构)
    • $contents (收到的数据)
    • $params (自定义数据)

调用其它方法

  • 事件类:Yansongda\Pay\Event\MethodCalled
  • 说明:此事件将在调用除 PAYMETHOD 方法(例如,查询订单,退款,取消订单)时抛出
  • 额外数据:
    • $provider (支付机构)
    • $name (调用方法)
    • $params (参数)