Files
site/MIGRATION_API.md
2026-01-03 21:11:17 +01:00

3.4 KiB

Migration du site vers l'API Laravel

Ce document décrit la migration du projet site de Supabase vers l'API Laravel.

Changements effectués

1. Remplacement du client Supabase

Fichier supprimé :

  • src/lib/supabaseClient.js

Fichier créé :

  • src/lib/apiClient.js - Client API pour communiquer avec l'API Laravel

2. Adaptation des pages

OrderPage.jsx

  • Avant : Utilisait supabase.functions.invoke('create-checkout-session')
  • Après : Utilise api.stripe.createCheckoutSession()
  • Suppression de l'utilisation de loadStripe et redirectToCheckout car l'API retourne directement l'URL de checkout
  • Simplification du code de redirection vers Stripe

ConfirmationPage.jsx

  • Avant : Utilisait supabase.functions.invoke('send-order-confirmation-email')
  • Après : Utilise api.orders.confirmOrder()

3. Dépendances

Supprimé :

  • @supabase/supabase-js (plus nécessaire)

Conservé :

  • @stripe/stripe-js (toujours utilisé pour la validation côté client si nécessaire)

Configuration

Variables d'environnement

Ajoutez dans votre fichier .env :

VITE_API_URL=http://localhost:8000

Pour la production, utilisez :

VITE_API_URL=https://api.ditesleenchanson.fr

Structure de l'API Client

Le client API (apiClient.js) expose :

api.stripe.createCheckoutSession(options)

Crée une session de checkout Stripe.

Paramètres :

  • priceId (string, requis) - ID du prix Stripe
  • orderData (object, requis) - Données de la commande
  • successUrl (string, requis) - URL de succès
  • cancelUrl (string, requis) - URL d'annulation
  • quantity (number, optionnel) - Quantité (défaut: 1)
  • customerEmail (string, optionnel) - Email du client

Retour :

{
  data: {
    sessionId: string,
    url: string  // URL de redirection Stripe
  },
  error: null | { message: string, status: number }
}

api.orders.confirmOrder(orderData, sessionId)

Confirme une commande et envoie les emails.

Paramètres :

  • orderData (object, requis) - Données de la commande
  • sessionId (string, requis) - ID de session Stripe

Retour :

{
  data: {
    success: boolean,
    orderId: string,
    customerEmail: string,
    emailSent: boolean,
    customerEmailError: string | null,
    adminEmailSent: boolean,
    adminEmailError: string | null
  },
  error: null | { message: string, status: number }
}

Différences avec Supabase

  1. Pas de gestion d'authentification : Le site n'a pas besoin d'authentification, contrairement au backoffice
  2. URLs directes : L'API retourne directement l'URL de checkout Stripe, pas besoin de redirectToCheckout
  3. Format de réponse : Les réponses sont structurées différemment mais compatibles avec le code existant

Tests

Pour tester la migration :

  1. Vérifiez que VITE_API_URL est correctement configuré
  2. Testez le processus de commande complet :
    • Sélection d'un produit
    • Remplissage du formulaire
    • Création de la session Stripe
    • Redirection vers Stripe
    • Confirmation après paiement
    • Réception des emails

Notes

  • Le code de redirection vers Stripe a été simplifié car l'API retourne directement l'URL
  • Les données de commande sont toujours stockées dans localStorage pour la page de confirmation
  • La structure des données reste identique pour assurer la compatibilité