# Ride & Beer — V22 panier & Stripe

## Ce qui est fait

- Panier **ski** (`panier.html?saison=hiver`) et panier **VTT** (`panier.html?saison=ete`) indépendants, utilisant sans changement les données des configurateurs précédents.
- Tarifs détaillés par pratiquant ; coordonnées du réservataire ; consentement CGV **distinct** du consentement de conservation de la carte ; saisie de code promo visible mais remise inactive.
- Bouton connecté à `api/start-stripe-setup.php` : Stripe Checkout en mode **setup**. Il ne collecte **aucun paiement au moment de l’enregistrement**.
- Backend PHP : recalcule le montant du panier sur le serveur, crée un dossier, un Customer et une session Stripe ; webhook Stripe avec contrôle de signature ; sauvegarde de la référence Stripe et de l’identifiant du moyen de paiement (aucun numéro de carte conservé).
- Les modifications du site existant sont limitées à `panier.html`. `confirmation.html`, `api/*` et `assets/panier-v22.*` sont des nouveaux fichiers. Les pages Accueil, Été, Hiver et Snack sont **identiques à la V21**.

## Ce qui est volontairement désactivé

1. **Pas de connexion réelle sans clé privée Stripe de test.** Aucune clé n’est fournie. Ne partagez jamais la clé privée dans le chat ou dans du JavaScript.
2. **Pas de réservation ferme ni de stock bloqué** : la future API PWA doit vérifier disponibilité, calendrier station et délai minimum de 24 h avant départ.
3. **Pas de prélèvement de no-show** : il nécessite contrôle métier du dossier (présent / absent, annulation à H-48), consentement conforme, montant vérifié et procédure de contestation. Une carte enregistrée ne garantit pas qu'un futur paiement passera (3D Secure, expiration, refus).
4. **Aucun e-mail automatique** : prévoir webhook, messagerie transactionnelle et rappels à J-2.
5. **Code promo** non activé faute de liste de codes/remises.

## Activation du mode test (sur OVH PHP)

1. Vérifier que l’hébergement supporte PHP 8+, `pdo_sqlite` et `curl`, avec HTTPS.
2. Copier `api/_config.example.php` vers `api/_config.php` **SUR LE SERVEUR**. Ne jamais ajouter ce fichier de secrets à une archive publique. `.htaccess` bloque son accès HTTP sous Apache, mais idéalement déplacer les secrets et la base hors du dossier public.
3. Renseigner `stripe_secret_key` avec la clé de **test**, `app_url` avec l’URL HTTPS réelle du site.
4. Dans Stripe > Developers > Webhooks, enregistrer `https://votre-domaine.fr/api/stripe-webhook.php` et l’événement `checkout.session.completed` ; reporter le secret `whsec_...` dans `_config.php`.
5. Sur la page du panier, ajouter un matériel, compléter les champs, cocher les **deux** accords, puis poursuivre : Stripe doit ouvrir sa page de garantie CB (aucun montant facturé).
6. Dans Stripe, utiliser une carte de test officielle, puis vérifier que le webhook a marqué le dossier `card_saved_pending_stock`. Ne jamais utiliser de vraie carte en test.

**Avant toute mise en production** : faire valider les CGV complètes et le mandat de facturation par un conseil compétent ; intégrer un lien réel vers ces CGV ; connecter le contrôle de stock et le délai de 24 h ; régler `legal_cgv_ready=true` et `stock_engine_ready=true` ; tester les webhooks et la procédure de rappel/no-show ; seulement ensuite autoriser `allow_live=true` et installer la clé live en lieu sûr.

Le montant est calculé **côté serveur** ; des validations complémentaires (inventaire, frais, codes promo, TVA, limites de tailles et calendrier) restent à brancher. Si une règle tarifaire change dans le site, modifier aussi `api/_lib.php`.

⚠️ **Important pour OVH** : ne pas mettre cette version en production telle quelle, car tant que les CGV et l’API de stock ne sont pas validées, elle ne constitue qu’une maquette technique testable.
