This package is abandoned and no longer maintained. No replacement package was suggested.

Package to allow payloads to be sent based on event triggers

Installs: 5 562

Dependents: 1

Suggesters: 0

Security: 0

Stars: 1

Watchers: 5

Forks: 0

Open Issues: 2



This library adds support for creating Activities which are then fired as webhooks to subscribers of those activities.


Use Composer to install the package in your project:

composer require eoneopay/webhooks


Inject the \EoneoPay\Webhooks\Activities\Interface\ActivityFactoryInterface service into your application where an activity needs to be created. The send method on this interface accepts an ActivityDataInterface implementation that represents a specific activity to be created.

For each of the different activities you will fire inside your application you will need to create a class that implements ActivityDataInterface.

Theory of Operation

  • ActivityFactoryInterface receives an instance of ActivityDataInterface
    • The factory will then call the PayloadManager to build the payload for the ActivityDataInterface
    • The factory will take the payload and the ActivityDataInterface and save it as a new ActivityInterface entity.
    • Finally, the factory will dispatch an ActivityCreatedEvent
  • The listeners will receive the event inside an asynchronous queue worker and call WebhookManager#processActivity
    • The WebhookManager will resolve any subscriptions for the activity
    • Then it will create a new WebhookRequest for each subscription
    • And dispatch a new WebhookRequestCreatedEvent.
  • Another listener will accept this event and call RequestProcessor#process
    • Which builds a PSR7 Request
    • Sends the request
    • Records the result as a WebhookResponse



To integrate the package into your Laravel or Lumen you need to register the following service providers:


Any implementation of this library will need to:

  • Implement and bind a service for the interface EoneoPay\Webhooks\Subscription\Interfaces\SubscriptionResolverInterface
  • Implement a service for the interface EoneoPay\Webhooks\Payload\Interfaces\PayloadBuilderInterface
    • example
    interface WebHookPayloadBuilderInterface extends PayloadBuilderInterface
    { ... }
    final class PayloadBuilder implements WebHookPayloadBuilderInterface
    { ... }
    • bind and tag the service for the interface YourNamespace\WebHookPayloadBuilderInterface
    $this->app->bind(WebHookPayloadBuilderInterface::class, PayloadBuilder::class);
    $this->app->tag([WebHookPayloadBuilderInterface::class], ['webhooks_payload_builders']);
  • Add EoneoPay\Externals\Bridge\Laravel\ORM\ResolveTargetEntityExtension to config/doctrine.php under the extensions key
  • Modify config/doctrine.php to add the following changes to the configuration:

use EoneoPay\Externals\Bridge\LaravelDoctrine\Extensions\ResolveTargetEntityExtension;
use EoneoPay\Webhooks\Models\ActivityInterface;
use EoneoPay\Webhooks\Models\WebhookRequestInterface;
use EoneoPay\Webhooks\Models\WebhookResponseInterface;
use EoneoPay\Webhooks\Bridge\Doctrine\Entities\Activity;
use EoneoPay\Webhooks\Bridge\Doctrine\Entities\Lifecycle\Request;
use EoneoPay\Webhooks\Bridge\Doctrine\Entities\Lifecycle\Response;

return [
    'managers' => [
        'default' => [
            // ...
            'namespaces' => [
                // ...
                // Add the Webhooks Entities to the namespace mappings
            'paths' => [
                // ...
                // Add the Webhooks filepath to the Entity Manager
            // ...
    // ...
    'extensions' => [
        // ...
        // Add the ResolveTargetEntityExtension to Doctrine
    // ...
    'replacements' => [
        // Add replacements so Doctrine can look up entities by interface
        ActivityInterface::class => Activity::class,
        WebhookRequestInterface::class => Request::class,
        WebhookResponseInterface::class => Response::class