Aller au contenu principal
ProgrammeEntreprisesOutils gratuitsNotre équipeBlogFAQCommencerSe connecter
FR|EN
Commencer
FR|EN

Formation

  • Programme Production
  • Kit Démarrage
  • Pack anti-boucle
  • Module Sécurité

Entreprises

  • Programme Équipe
  • PME
  • Indépendants

Ressources

  • Outils gratuits
  • Blog
  • FAQ
  • Notre équipe

Légal

  • Mentions légales
  • CGV
  • Confidentialité
  • Vérifier une attestation

Du vibe coding à la production.

Équipe basée à Genève · Données hébergées en Suisse, conformes au RGPD

© 2026 Probata Academy, une marque exploitée par Webmind Sàrl, Genève

FR|EN

Les prix s'affichent dans la devise choisie.

Tous les articles

Stripe et Lovable : encaisser proprement

Publié le 20.10.2026 · 5 min de lecture

Sommaire
  • Le parcours de paiement
  • Les clés
  • Créer la session côté serveur
  • Pourquoi la page de remerciement ne doit rien ouvrir
  • Le webhook et ses quatre garde-fous
  • Les tests obligatoires
  • Abonnements : ce qui change
  • Passer en mode réel
  • Questions fréquentes

Pour encaisser proprement dans une application Lovable, créez la session de paiement Stripe dans une fonction serveur, sans jamais faire transiter de montant par l'interface, et ouvrez l'accès uniquement quand Stripe le confirme par un webhook dont la signature est vérifiée. La page de remerciement ne doit rien débloquer.

Le parcours de paiement

  1. L'utilisateur clique sur « S'abonner » ou « Acheter ».
  2. L'interface appelle une fonction serveur.
  3. La fonction, qui détient la clé secrète de Stripe, crée une session de paiement et renvoie son adresse.
  4. L'utilisateur paie sur la page hébergée par Stripe : carte, TWINT, authentification forte.
  5. Stripe le renvoie vers votre page de confirmation.
  6. En parallèle, Stripe appelle votre webhook, qui ouvre l'accès.

Les clés

  • La clé publiable peut figurer dans l'interface.
  • La clé secrète et le secret de signature du webhook ne vivent que dans les secrets des fonctions serveur. Saisissez-les par le formulaire sécurisé, jamais dans une conversation.
  • Travaillez en mode test jusqu'à la fin de la recette.

Créer la session côté serveur

La fonction de création de session doit :

  • vérifier que l'utilisateur est connecté ;
  • recevoir un identifiant de prix, et le comparer à une liste autorisée côté serveur ;
  • transmettre à Stripe l'identifiant de l'utilisateur et du produit, comme référence et métadonnées ;
  • renvoyer l'adresse de la page de paiement.

Si l'interface envoyait le montant, un utilisateur pourrait le modifier et payer un franc.

Pourquoi la page de remerciement ne doit rien ouvrir

Elle s'affiche parce que le navigateur a été renvoyé à cette adresse. N'importe qui peut la saisir directement. Si elle ouvrait l'accès, votre produit serait gratuit pour qui connaît l'adresse. Affichez plutôt : « Paiement reçu, votre accès est en cours d'activation. »

Le webhook et ses quatre garde-fous

  1. La signature. Chaque appel de Stripe est signé. La fonction vérifie la signature avant toute action ; sinon, n'importe qui pourrait envoyer un faux « paiement réussi ».
  2. La vérification de jeton désactivée, pour cette seule fonction. C'est Stripe qui appelle, pas un utilisateur connecté : la signature remplace la vérification du jeton Supabase.
  3. L'idempotence. Stripe peut envoyer le même événement plusieurs fois. Enregistrez l'identifiant de chaque événement traité et ignorez les doublons.
  4. La clé de service dans les secrets. Pour écrire l'accès, la fonction utilise la clé de service de Supabase, uniquement depuis ses secrets. La table des événements reçus a la RLS active, sans aucune règle : seule la fonction y écrit.

Événements à traiter au minimum : la session de paiement terminée pour ouvrir l'accès, le remboursement pour le retirer et, pour un abonnement, la résiliation.

Les tests obligatoires

TestRésultat attendu
Paiement avec la carte de test 4242 4242 4242 4242Accès ouvert en quelques secondes
Paiement refusé (carte de refus de Stripe)Message clair, aucun accès
Retour sans payerAucune erreur, aucun accès
Remboursement depuis le tableau de bord StripeAccès retiré
Même événement renvoyéIgnoré, aucun doublon
Appel du webhook sans signature valideRefusé

Abonnements : ce qui change

Un abonnement ajoute trois situations à gérer :

  • Le renouvellement. Chaque échéance payée doit prolonger l'accès ; traitez l'événement de facture payée.
  • L'échec de paiement. Une carte expirée ne doit pas couper l'accès sans prévenir. Laissez Stripe relancer, informez l'utilisateur et fixez une période de grâce claire.
  • La résiliation. Retirez l'accès à la fin de la période payée, pas au moment du clic.

Le portail client de Stripe permet à l'utilisateur de mettre à jour sa carte, de télécharger ses factures et de résilier lui-même, ce qui réduit fortement le support.

Passer en mode réel

Le passage en mode réel est une décision consciente, après la recette complète. Il implique de nouvelles clés, un nouveau point de réception déclaré en mode réel et un nouveau secret de signature. Faites un premier achat réel de faible montant, puis remboursez-le pour vérifier toute la chaîne.

Questions fréquentes

Peut-on accepter TWINT ?

Oui, Stripe le propose pour les comptes suisses et les paiements en francs. Vérifiez sa disponibilité pour votre produit, notamment pour les abonnements.

Que se passe-t-il si mon webhook est en panne ?

Stripe réessaie d'envoyer les événements pendant un certain temps. Grâce à l'idempotence, les événements reçus en retard sont traités une seule fois. Surveillez les journaux de la fonction et la liste des événements en échec dans le tableau de bord de Stripe.

Faut-il une facture ?

Pour des clients entreprises, oui. Stripe peut générer reçus et factures ; faites vérifier les mentions par votre fiduciaire.

Le Programme Production vous accompagne jusqu'au paiement en production.

Découvrir le Programme Production

À lire aussi

  • Formations au vibe coding en français : comparatif 2026

    20.10.2026

  • nLPD : ce qu'une petite application doit respecter

    20.10.2026

  • Lovable et Supabase : le tutoriel complet

    20.10.2026