Event Dispatcher

The EventDispatcherExtensions provides a Bridge to the Symfony EventDispatcher Component. The EventDispatcherComponent allows you to add behaviour without changing Payum.

Enable the EventDispatcherExtension

<?php

use Payum\Core\Bridge\Symfony\Extension\EventDispatcherExtension;

/** @var \Payum\Core\Gateway $gateway */
/** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$gateway->addExtension(
    new EventDispatcherExtension($eventDispatcher)
);

Listen to an Event

<?php

use Payum\Core\Bridge\Symfony\Event\ExecuteEvent;
use Payum\Core\Bridge\Symfony\PayumEvents;

/** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher */

$eventDispatcher->addListener(
    PayumEvents::GATEWAY_EXECUTE,
    function(ExecuteEvent $event) {
        // do something
    }
);

Name

PayumEvents Constant

Argument passed to the listener

payum.gateway.pre_execute

PayumEvents::GATEWAY_PRE_EXECUTE

ExecuteEvent

payum.gateway.execute

PayumEvents::GATEWAY_EXECUTE

ExecuteEvent

payum.gateway.post_execute

PayumEvents::GATEWAY_POST_EXECUTE

ExecuteEvent

Benefit with PayumBundle

If you use Symfony Full-Stack Framework and the PayumBundle you can add the EventDispatcherExtension via Configuration:

services:
    app.payum.extension.event_dispatcher:
        class: Payum\Core\Bridge\Symfony\Extension\EventDispatcherExtension
        public: true
        arguments: ["@event_dispatcher"]
        tags:
            - { name: payum.extension, all: true, prepend: false }

And add the listener:

services:
    app.payum.listener.render_template:
        class: AppBundle\EventListener\RenderTemplateListener
        tags:
            - { name: kernel.event_listener, event: payum.gateway.execute }

Supporting Payum

Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our customers. If you'd like to join them, please consider:

Last updated