Guides

Comment ajouter des paiements à votre application : paiement, abonnements et webhooks

La façon la plus simple d'ajouter des paiements à votre application est Stripe : utilisez un Payment Link si vous avez seulement besoin d'un bouton « Acheter » et pouvez traiter les commandes à la main, Stripe Checkout si votre application doit savoir qui a payé et réagir automatiquement, et Checkout en mode abonnement plus le portail client de Stripe pour la facturation récurrente. Dans tous les cas sauf le plus simple, vous avez aussi besoin d'un webhook : un point de terminaison serveur que Stripe appelle lorsqu'un paiement réussit. Testez tout avec les clés de test et les cartes de test de Stripe avant de passer aux clés de production.

Ce guide explique chaque option, la partie webhook que la plupart des tutoriels passent sous silence, et ce qu'il faut vérifier avant d'encaisser de vrais paiements. Les détails sur Stripe proviennent de la documentation officielle de Stripe, en septembre 2026.

Pourquoi utiliser un prestataire de paiement

Ne collectez jamais les numéros de carte dans vos propres formulaires. Manipuler les données brutes de carte vous soumet à la norme PCI DSS (la norme de sécurité du secteur des cartes bancaires) et représente un risque important. Un prestataire de paiement comme Stripe héberge le formulaire de paiement, stocke la carte, gère l'authentification bancaire et indique à votre application le résultat. Votre application ne voit jamais que « le client X a payé pour Y ».

Ce guide utilise Stripe parce qu'il est très répandu, bien documenté et pris en charge par la plupart des créateurs d'applications par IA. D'autres prestataires existent ; certains agissent comme « marchand officiel » et prennent en charge la gestion de la TVA pour vous. Si la conformité fiscale vous inquiète, ce modèle mérite d'être comparé.

Les trois façons d'encaisser avec Stripe

OptionCode nécessaireVotre application sait qui a payé ?Idéal pour
Payment LinksAucunSeulement si vous ajoutez un webhookVendre quelques produits fixes, dons, tester la demande
Checkout (paiement unique)Code serveur pour créer une sessionOui, via webhookBoutiques, téléchargements payants, achats ponctuels
Checkout (abonnement)Code serveur et gestion des webhooksOui, via webhookSaaS, adhésions, tout ce qui est récurrent

Payment Links

Un Payment Link est une page de paiement hébergée par Stripe que vous créez dans le tableau de bord Stripe sans code. Vous obtenez une URL que vous pouvez placer derrière un bouton de votre application, partager dans un e-mail ou afficher sous forme de QR code. Selon la documentation de Stripe, les Payment Links peuvent vendre un produit, un abonnement ou recevoir un don ; vous pouvez laisser le client choisir ce qu'il paie ou limiter le nombre d'achats.

Le piège : votre application ne sait pas automatiquement qu'un utilisateur connecté précis a payé. Pour une page de dons ou une petite boutique où vous expédiez les commandes à la main à partir des notifications e-mail de Stripe, cela suffit. Pour « payer pour débloquer les fonctionnalités Pro », ce n'est pas adapté.

Stripe Checkout

Checkout est une page de paiement que votre serveur crée à la demande pour un achat précis. Votre serveur indique à Stripe ce qui est acheté (et éventuellement quel client achète), Stripe renvoie une URL, et vous envoyez le client vers celle-ci. Selon la documentation de Stripe, il prend en charge les paiements uniques comme les abonnements, sous forme de page complète hébergée par Stripe, de page intégrée à votre site ou de formulaire intégré.

Le déroulement :

  1. Le client clique sur Acheter dans votre application.
  2. Votre serveur crée une session Checkout avec votre clé secrète, en y incluant un identifiant qui la relie à votre utilisateur ou à votre commande.
  3. Le client est redirigé vers Stripe et paie.
  4. Stripe le redirige vers votre page de succès.
  5. Stripe envoie un événement checkout.session.completed à votre webhook, et votre serveur marque la commande comme payée ou débloque l'accès.

L'étape 2 doit se faire côté serveur, car elle utilise votre clé secrète. C'est la principale raison pour laquelle Checkout nécessite un backend.

Abonnements

Les abonnements utilisent Checkout en mode abonnement avec un prix récurrent que vous configurez dans Stripe. Le premier paiement suit le déroulement ci-dessus. Ensuite, les renouvellements, les cartes refusées, les changements de formule et les résiliations surviennent au fil du temps, souvent alors que le client n'est pas dans votre application ; votre application n'en est informée que par les webhooks.

Pour permettre aux clients de gérer leur abonnement eux-mêmes, Stripe propose un portail client hébergé. Selon la documentation de Stripe, les clients peuvent y mettre à jour leurs moyens de paiement et leurs informations de facturation, modifier ou résilier leur abonnement, et consulter et télécharger leurs factures. Vous le configurez dans le tableau de bord Stripe et ajoutez un bouton « Gérer la facturation » qui y envoie le client. Vous évitez ainsi de créer vous-même ces écrans.

Webhooks : la partie incontournable

