Module 08 · Lesson 1
Stripe expliqué avant de le brancher
Six objets, un flux en sept temps. Comprendre qui appelle qui et où vit l’information, avant d’écrire la moindre ligne.
The lessons are written in French. The interface is in English; the lesson bodies have not been translated yet.
La majorité des problèmes de paiement viennent d’une incompréhension du flux, pas d’une erreur de code. Quelqu’un qui ne sait pas ce que Stripe garde de son côté et ce qu’il doit garder du sien construit une intégration qui marche en test et qui perd des clients en production. Cette leçon ne contient aucun code, et c’est la plus importante des six.
Les six objets
Tout le vocabulaire tient en six mots. Une fois qu’ils sont clairs, la documentation devient lisible.
| Objet | Ce que c’est | Chez toi, ça correspond à |
|---|---|---|
| Client | La personne qui paie, avec son adresse e-mail et ses moyens de paiement | Un utilisateur de ton produit. Tu gardes le lien entre les deux |
| Produit | Ce que tu vends, sans notion de prix | Un plan de ta grille : Solo, Cabinet |
| Prix | Un montant, une devise, une récurrence, rattaché à un produit | « 29 euros par mois » et « 290 euros par an » sont deux prix du même produit |
| Session de paiement | Une page de paiement à usage unique, créée à la demande | Ce qui s’ouvre quand ton utilisateur clique sur « choisir ce plan » |
| Abonnement | Le lien durable entre un client et un prix, avec son statut | Ce qui décide si ton utilisateur a accès ou non |
| Événement | Une notification envoyée par Stripe quand quelque chose se produit | Ce qui déclenche l’activation ou la coupure de l’accès chez toi |
Le flux, en sept temps
Voici ce qui se passe réellement quand quelqu’un paie. Lis-le deux fois : les temps 5 et 6 sont ceux que tout le monde inverse.
| Temps | Ce qui se passe | Où |
|---|---|---|
| 1 | L’utilisateur clique sur « choisir ce plan » | Ton produit, dans le navigateur |
| 2 | Ton serveur demande à Stripe de créer une session de paiement pour ce prix et cet utilisateur | Ton serveur, avec ta clé secrète |
| 3 | Ton produit redirige le navigateur vers la page de paiement hébergée par Stripe | Le navigateur |
| 4 | L’utilisateur saisit sa carte et valide. Stripe encaisse | Chez Stripe. Aucune donnée de carte ne passe chez toi |
| 5 | Stripe envoie un événement à ton webhook : le paiement a réussi | De serveur à serveur, sans le navigateur |
| 6 | Stripe redirige le navigateur vers ta page de retour | Le navigateur, si l’utilisateur ne l’a pas fermé |
| 7 | Ton produit affiche l’accès, qui a été activé au temps 5 | Ton produit |
Le point décisif est la différence entre les temps 5 et 6. Le temps 5 part du serveur de Stripe vers le tien : il arrive toujours, même si l’utilisateur ferme son onglet, même s’il perd sa connexion, même s’il éteint son téléphone. Le temps 6 dépend entièrement du navigateur de l’utilisateur : il peut ne jamais arriver.
Que fait alors la page de retour ? Elle informe. Elle dit merci, elle explique ce qui vient de se passer, et elle affiche l’accès si le webhook est déjà passé, ce qui est presque toujours le cas en une seconde ou deux. Si l’accès n’est pas encore actif, elle affiche un message d’attente et se rafraîchit. Elle ne décide rien.
Ce que Stripe garde, ce que tu gardes
La répartition est simple et il faut s’y tenir. Ne recopie pas chez toi ce que Stripe gère mieux, et ne délègue pas à Stripe ce qui appartient à ton produit.
| Information | Qui la garde | Pourquoi |
|---|---|---|
| Les données de carte | Stripe, exclusivement | Tu ne dois jamais les voir, ni les stocker, ni les transmettre. C’est ce qui te dispense de la lourde conformité liée aux données bancaires |
| L’historique des paiements et les factures | Stripe | Il les produit, les numérote et les met à disposition. Tu affiches un lien |
| L’état de l’abonnement : actif, en retard, résilié | Stripe fait foi, tu en gardes une copie | Tu as besoin de la copie pour décider de l’accès sans appeler Stripe à chaque page |
| Le lien entre ton utilisateur et le client Stripe | Toi | C’est la colonne qui relie les deux mondes. Sans elle, plus rien ne se raccorde |
| Ce que l’accès débloque dans ton produit | Toi, exclusivement | Stripe ne sait pas ce que fait ton produit |
La quatrième ligne est celle qui casse en premier quand on l’oublie. Prévois dès maintenant, dans ta table de profils du module 05, une colonne pour l’identifiant du client Stripe, une pour l’identifiant de l’abonnement, une pour son statut, et une pour la date de fin de période en cours. Quatre colonnes, et tout le reste s’enchaîne.
Le mode test
Stripe fonctionne en deux mondes parallèles et étanches : le mode test et le mode réel. Chacun a ses propres clés, ses propres produits, ses propres clients, son propre webhook. Rien ne passe de l’un à l’autre.
Tu vas travailler en mode test pendant tout ce module, avec des numéros de carte fournis par Stripe qui simulent une réussite, un refus, ou une demande d’authentification. La leçon 6 fait le passage en réel, et il faudra alors tout recréer côté réel : c’est normal, ce n’est pas une erreur de ta part.
Explique-moi le flux de paiement par abonnement, à quelqu’un qui construit son premier produit et ne connaît rien à Stripe. Mon cas : Produit : [une phrase] Grille tarifaire : [colle ta grille du module 07] Ce qui doit se débloquer quand le client paie : [décris] Où j’ai déjà un compte utilisateur : [décris ta table de profils] 1. Décris le flux complet, du clic au déblocage de l’accès, en numérotant chaque étape. Pour chacune : qui appelle qui, ce qui transite, et où vit l’information à ce moment. 2. Dis explicitement quelles étapes passent par le navigateur de l’utilisateur et lesquelles vont de serveur à serveur. Explique pourquoi cette distinction décide de l’endroit où j’active l’accès. 3. Liste les colonnes que je dois ajouter à ma table de profils pour relier mon utilisateur à Stripe, avec le rôle de chacune. 4. Explique ce qui se passe si l’utilisateur ferme son onglet juste après avoir payé. Détaille. 5. Explique la différence entre le mode test et le mode réel, et ce qu’il faudra refaire au passage. 6. Termine par les cinq questions que je devrais savoir répondre avant d’écrire du code. Si je ne sais pas y répondre, je reviens te voir. N’écris aucun code dans cette réponse. Je veux comprendre le flux, pas l’implémenter.
Tools mentioned in this lesson
Full entries on OutilsIA.
