Faciliter l'usage des webhooks pour les fournisseurs e-mailing

Les systèmes d'envoi de mail comme Mailgun ou Brevo, propose sur un évènement de contacter une adresse de votre application, ce sont les webhooks.

Le problème c'est que chaque provider a son propre format de webhook, de sécurité des données et utiliser un nouveau fournisseur peut être long à l'intégration. Pire, si vous utilisez plusieurs fournisseurs, cela peut devenir compliquer à maintenir.

Webhooks Handler for Emailing Providers (WHEP) est un projet qui uniformise les réponses des fournisseurs d'envoi d'emailing et transactionnels, vérifie que les données proviennent d'un fournisseur fiable (IP ou clé de signature) et propose une configuration souple pour vos actions à mener suivant les évènements (callbacks).

Le projet supporte php à partir de la version 7.2 et les fournisseurs suivants :

Utilisation

composer require erwane/whep-<provider-name>
use WHEP\Factory;  
use WHEP\Exception\SecurityException;  
use WHEP\Exception\WHEPException;  
use WHEP\ProviderInterface;  

try {
    $provider = Factory::provider('provider-name', [
        'client_ip' => $_SERVER['REMOTE_ADDR'] ?? null, // Use your framework correct method to get the client ip.
        'callbacks' => [
            ProviderInterface::EVENT_BLOCKED => [$this, 'callbackInvalidate'],
            ProviderInterface::EVENT_BOUNCE_HARD => [$this, 'callbackInvalidate'],
            ProviderInterface::EVENT_BOUNCE_QUOTA => [$this, 'callbackUnsub'],
        ],
    ]);

    // process the data.
    $provider->process($webhookData);

    // Data available from provider getters.
    $recipient = $provider->getRecipient();

    // Launch callback
    $provider->callback();
} catch (SecurityException $e) {
    // log ?
} catch (WHEPException $e) {
    // log ?
}

Retrouvez toute la documentation sur le dépôt du projet : Webhooks Handler for Emailing Providers