Un webhook est une requête HTTP que Stripe envoie à votre serveur lorsque quelque chose se produit. (Voir ce qu'est un webhook pour l'idée générale.) Le guide d'exécution de Stripe est explicite : on ne peut pas se fier uniquement à la page de succès pour traiter les commandes, car un client peut payer puis perdre sa connexion avant que la page ne s'affiche. Pour les abonnements et les moyens de paiement différés, les webhooks sont obligatoires.

Événements à gérer

ÉvénementSignificationCe que fait votre application
checkout.session.completedCheckout terminéMarquer la commande comme payée ou lancer l'accès
checkout.session.async_payment_succeededUn moyen de paiement différé (comme un prélèvement bancaire) a abouti plus tardExécuter la commande maintenant
checkout.session.async_payment_failedCe paiement différé a échouéPrévenir le client ; ne pas exécuter la commande
invoice.paidUn paiement d'abonnement a réussi, renouvellements comprisProlonger l'accès
invoice.payment_failedUn renouvellement a échouéAvertir l'utilisateur ; Stripe peut réessayer
customer.subscription.updatedFormule modifiée, ou résiliation programméeMettre à jour la formule de l'utilisateur
customer.subscription.deletedAbonnement terminéRetirer l'accès payant

Règles pour un gestionnaire de webhook correct

Ces règles viennent directement de la documentation de Stripe sur les webhooks, et les gestionnaires générés par l'IA en oublient parfois une :

  • Vérifiez la signature. Chaque événement comporte un en-tête Stripe-Signature. Votre gestionnaire le contrôle avec la clé de signature du point de terminaison (elle commence par whsec_). Sans cela, n'importe qui pourrait envoyer à votre serveur un faux « paiement réussi ».
  • Utilisez le corps brut de la requête. La vérification de signature échoue si votre framework analyse ou modifie d'abord le corps.
  • Renvoyez rapidement une réponse 2xx, puis effectuez les traitements plus lents. Les dépassements de délai comptent comme des échecs.
  • Gérez les doublons. Stripe peut livrer le même événement plus d'une fois. Enregistrez les identifiants d'événements déjà traités, ou rendez l'exécution sûre même si elle a lieu deux fois.
  • Ne supposez pas l'ordre. Stripe ne garantit pas que les événements arrivent dans l'ordre où ils se sont produits.
  • Prévoyez les nouvelles tentatives. En mode production, Stripe réessaie les livraisons échouées pendant trois jours au maximum : une courte panne ne fait donc pas perdre de paiements, mais votre gestionnaire doit savoir traiter les événements en retard.

Les webhooks nécessitent une adresse HTTPS publique : ils ne fonctionnent donc généralement qu'une fois votre application publiée (la CLI de Stripe peut transmettre les événements à une machine locale pour les développeurs).

Une requête qui couvre tout le déroulement

Ajoute un achat unique avec Stripe Checkout pour le « Pack Pro » (identifiant de prix dans STRIPE_PRICE_ID). Crée la session Checkout côté serveur en utilisant STRIPE_SECRET_KEY depuis les secrets, et inclus l'identifiant de l'utilisateur connecté dans la session. Ajoute un point de terminaison POST /api/stripe/webhook qui vérifie la signature Stripe avec STRIPE_WEBHOOK_SECRET à partir du corps brut de la requête, gère checkout.session.completed et marque cet utilisateur comme ayant le Pack Pro. Assure-toi qu'il reste sûr si le même événement arrive deux fois. Ajoute les pages de succès et d'annulation. N'expose jamais la clé secrète au navigateur.

Pour les abonnements, ajoute : « Utilise le mode abonnement avec STRIPE_PRICE_ID. Gère invoice.paid, invoice.payment_failed, customer.subscription.updated et customer.subscription.deleted. Ajoute un bouton Gérer la facturation qui ouvre le portail client Stripe. »

Mode test

Stripe propose des environnements séparés, sandbox (test) et production, avec des clés distinctes. Les clés de test commencent par pk_test_, sk_test_ ou rk_test_ ; les clés de production commencent par pk_live_, sk_live_ ou rk_live_. Les transactions de test ne déplacent pas d'argent.

