Encaisser avec Stripe

Module 08 · Leçon 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.

Accès libre 16 min

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.

Flux d’un paiement, du clic de l’acheteur jusqu’à l’ouverture de l’accès.
Le trajet complet d’un paiement. C’est la dernière étape qui donne l’accès, pas le clic.

Les six objets

Tout le vocabulaire tient en six mots. Une fois qu’ils sont clairs, la documentation devient lisible.

ObjetCe que c’estChez toi, ça correspond à
ClientLa personne qui paie, avec son adresse e-mail et ses moyens de paiementUn utilisateur de ton produit. Tu gardes le lien entre les deux
ProduitCe que tu vends, sans notion de prixUn plan de ta grille : Solo, Cabinet
PrixUn 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 paiementUne page de paiement à usage unique, créée à la demandeCe qui s’ouvre quand ton utilisateur clique sur « choisir ce plan »
AbonnementLe lien durable entre un client et un prix, avec son statutCe qui décide si ton utilisateur a accès ou non
ÉvénementUne notification envoyée par Stripe quand quelque chose se produitCe 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.

TempsCe qui se passe
1L’utilisateur clique sur « choisir ce plan »Ton produit, dans le navigateur
2Ton serveur demande à Stripe de créer une session de paiement pour ce prix et cet utilisateurTon serveur, avec ta clé secrète
3Ton produit redirige le navigateur vers la page de paiement hébergée par StripeLe navigateur
4L’utilisateur saisit sa carte et valide. Stripe encaisseChez Stripe. Aucune donnée de carte ne passe chez toi
5Stripe envoie un événement à ton webhook : le paiement a réussiDe serveur à serveur, sans le navigateur
6Stripe redirige le navigateur vers ta page de retourLe navigateur, si l’utilisateur ne l’a pas fermé
7Ton produit affiche l’accès, qui a été activé au temps 5Ton 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.

InformationQui la gardePourquoi
Les données de carteStripe, exclusivementTu 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 facturesStripeIl 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 copieTu 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 StripeToiC’est la colonne qui relie les deux mondes. Sans elle, plus rien ne se raccorde
Ce que l’accès débloque dans ton produitToi, exclusivementStripe 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.

Se faire expliquer le flux jusqu’à le comprendre
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.

Outils cités dans cette leçon

Fiches détaillées sur OutilsIA.