# Test local du flow Stripe Checkout (WAMP / Windows)

## 1. Pré-requis

- Compte Stripe en mode **TEST** activé (https://dashboard.stripe.com)
- `stripe/stripe-php` ^15 installé (déjà dans composer)
- Stripe CLI installé localement (https://docs.stripe.com/stripe-cli)

## 2. Récupérer les clés API TEST

Dashboard Stripe → **Développeurs** → **Clés API**

Copier dans `.env` :

```
STRIPE_PUBLISHABLE_KEY=pk_test_...
STRIPE_SECRET_KEY=sk_test_...
```

## 3. Démarrer le webhook forwarding

Dans un terminal séparé, depuis n'importe quel dossier :

```
stripe login
stripe listen --forward-to http://localhost:8000/stripe/webhook
```

Stripe CLI affiche :

```
> Ready! Your webhook signing secret is whsec_XXXXXXXX (^C to quit)
```

Copier ce `whsec_...` dans `.env` :

```
STRIPE_WEBHOOK_SECRET=whsec_XXXXXXXX
```

**Laisser ce terminal ouvert pendant tout le développement.**

## 4. Activer Alma et Klarna en mode TEST

URL directe : https://dashboard.stripe.com/test/settings/payment_methods

Sinon depuis le Dashboard : **Paramètres** → section **"Paramètres produit"** → **Paiements** (icône portefeuille).

Sur la page :

- Section **"Buy Now, Pay Later"** (ou "Paiements échelonnés") :
  - Activer **Klarna** (toggle)
  - Activer **Alma** (toggle)
- Section **"Cartes"** :
  - Vérifier que **Visa**, **Mastercard**, **Cartes Bancaires (CB)** sont activés (par défaut OUI)

En mode TEST, l'activation est immédiate. En mode LIVE, Klarna peut passer en statut **"Pending"** quelques jours (validation Klarna côté commerçant).

Si Alma n'apparaît pas :
- Vérifier que le pays du compte est France (**Paramètres → Entreprise → Pays/région**)
- Alma reste fonctionnel via l'API même non activé Dashboard (passe quand même dans `payment_method_types`), mais l'affichage est plus propre activé.

## 5. Tester le flow

1. Ouvrir http://localhost:8000/tarifs
2. Cliquer "Souscrire" sur un pack
3. Sur la page Stripe Checkout : 3 boutons visibles (CB, Alma, Klarna)
4. Choisir CB et utiliser une **carte de test** :

| Cas | Numéro |
|---|---|
| Succès | `4242 4242 4242 4242` |
| 3DS exigé | `4000 0027 6000 3184` |
| Refus | `4000 0000 0000 0002` |

Date d'expiration : n'importe quelle date future. CVC : 3 chiffres.

5. Vérifier dans le terminal Stripe CLI : `--> checkout.session.completed [evt_...]`
6. Vérifier dans la BDD : `SELECT * FROM t_payments ORDER BY payment_ID DESC LIMIT 1;` → `status=succeeded`
7. Vérifier dans la BDD : `SELECT * FROM t_subscriptions ORDER BY subscription_ID DESC LIMIT 1;` → forfait actif
8. Rafraîchir `/mon-compte/forfaits` → forfait apparaît

## 6. Cas Alma / Klarna en sandbox

- **Alma test** : la redirection Alma propose un bouton "Approuver" — accepter le paiement.
- **Klarna test** : Klarna affiche un écran de simulation avec scénarios (Success, Decline, Authentication Required).

## 7. Mode dégradé (Stripe non configuré)

Si vous voulez tester l'UI sans Stripe :

- Vider `STRIPE_SECRET_KEY` dans `.env`
- Recharger /tarifs → les boutons "Souscrire" deviennent "Bientôt disponible" (disabled)
- Aucun crash, message clair côté utilisateur.

## 8. Désactiver BNPL temporairement

Pour ne tester que la CB (sans Alma/Klarna) :

```
STRIPE_ENABLE_BNPL=false
```

Le service ne propose plus que `card` à Stripe Checkout.

## 9. Troubleshooting

| Symptôme | Cause probable |
|---|---|
| `Invalid signature` au webhook | `STRIPE_WEBHOOK_SECRET` ne correspond pas au `whsec_` du CLI actuel — recopier |
| Bouton "Souscrire" → "Le paiement en ligne est en cours d'activation" | une des 3 clés `STRIPE_*` est vide dans `.env` |
| Webhook reçu mais forfait pas créé | regarder `storage/logs/app.log` et le terminal Stripe CLI pour l'erreur exacte |
| Webhook reçu deux fois (Stripe retry) | normal — vérifier `t_processed_webhooks.event_id`, doit être présent une fois |
| `Stripe is not configured` à l'appel `verifyWebhook` | identique au point 2 ci-dessus |
| Page `/checkout/success` reste en "Confirmation en cours…" | le webhook n'est pas arrivé ; vérifier que `stripe listen` est actif et que le secret correspond |