Cartes de test utiles issues de la documentation de test de Stripe (n'importe quelle date d'expiration future, n'importe quel CVC à trois chiffres) :

Numéro de carteRésultat
4242 4242 4242 4242Paiement réussi
4000 0000 0000 0002Carte refusée
4000 0000 0000 3220Authentification 3D Secure requise, puis réussite

Testez au minimum :

  • Un paiement réussi débloque la bonne chose pour le bon utilisateur
  • Une carte refusée affiche un message clair et ne débloque rien
  • Fermer l'onglet du navigateur juste après le paiement donne quand même accès (cela prouve que le webhook fonctionne, pas seulement la page de succès)
  • Annuler sur la page Stripe renvoie l'utilisateur dans votre application sans rien facturer
  • Pour les abonnements : résiliez dans le portail client et vérifiez que l'accès prend fin au moment prévu

Mise en production

  1. Activez votre compte Stripe avec les informations de votre entreprise et de votre banque.
  2. Remplacez par les clés de production dans les secrets de votre application. Stripe recommande des clés restreintes, n'ayant que les autorisations dont votre intégration a besoin, plutôt qu'une clé secrète sans restriction.
  3. Créez un point de terminaison webhook de production pointant vers votre application publiée. Il a sa propre clé de signature, différente de celle de test : mettez-la à jour.
  4. Recréez les produits et les prix en mode production ; leurs identifiants de test n'existent pas dans ce mode.
  5. Effectuez un vrai petit achat et remboursez-le.

Conservez chaque clé dans les secrets de votre projet, jamais dans le code ni dans le chat. Notre liste de contrôle de sécurité détaille la gestion des clés et la vérification des webhooks.

Taxes, remboursements et formalités

Les paiements entraînent des obligations que le code ne résout pas. Ce n'est pas un conseil fiscal ; consultez un expert-comptable.

  • TVA et taxes de vente. Selon l'endroit où vous et vos clients vous trouvez, vous pourriez devoir vous enregistrer, facturer et déclarer la taxe. Stripe Tax peut calculer et collecter la taxe au moment du paiement, surveiller les endroits où vos ventes pourraient créer une obligation, et aider aux enregistrements et aux déclarations, mais la responsabilité reste la vôtre. Les marchands officiels sont une alternative qui prend davantage de ces obligations en charge.
  • Remboursements et litiges. Définissez votre politique de remboursement avant le lancement et publiez-la sur votre site. Les litiges (rétrofacturations) arrivent ; conservez les traces de ce qui a été acheté et livré.
  • Reçus et factures. Stripe peut envoyer des reçus par e-mail ; les entreprises peuvent avoir besoin de véritables factures.
  • Frais. Chaque prestataire facture par transaction. Consultez la page tarifaire actuelle du prestataire plutôt que de vous fier aux chiffres des articles.

Quelle configuration pour votre application

  • Dons ou quelques produits : Payment Links. Voir comment créer un site de dons pour une association.
  • Une boutique avec panier : Checkout avec lignes de commande et webhook. Voir comment créer une boutique en ligne.
  • SaaS ou adhésions : Checkout en mode abonnement, webhooks et portail client. Voir comment créer un MVP SaaS et comment fixer le prix d'un produit SaaS.
  • Une marketplace qui reverse des fonds aux vendeurs : une configuration différente, plus réglementée (Stripe Connect ou équivalent). Prévoyez-la séparément.

Ajouter des paiements dans Mythex

Les paiements dans les applications créées sur Mythex utilisent votre propre compte Stripe et vos propres clés ; il n'existe pas de bouton « Connecter Stripe » en un clic pour votre application. Le déroulement habituel :

  1. Obtenez les clés Stripe de test.
  2. Ajoutez STRIPE_SECRET_KEY (et plus tard le secret du webhook) aux secrets du projet, via /secrets, les paramètres du projet, ou la carte de secrets que l'agent affiche lorsqu'il a besoin d'une clé.
  3. Demandez à l'agent un Checkout avec une requête semblable à celle ci-dessus.
  4. Testez dans l'aperçu avec les cartes de test. Publiez avant d'enregistrer le webhook, car il a besoin de votre URL publique.
  5. Après le passage aux clés de production, publiez à nouveau pour que l'application en production les prenne en compte.

Voir Accepter les paiements avec Stripe et Gérer les webhooks dans votre backend dans la documentation.

Questions

Quelle est la façon la plus simple d'accepter des paiements dans une application ?

Un Stripe Payment Link ne demande aucun code : vous le créez dans le tableau de bord Stripe et vous y faites un lien depuis votre application. Si votre application doit savoir qui a payé et débloquer quelque chose automatiquement, utilisez plutôt Stripe Checkout avec un webhook.

Ai-je besoin d'un webhook pour encaisser des paiements ?

Si votre application doit réagir à un paiement (débloquer un compte, marquer une commande comme payée, gérer un renouvellement), oui. La documentation de Stripe indique qu'on ne peut pas se fier uniquement à la page de succès, car un client peut payer sans jamais l'atteindre. Les webhooks sont aussi indispensables pour les abonnements.

Comment tester les paiements sans vrai argent ?

Utilisez les clés d'API de test (sandbox) de Stripe et ses numéros de carte de test, comme 4242 4242 4242 4242 avec n'importe quelle date d'expiration future et n'importe quel CVC à trois chiffres. Les transactions de test ne déplacent aucun argent réel.

Stripe gère-t-il la TVA et les taxes de vente à ma place ?

Stripe Tax peut calculer et collecter la taxe au moment du paiement, et signaler les endroits où vous pourriez devoir vous enregistrer, mais vous restez responsable de vos obligations fiscales. Consultez un expert-comptable pour votre situation.

Mythex · Pricing · Créez tout avec l'IA · Modèles de sites et d'applications · Mythex comparé · Glossaire de la création d'applications avec l'IA · Outils gratuits pour créer des applications avec l'IA · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)