- Add authentication with NextAuth v5 (credentials + email verification) - Implement dashboard with glycemia tracking and AI analysis - Add PDF report generation for Premium users - Implement Stripe integration for Premium subscriptions - Add responsive UI with Tailwind CSS and shadcn components - Database schema with Prisma ORM and PostgreSQL support - Real-time glycemia visualization with Recharts - Mobile-optimized entry form - User profile management with medical information - Subscription lifecycle management (create, cancel, webhook) - Email notifications with Resend - Feature gates for Free vs Premium plans Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Intégration Stripe pour Diabetix
📋 Aperçu
L'intégration Stripe permet aux utilisateurs de passer du plan FREE au plan PREMIUM (4,99 € / mois) avec gestion automatique des abonnements.
🏗️ Architecture
Modèles Prisma
- User.stripeId : ID du client Stripe
- Subscription : Table pour tracker l'état de l'abonnement
stripeId: ID de l'abonnementstatus: État (active, past_due, unpaid, canceled)currentPeriodEnd: Date d'expiration
Routes API
POST /api/stripe/create-checkout
Crée une session de paiement Stripe
- Auth : Requis (proxy.ts)
- Response :
{ sessionId: string } - Redirection : Vers Stripe Checkout →
/dashboard?checkout=success
POST /api/stripe/webhook
Reçoit les webhooks Stripe (non protégé)
- Événements gérés :
customer.subscription.created: Nouvel abonnement → plan PREMIUMcustomer.subscription.updated: Mise à jourcustomer.subscription.deleted: Annulation → plan FREEinvoice.payment_failed: Paiement échoué
Composants
<UpgradeButton />
Bouton pour initier le paiement (client-side)
- Charge Stripe.js via CDN
- Crée une session de checkout
- Redirige vers le formulaire de paiement Stripe
Page /pricing
- Affiche les deux plans (FREE et PREMIUM)
- Bouton "Commencer" pour non-connectés
<UpgradeButton />pour utilisateurs connectés- Affiche le statut PREMIUM si applicable
🔧 Configuration
Voir STRIPE_SETUP.md pour les étapes détaillées.
Variables d'environnement requises :
NEXT_PUBLIC_STRIPE_KEY=pk_test_...
STRIPE_SECRET_KEY=sk_test_...
STRIPE_PRICE_ID=price_...
STRIPE_WEBHOOK_SECRET=whsec_...
🔄 Flux d'achat
-
Utilisateur accède
/pricing- S'il est FREE, affiche
<UpgradeButton />
- S'il est FREE, affiche
-
Clique sur "Passer à Premium"
UpgradeButtonappellePOST /api/stripe/create-checkout- Reçoit
sessionId - Redirige vers Stripe Checkout
-
Paiement sur Stripe Checkout
- Succès : Redirige vers
/dashboard?checkout=success - Annulation : Redirige vers
/pricing
- Succès : Redirige vers
-
Webhook Stripe
customer.subscription.created- Crée un
Subscriptionen DB - Met à jour
User.plan = "PREMIUM"
- Crée un
-
NextAuth JWT refresh
- JWT callback lit le nouveau plan
- Prochains appels utilisent
plan: "PREMIUM" - ChatBot et features IA activés
🚀 Prochaines étapes
- Page de confirmation de paiement
- Email de bienvenue Premium
- Historique des factures
- Gestion du renouvellement / annulation
- Facturation annuelle
- Tests de webhook locaux avec Stripe CLI