Webhooks pour les nouvelles commandes
Un webhook envoie chaque nouvelle commande, et chacun de ses changements, à votre propre système sous forme de message JSON signé. Vous donnez à Menuthere une adresse HTTPS et un secret, puis vous vérifiez la signature de chaque requête. Un bouton de test et un journal des envois permettent de vérifier que tout fonctionne.
- Où
- Set up by Menuthere support
- Formule
- Le tableau de bord ne verrouille pas les webhooks selon la formule.
- Durée
- 15 min
- Mis à jour
Mettre en place un webhook
Étape 1: Envoyez votre adresse au support
Les webhooks ne sont pas encore dans le tableau de bord : c'est donc le support Menuthere qui les met en place. Envoyez au support l'adresse qui recevra les commandes. Elle doit commencer par https:// et être joignable depuis Internet. Les adresses comme localhost ou un réseau privé ne peuvent pas être appelées.
Étape 2: Conservez le secret de signature
Le support active les webhooks de commande et vous remet un secret de signature. Gardez-le uniquement sur votre serveur. Vous l'utilisez pour vérifier que chaque requête vient bien de Menuthere.
Étape 3: Demandez un événement de test
Demandez au support d'envoyer un événement de test. Il envoie un exemple d'order.created à votre adresse, et le résultat affiche Delivered avec le code de réponse de votre point d'accès, ou ce qui n'a pas fonctionné.
Ce que Menuthere envoie
| Événement | Envoyé quand |
|---|---|
| order.created | Une commande est passée. |
| order.status_updated | Le statut d'une commande change, par exemple acceptée, plat prêt ou terminée. |
| payment.status_updated | Une commande est marquée payée, ou son mode de paiement change. |
| delivery.status_updated | Un livreur est affecté ou l'état de la livraison change. |
| En-tête | Valeur |
|---|---|
| x-menuthere-event | Le nom de l'événement. |
| x-menuthere-timestamp | L'heure Unix en secondes, redéfinie à chaque tentative. |
| x-menuthere-signature | Un HMAC-SHA256 hexadécimal du corps brut de la requête, calculé avec votre secret. |
Le corps est une enveloppe avec event, un id unique, created_at et data. Un événement de test porte aussi "test": true : ignorez-le donc dans votre cuisine. Pour order.created, data contient les champs ci-dessous.
| Champ | Contenu |
|---|---|
| order_id, order_number | L'identifiant de la commande et le numéro affiché à votre équipe. |
| status, type, placed_at, currency | Le statut actuel, le type de commande, l'heure de la commande et la devise. |
| totals | subtotal, delivery_charge, packing_charge, gst, discount, grand_total. |
| customer | name, phone, address. |
| table | Le number et le name de la table pour une commande de table, sinon vide. |
| items | Chaque ligne : name, quantity, unit_price, total_price, variant, notes. |
| notes, payment | La note du client, ainsi que le method de paiement et si is_paid. |
Vérification et fiabilité
- Vérifiez la signature par rapport au corps brut. Analyser puis réencoder le JSON modifie les espaces et l'ordre, et la signature ne correspondra pas.
- Soyez idempotent. Le même id peut arriver deux fois. Servez-vous-en pour éviter un second ticket de cuisine.
- Répondez vite avec un 2xx. Menuthere attend 8 secondes par tentative et réessaie jusqu'à trois fois, après 1,5 seconde puis 5 secondes. Un délai dépassé, un 5xx, un 408 ou un 429 est réessayé. Tout autre 4xx est considéré comme un refus volontaire et arrête les essais.
- Consultez Recent deliveries. Le panneau liste les tentatives des dernières 24 heures, les plus récentes en premier, avec le code de réponse et l'heure. Chaque nouvel essai a sa propre ligne.
Questions
Puis-je le diriger vers un serveur de mon propre réseau ?
Puis-je indiquer à ma caisse que la commande a été acceptée ?
Le journal des envois est-il conservé indéfiniment ?
Voir aussi
Vous ne trouvez pas ? Écrivez à [email protected] ou discutez avec nous, de 9 h à 21 h.Centre d'aideTarifsmenuthere.com
