Aller au contenu

phil/standard-webhooks-bundle

alpha

Des livraisons de webhooks vérifiées en arguments de contrôleur, et des webhooks signés envoyés depuis Symfony.

phil/standard-webhooks-bundle intègre Standard Webhooks 1.0.0 à une application Symfony. Il lit les clés de signature et de vérification dans la configuration et construit le récepteur. Un contrôleur reçoit la livraison vérifiée en argument. Une livraison mal formée reçoit un 400, et une livraison refusée un 401 avec sa raison. Le bundle envoie une tentative signée par le client HTTP de Symfony, garde les identifiants traités dans une table d'une connexion Doctrine, et fournit une commande qui génère des clés.

Il s'adresse aux applications Symfony qui reçoivent des webhooks d'autres services ou envoient les leurs. Le format, les signatures et les règles de vérification vivent dans phil/standard-webhooks, une bibliothèque PHP simple. Utilisez cette bibliothèque seule hors de Symfony.

Le bundle se branche sur le noyau HTTP par un résolveur d'arguments de contrôleur. Le client HTTP, Doctrine DBAL et le composant Console sont facultatifs, et chacun active l'expéditeur, le stockage ou la commande de clés. Les identifiants traités sont revendiqués sans faire avorter la transaction de traitement : la déduplication et le travail qu'elle protège partagent ainsi une même transaction.

État

PartieÉtat
Configuration : clés de signature et de vérification, tolérance, audience, connexionImplémenté et testé
VerifiedWebhookResolver : l'argument de contrôleur VerifiedWebhookImplémenté et testé
WebhookSender et DeliveryFailedImplémenté et testé
DbalProcessedWebhooks, sa table et son écouteur de schémaImplémenté et testé
phil:standard-webhooks:generate-keyImplémenté et testé

Documentation

DocumentCe qu'il couvre
InstallationPrérequis, enregistrement, la table.
ConfigurationChaque clé, la génération de clés, les services, les clés qui changent.
RéceptionL'argument de contrôleur, les réponses, un point de terminaison complet.
EnvoiWebhookSender, les nouvelles tentatives, les échecs, la protection sur les URL des récepteurs.
StockageLa table des identifiants traités, la revendication, la purge.
Points d'extensionCe qu'une application implémente, configure, remplace ou utilise.
TestsComment le bundle est testé.
RéférenceChaque type du bundle.

Le protocole — les en-têtes, les clés, les signatures, l'ordre de vérification — est documenté avec phil/standard-webhooks.

Démarrage rapide

phil_standard_webhooks:
    signing_keys: ['%env(WEBHOOK_SIGNING_KEY)%']
    verification_keys: ['%env(PARTNER_PUBLIC_KEY)%']
    audience: shop
#[Route('/webhooks', methods: ['POST'])]
public function __invoke(VerifiedWebhook $webhook): Response
{
    // claim $webhook->id, process $webhook->envelope(), in one transaction
    return new Response(null, 204);
}

$id = $sender->send('https://partner.example/webhooks', $body);   // a WebhookSender

Prérequis

PHP 8.5 ou plus récent ; phil/standard-webhooks 0.1, qui requiert ext-sodium ; phil/url 0.1.3, qui requiert les extensions intl, mbstring et URI ; psr/clock 1.0 ; les composants dependency injection, config, HTTP foundation et HTTP kernel de Symfony 8.2. Le client HTTP de Symfony, Doctrine DBAL et ORM avec DoctrineBundle, et Symfony Console sont facultatifs.

Contribuer

Les contributions sont les bienvenues sur le monodépôt PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Parler Haut Interagir Librement project. Voir LICENSE.