# Paiement Stripe

Encaissement par carte via Stripe Checkout : le client saisit sa carte
sur les pages de Stripe, jamais sur les vôtres. Aucune donnée bancaire
ne traverse ce serveur.

## Ce qu'il faut récupérer

Tout se trouve dans le tableau de bord Stripe, à `dashboard.stripe.com`.

### 1. La clé secrète

**Développeurs › Clés API**

Deux jeux de clés coexistent, et un sélecteur en haut de page bascule
entre eux :

| Mode | Clé secrète | Ce qui se passe |
|------|-------------|-----------------|
| Test | `sk_test_…` | Aucun argent ne bouge |
| Production | `sk_live_…` | Paiements réels |

Copiez la **clé secrète**, pas la clé publiable. Elle n'est affichée
qu'une fois à sa création — si vous l'avez perdue, créez-en une
nouvelle plutôt que de chercher.

### 2. L'adresse de notification

Elle s'affiche dans **Boutique › Réglages › Paiement**, avec un bouton
de copie. Elle ressemble à :

```
https://votre-site.fr/paiement/stripe/notification
```

### 3. Le secret de notification

**Développeurs › Webhooks › Ajouter un point de terminaison**

Collez l'adresse ci-dessus, puis sélectionnez ces événements :

| Événement | Ce qu'il déclenche |
|-----------|--------------------|
| `checkout.session.completed` | Le règlement est enregistré |
| `checkout.session.expired` | Session abandonnée, consignée |
| `charge.refunded` | Remboursement enregistré |
| `charge.failed` | Paiement refusé par la banque |
| `payment_intent.payment_failed` | Idem, autre forme |
| `charge.dispute.created` | Litige : l'argent est repris |
| `payout.paid` | Versement : rattache les règlements |

Une fois créé, Stripe affiche un **secret de signature** commençant par
`whsec_`. Copiez-le dans le réglage du même nom.

Sans lui, **aucun paiement n'est confirmé** : les notifications sont
refusées faute de pouvoir être authentifiées.

### 4. Le libellé de relevé bancaire

Facultatif. C'est ce que votre client verra sur son relevé — 22
caractères au maximum. Sans lui, Stripe utilise le nom de votre compte.

## Pourquoi le webhook est indispensable

Le retour du client ne prouve rien : il peut fermer son navigateur
avant, ou fabriquer l'adresse de retour lui-même.

Seule la notification signée de Stripe confirme qu'un paiement a eu
lieu. C'est elle qui enregistre le règlement.

## Tester

En mode test, utilisez les numéros de carte de Stripe :

| Carte | Résultat |
|-------|----------|
| `4242 4242 4242 4242` | Paiement accepté |
| `4000 0000 0000 0002` | Carte refusée |
| `4000 0000 0000 9995` | Provision insuffisante |

Date d'expiration future, trois chiffres au dos, n'importe lesquels.

Le tableau de bord Stripe a un onglet **Webhooks** qui montre chaque
notification envoyée, son code de réponse et son contenu. C'est là
qu'on regarde quand un paiement n'arrive pas.

## Rapprochement bancaire

Stripe regroupe plusieurs paiements et verse le total quelques jours
plus tard. C'est ce montant groupé qui apparaît sur votre relevé.

L'événement `payout.paid` rattache chaque règlement à son versement et
renseigne la commission réelle. Vous retrouvez donc les commandes
derrière un virement, et l'inverse.

## Passer en production

1. Basculez le sélecteur de mode dans les réglages
2. Remplacez la clé secrète par celle commençant par `sk_live_`
3. **Créez un second webhook** en mode production — celui de test ne
   fonctionne pas en production, et son secret est différent
4. Remplacez le secret de notification

L'oubli du point 3 est l'erreur la plus courante : les paiements
passent, mais aucun n'est jamais confirmé.
