webhookUrl lors de sa création. Maketou envoie alors une requête POST vers cette URL lorsque le statut du panier change.
Activer le webhook
Ajoutez le champwebhookUrl dans le body de la création de panier :
http ou https. Utilisez une URL https accessible publiquement.
La webhookUrl est propre à chaque panier. Vous pouvez donc utiliser une URL différente selon le panier, par exemple pour transmettre un identifiant dans la query string.
Événements notifiés
Un panier en
payment_failed peut ensuite passer en completed, par exemple lorsque le prestataire de paiement confirme le paiement en retard. Vous recevez alors une nouvelle notification avec le statut completed.
Les paniers abandoned ne sont pas notifiés.
Body de la requête
Le body est identique à la réponse de Vérifier un panier (GET /api/v1/stores/cart/{cartId}) :
status pour décider de l’action à mener, et meta pour retrouver la commande correspondante dans votre système (voir Métadonnées).
Répondre à la notification
Répondez avec un code HTTP2xx dès réception. Traitez la notification de manière asynchrone si votre traitement est long.
Si votre serveur ne répond pas en 2xx, Maketou renvoie la notification jusqu’à 2 fois, après environ 30 secondes puis 60 secondes. Au-delà, la notification est abandonnée. Vous pouvez toujours récupérer le statut avec Vérifier un panier.
Vérifier la signature
Chaque notification est signée par Maketou. Vérifiez la signature avant de traiter la notification, pour vous assurer qu’elle provient bien de Maketou et que son contenu n’a pas été modifié.Header de signature
t: timestamp Unix (en secondes) au moment de l’envoi.v1: signature Ed25519, encodée en base64.
Récupérer la clé publique
Reconstruire le message signé
Le message signé est<t>.<JSON canonique du body> :
<t>est la valeurtdu header ;- le JSON canonique est le body sérialisé avec les clés de chaque objet triées par ordre alphabétique, sans espaces ni retours à la ligne.
Exemple en Node.js
body est le body JSON déjà parsé, par exemple req.body avec Express et express.json().
Le timestamp
t fait partie du message signé. Rejetez les notifications trop anciennes (par exemple plus de 5 minutes) pour vous protéger contre le rejeu d’une requête interceptée.Bonnes pratiques
- Vérifiez toujours la signature avant de traiter une notification.
- Ne livrez le produit que sur
completed, comme pour la vérification par l’API. - Rendez votre traitement idempotent : un même panier peut être notifié plusieurs fois.
- Gardez une solution de repli : si vous n’avez pas reçu de notification, vérifiez le statut avec Vérifier un panier, en respectant les limites de fréquence.

