Table des matières
- Quels événements Stripe ont vraiment besoin de vous
- Étape 1 — Un canal par niveau d'urgence
- Étape 2 — Ajoutez les endpoints dans Stripe
- Étape 3 — Transformez le payload en quelque chose de lisible
- Étape 4 — Testez sans attendre un vrai paiement
- Ce que ce montage ne vous donne pas
- Questions fréquentes
- Stripe peut-il m'appeler directement ?
- Une alerte de litige va-t-elle vraiment me réveiller ?
- Mon associé peut-il recevoir les mêmes alertes ?
- Et le mode test ?
- Conclusion
- Contenu lié
Stripe vous envoie des e-mails sur tout et sur rien. Un paiement réussi, un renouvellement d'abonnement échoué et une contestation arrivent sous la même forme dans la même boîte, et le temps de les lire vous avez déjà perdu la différence entre eux.
La solution n'est pas plus de notifications. C'est de donner à chaque événement Stripe l'urgence qu'il mérite réellement : une notification discrète quand quelqu'un paie, une alerte sensible au temps quand un renouvellement échoue, et un appel téléphonique quand un litige arrive avec un délai de réponse.
Quels événements Stripe ont vraiment besoin de vous
Tous les événements ne méritent pas une notification, et ceux qui la méritent ne sont pas également urgents.
| Événement Stripe | Pourquoi c'est important | Urgence |
|---|---|---|
payment_intent.succeeded | Quelqu'un a payé. Bon à savoir, jamais urgent. | Normale |
invoice.payment_failed | Un renouvellement a échoué. Il reste une fenêtre de relance avant la résiliation. | Sensible au temps |
charge.dispute.created | Une contestation. Stripe fixe un délai de réponse défini par le réseau de cartes, et le manquer fait perdre le dossier par défaut. | Appel |
payment_intent.payment_failed | Un paiement ponctuel a échoué. Utile en volume, bruyant à l'unité. | Normale, ou rien |
Le litige est le seul qui justifie un appel. Le reste peut attendre que vous preniez votre téléphone ; un litige repéré une semaine trop tard, c'est de l'argent que vous n'alliez de toute façon pas garder.
Étape 1 — Un canal par niveau d'urgence
Créez trois canaux dans Echobell, car l'urgence est un réglage de canal :
- Stripe · Revenus — notifications normales, pour les paiements réussis
- Stripe · Paiement échoué — sensible au temps
- Stripe · Litige — appel
Copiez l'URL de webhook de chaque canal depuis ses réglages. Vous allez pointer Stripe vers les trois.
Activez POST uniquement sur chacun au passage. Stripe envoie toujours en POST, et cela évite qu'un aperçu de lien ou l'autocomplétion de la barre d'adresse déclenche votre canal par accident.
Étape 2 — Ajoutez les endpoints dans Stripe
Dans le tableau de bord Stripe, allez dans Developers → Webhooks → Add endpoint, collez l'URL du canal et sélectionnez uniquement les événements que ce canal doit traiter.
Ajoutez un endpoint par canal plutôt qu'un endpoint pour tout. Stripe permet de choisir les événements par endpoint : le routage se fait donc chez Stripe et vos canaux restent simples.
Si vous préférez un seul endpoint, pointez-le vers un canal et filtrez avec une condition :
type == "charge.dispute.created"
Les conditions s'écrivent sans les accolades {{ }} utilisées par les modèles.
Étape 3 — Transformez le payload en quelque chose de lisible
Stripe envoie un corps JSON de cette forme :
{
"type": "charge.dispute.created",
"data": {
"object": {
"amount": 4900,
"currency": "usd",
"reason": "fraudulent",
"status": "warning_needs_response"
}
}
}
Les modèles du canal vont donc chercher dans data.object :
Titre
Litige : {{data.object.reason}}
Corps
{{data.object.amount}} {{data.object.currency}} contestés
Statut : {{data.object.status}}
Un piège qui attrape tout le monde : les montants Stripe sont exprimés dans la plus petite unité monétaire. 4900 vaut 49,00 $, pas 4 900 $. Les modèles Echobell substituent la valeur telle quelle : divisez avant l'envoi, ou écrivez la devise derrière et lisez-le en centimes. Si le chiffre doit être juste d'un coup d'œil, placez la division dans ce qui se trouve entre Stripe et Echobell — un Worker, une automatisation, votre propre endpoint.
Pour le canal revenus, la même idée en moins de mots :
Titre
+{{data.object.amount}} {{data.object.currency}}
Corps
{{data.object.description}}
Étape 4 — Testez sans attendre un vrai paiement
La CLI Stripe peut envoyer de vrais payloads d'événements à votre endpoint :
stripe trigger payment_intent.succeeded
stripe trigger charge.dispute.created
Faites-le avant d'en dépendre. C'est aussi le moyen le plus rapide de voir ce que rend votre modèle quand un champ que vous croyiez présent arrive à null.
Ce que ce montage ne vous donne pas
Deux limites à connaître avant de le mettre devant vos revenus.
Echobell ne vérifie pas la signature Stripe. Stripe signe chaque webhook avec un en-tête Stripe-Signature, et le vérifier demande le secret de l'endpoint. L'endpoint webhook d'Echobell ne fait pas cette vérification : l'URL du canal est donc la seule chose qui le protège. Traitez-la comme un secret, gardez POST uniquement activé, et ne la collez ni dans un dépôt public ni dans une capture d'écran.
Vous pouvez ajouter un contrôle faible avec une condition :
header["stripe-signature"] != ""
Cela confirme que quelque chose envoie une requête à la forme de Stripe. Cela ne confirme pas que c'était Stripe. Si une notification falsifiée causait un préjudice réel — et pas seulement un moment de confusion — placez votre propre endpoint devant, vérifiez-y la signature, et faites-lui appeler Echobell.
C'est un chemin d'alerte, pas un registre. Stripe réessaie les livraisons de webhook échouées, mais les notifications ne constituent pas une trace de ce qui s'est produit. Rapprochez vos comptes avec Stripe, pas avec votre historique de notifications.
Questions fréquentes
Stripe peut-il m'appeler directement ?
Non. Stripe envoie des e-mails et des webhooks. Un appel implique de router un webhook vers quelque chose qui sait en passer un.
Une alerte de litige va-t-elle vraiment me réveiller ?
Si le canal est en mode appel, oui : elle arrive comme un appel entrant et sonne à travers Concentration et Ne pas déranger. Voir traverser le mode Concentration d'iOS pour les alertes critiques.
Mon associé peut-il recevoir les mêmes alertes ?
Oui. Partagez le canal et chaque abonné choisit son type de notification. Vous pouvez prendre les appels pendant que quelqu'un d'autre reçoit une notification discrète pour le même événement.
Et le mode test ?
Les événements en mode test de Stripe vont vers les endpoints enregistrés en mode test. Enregistrez l'URL du canal dans les deux si vous voulez voir ce trafic, ou seulement en test tant que vous ne faites pas confiance au montage.
Conclusion
Trois canaux, trois endpoints, un modèle chacun. L'enjeu n'est pas d'être notifié par Stripe — vous l'étiez déjà. C'est qu'une contestation cesse de ressembler exactement à un reçu.
Téléchargez Echobell pour iPhone ou obtenez-le sur Google Play, puis lancez stripe trigger charge.dispute.created et laissez votre téléphone sonner une fois exprès.