Intégration Stripe dans Next.js 14 : le guide complet

admin admin1 vues

Stripe est le meilleur processeur de paiement disponible pour les produits SaaS. Son API est bien documentée, son tableau de bord est excellent, et il gère la complexité des paiements mondiaux, la conformité fiscale et la gestion des litiges à votre place.

Mais intégrer Stripe correctement dans une application Next.js 14 App Router n'est pas une tâche de 30 minutes. Ce guide couvre ce que vous devez savoir — et vous montre un chemin plus rapide.

Les quatre couches d'une vraie intégration Stripe

La plupart des tutoriels ne couvrent que le chemin heureux : l'utilisateur clique sur acheter, le checkout Stripe s'ouvre, le paiement réussit. Une vraie intégration Stripe en production a quatre couches.

Couche 1 : Sessions de Checkout

Créer une Session de Checkout Stripe dans un Route Handler Next.js 14 est simple. Vous appelez stripe.checkout.sessions.create() avec vos IDs de prix, les URLs de succès et d'annulation, et les métadonnées client. L'utilisateur est redirigé vers la page de checkout hébergée par Stripe.

Les détails importants : passez toujours votre ID utilisateur interne ou email dans les métadonnées pour identifier qui a payé quand le webhook se déclenche. Utilisez toujours votre clé secrète Stripe côté serveur, jamais la clé publiable, dans les Route Handlers.

Couche 2 : Gestion des Webhooks

C'est là que la plupart des intégrations échouent. Les webhooks Stripe sont la façon dont Stripe informe votre application qu'un paiement a réussi, échoué ou été remboursé. Sans webhooks, votre application n'a aucun moyen fiable de savoir quand accorder l'accès à un produit acheté.

L'exigence critique : vous devez vérifier la signature du webhook Stripe sur chaque requête entrante. Sans cette vérification, n'importe qui peut envoyer de faux événements de paiement à votre endpoint et réclamer des produits gratuitement.

Dans Next.js 14 App Router, la vérification des webhooks nécessite de lire le corps brut de la requête avant de le parser. C'est une source courante de bugs.

Couche 3 : Gestion des Abonnements

Pour les produits SaaS avec facturation récurrente, vous devez gérer les événements du cycle de vie des abonnements : créé, mis à jour, annulé, paiement échoué. Chaque événement doit mettre à jour votre base de données et potentiellement déclencher des emails au client.

Couche 4 : Portail Client

Le Portail Client de Stripe permet aux abonnés de gérer leur propre facturation : mettre à jour les méthodes de paiement, annuler des abonnements, consulter des factures. Intégrer cela correctement signifie créer des sessions de portail côté serveur et rediriger les utilisateurs de manière appropriée.

Le problème du développement local avec les webhooks

Tester les webhooks en local nécessite que le Stripe CLI tourne en parallèle de votre serveur de développement Next.js. La commande est stripe listen --forward-to localhost:3000/api/stripe/webhook. Ce processus doit tourner en parallèle avec votre serveur de développement, ce qui signifie gérer deux processus terminal ou utiliser un outil comme concurrently.

Les erreurs courantes qui causent des bugs en production

Utiliser la clé publiable Stripe dans le code côté serveur au lieu de la clé secrète. Ne pas vérifier les signatures de webhook. Parser le corps de la requête avant la vérification de signature. Ne pas gérer l'idempotence — le même événement webhook peut être livré plusieurs fois et votre handler doit être sûr à exécuter plusieurs fois sans créer de commandes dupliquées.

Le raccourci AliyaSaas

AliyaSaas a les quatre couches déjà implémentées, testées et tournant en production. Le flux de checkout, le handler de webhook avec vérification de signature, la gestion des abonnements et l'intégration du Portail Client sont tous inclus.

L'environnement de développement tourne en parallèle avec le processus de forwarding du Stripe CLI déjà configuré. Le handler de webhook est idempotent. La vérification de signature est correcte.

Si vous voulez comprendre chaque ligne : le code est à vous de lire et d'apprendre. Si vous voulez passer directement à la construction de votre produit : tout est déjà câblé.

Parcourez les templates AliyaSaas pour avoir Stripe fonctionnel dès le premier jour.

Articles similaires