# 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'abonnement
  - `status` : É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 PREMIUM
  - `customer.subscription.updated` : Mise à jour
  - `customer.subscription.deleted` : Annulation → plan FREE
  - `invoice.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

1. **Utilisateur accède `/pricing`**
   - S'il est FREE, affiche `<UpgradeButton />`

2. **Clique sur "Passer à Premium"**
   - `UpgradeButton` appelle `POST /api/stripe/create-checkout`
   - Reçoit `sessionId`
   - Redirige vers Stripe Checkout

3. **Paiement sur Stripe Checkout**
   - Succès : Redirige vers `/dashboard?checkout=success`
   - Annulation : Redirige vers `/pricing`

4. **Webhook Stripe `customer.subscription.created`**
   - Crée un `Subscription` en DB
   - Met à jour `User.plan = "PREMIUM"`

5. **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
