|
| 1 | +# Guide de Migration Firebase vers Supabase - Phase 3 |
| 2 | + |
| 3 | +## Fonctions Edge Migrées |
| 4 | + |
| 5 | +### ✅ Fonctions Stripe |
| 6 | + |
| 7 | +#### 1. `stripe-setup-intent` |
| 8 | +**Ancienne fonction:** `functions/src/stripeCreateSetup.ts` |
| 9 | +**Nouvelle fonction:** `supabase/functions/stripe-setup-intent/index.ts` |
| 10 | + |
| 11 | +- Crée des Setup Intents Stripe pour configurer les méthodes de paiement |
| 12 | +- Gère automatiquement les clients Stripe |
| 13 | +- Met à jour les campagnes avec les informations Stripe |
| 14 | +- **Authentification requise:** ✅ |
| 15 | + |
| 16 | +#### 2. `stripe-webhook` |
| 17 | +**Ancienne fonction:** `functions/src/processStripeWebhook.ts` |
| 18 | +**Nouvelle fonction:** `supabase/functions/stripe-webhook/index.ts` |
| 19 | + |
| 20 | +- Traite tous les webhooks Stripe (checkout, setup_intent, etc.) |
| 21 | +- Met à jour automatiquement les campagnes dans Supabase |
| 22 | +- Gère l'attachement des méthodes de paiement |
| 23 | +- **Authentification requise:** ❌ (webhook public) |
| 24 | +- **Secret requis:** `STRIPE_WEBHOOK_SECRET` |
| 25 | + |
| 26 | +#### 3. `stripe-payment-methods` |
| 27 | +**Ancienne fonction:** `functions/src/stripeGetPaymentMethods.ts` + autres |
| 28 | +**Nouvelle fonction:** `supabase/functions/stripe-payment-methods/index.ts` |
| 29 | + |
| 30 | +- GET: Récupère les méthodes de paiement d'un utilisateur |
| 31 | +- POST: Attache ou définit une méthode par défaut |
| 32 | +- DELETE: Supprime une méthode de paiement |
| 33 | +- **Authentification requise:** ✅ |
| 34 | + |
| 35 | +### ✅ Fonctions de Validation |
| 36 | + |
| 37 | +#### 4. `validate-campaign` |
| 38 | +**Ancienne fonction:** `functions/src/validateCampaignData.ts` |
| 39 | +**Nouvelle fonction:** `supabase/functions/validate-campaign/index.ts` |
| 40 | + |
| 41 | +- Valide les données de campagne avant création |
| 42 | +- Vérifie les URLs, domaines suspects, limites |
| 43 | +- Retourne des données nettoyées |
| 44 | +- **Authentification requise:** ✅ |
| 45 | + |
| 46 | +### ✅ Fonctions de Gestion |
| 47 | + |
| 48 | +#### 5. `manage-affiliates` |
| 49 | +**Ancienne fonction:** Logique dispersée dans Firebase |
| 50 | +**Nouvelle fonction:** `supabase/functions/manage-affiliates/index.ts` |
| 51 | + |
| 52 | +- CRUD complet pour les affiliés |
| 53 | +- Génération automatique de codes de tracking |
| 54 | +- Validation des données d'affiliés |
| 55 | +- **Authentification requise:** ✅ |
| 56 | + |
| 57 | +#### 6. `track-conversion` |
| 58 | +**Ancienne fonction:** Logique Firebase de tracking |
| 59 | +**Nouvelle fonction:** `supabase/functions/track-conversion/index.ts` |
| 60 | + |
| 61 | +- POST: Enregistre de nouvelles conversions |
| 62 | +- GET: Récupère les conversions avec filtres |
| 63 | +- Calcul automatique des commissions |
| 64 | +- Système d'audit et de vérification |
| 65 | +- **Authentification requise:** ❌ (tracking public) |
| 66 | + |
| 67 | +#### 7. `calculate-commissions` |
| 68 | +**Ancienne fonction:** `functions/src/calculateCommissions.ts` |
| 69 | +**Nouvelle fonction:** `supabase/functions/calculate-commissions/index.ts` |
| 70 | + |
| 71 | +- Calcule les commissions par période |
| 72 | +- Génère des rapports détaillés |
| 73 | +- Groupage par affilié et campagne |
| 74 | +- **Authentification requise:** ✅ |
| 75 | + |
| 76 | +### ✅ Fonctions Shopify |
| 77 | + |
| 78 | +#### 8. `shopify-oauth` |
| 79 | +**Ancienne fonction:** `functions/src/shopifyOAuth.ts` |
| 80 | +**Nouvelle fonction:** `supabase/functions/shopify-oauth/index.ts` |
| 81 | + |
| 82 | +- POST: Génère des URLs d'autorisation Shopify |
| 83 | +- PUT: Échange les codes d'autorisation contre des tokens |
| 84 | +- Gestion sécurisée des états OAuth |
| 85 | +- **Authentification requise:** ✅ |
| 86 | + |
| 87 | +## Configuration des Secrets |
| 88 | + |
| 89 | +Les secrets suivants ont été configurés dans Supabase : |
| 90 | + |
| 91 | +- ✅ `STRIPE_SECRET_KEY` - Clé secrète Stripe |
| 92 | +- ✅ `STRIPE_WEBHOOK_SECRET` - Secret pour vérifier les webhooks Stripe |
| 93 | +- ✅ `SHOPIFY_API_KEY` - Clé API Shopify |
| 94 | +- ✅ `SHOPIFY_API_SECRET` - Secret API Shopify |
| 95 | +- ✅ `SUPABASE_SERVICE_ROLE_KEY` - Pour les opérations de service |
| 96 | + |
| 97 | +## Fonctions Publiques (sans JWT) |
| 98 | + |
| 99 | +Ces fonctions sont configurées pour être accessibles sans authentification : |
| 100 | + |
| 101 | +- `stripe-webhook` - Pour recevoir les webhooks de Stripe |
| 102 | +- `track-conversion` - Pour permettre le tracking depuis des sites externes |
| 103 | +- Toutes les fonctions Shopify existantes |
| 104 | + |
| 105 | +## Tests Recommandés |
| 106 | + |
| 107 | +### 1. Test des Setup Intents Stripe |
| 108 | +```javascript |
| 109 | +const { data } = await supabase.functions.invoke('stripe-setup-intent', { |
| 110 | + body: { |
| 111 | + userEmail: 'test@example.com', |
| 112 | + campaignName: 'Test Campaign', |
| 113 | + campaignId: 'uuid-here' |
| 114 | + } |
| 115 | +}); |
| 116 | +``` |
| 117 | + |
| 118 | +### 2. Test de Validation de Campagne |
| 119 | +```javascript |
| 120 | +const { data } = await supabase.functions.invoke('validate-campaign', { |
| 121 | + body: { |
| 122 | + name: 'Ma Campagne', |
| 123 | + description: 'Description test', |
| 124 | + target_url: 'https://example.com', |
| 125 | + is_active: true, |
| 126 | + default_commission_rate: 15 |
| 127 | + } |
| 128 | +}); |
| 129 | +``` |
| 130 | + |
| 131 | +### 3. Test de Gestion d'Affiliés |
| 132 | +```javascript |
| 133 | +// Créer un affilié |
| 134 | +const { data } = await supabase.functions.invoke('manage-affiliates', { |
| 135 | + body: { |
| 136 | + name: 'John Doe', |
| 137 | + email: 'john@example.com', |
| 138 | + campaignId: 'uuid-here', |
| 139 | + commissionRate: 20 |
| 140 | + } |
| 141 | +}); |
| 142 | +``` |
| 143 | + |
| 144 | +### 4. Test de Tracking de Conversion |
| 145 | +```javascript |
| 146 | +// Enregistrer une conversion (sans auth) |
| 147 | +const response = await fetch(`${SUPABASE_URL}/functions/v1/track-conversion`, { |
| 148 | + method: 'POST', |
| 149 | + headers: { |
| 150 | + 'Content-Type': 'application/json' |
| 151 | + }, |
| 152 | + body: JSON.stringify({ |
| 153 | + campaignId: 'uuid-here', |
| 154 | + affiliateId: 'uuid-here', |
| 155 | + amount: 99.99, |
| 156 | + orderId: 'order-123' |
| 157 | + }) |
| 158 | +}); |
| 159 | +``` |
| 160 | + |
| 161 | +## Prochaines Étapes |
| 162 | + |
| 163 | +### Phase 4 - Migration des Hooks et Services Frontend |
| 164 | +1. Mettre à jour `useCampaigns` pour utiliser Supabase |
| 165 | +2. Migrer `useAffiliates` vers les nouvelles Edge Functions |
| 166 | +3. Adapter les services Stripe pour utiliser les nouvelles fonctions |
| 167 | +4. Mettre à jour les composants de tracking |
| 168 | + |
| 169 | +### Phase 5 - Nettoyage |
| 170 | +1. Supprimer les anciens fichiers Firebase |
| 171 | +2. Nettoyer les dépendances Firebase inutilisées |
| 172 | +3. Mettre à jour la documentation |
| 173 | + |
| 174 | +## Points d'Attention |
| 175 | + |
| 176 | +1. **Webhooks Stripe** - Mettre à jour l'URL du webhook dans Stripe Dashboard vers : |
| 177 | + `https://wsvhmozduyiftmuuynpi.supabase.co/functions/v1/stripe-webhook` |
| 178 | + |
| 179 | +2. **CORS** - Toutes les fonctions sont configurées avec CORS ouvert |
| 180 | + |
| 181 | +3. **Logs** - Utiliser les logs Supabase pour le debugging : |
| 182 | + - Dashboard > Functions > [nom-fonction] > Logs |
| 183 | + |
| 184 | +4. **RLS** - Les fonctions utilisent soit l'auth utilisateur soit le service role key selon les besoins |
| 185 | + |
| 186 | +## Avantages de la Migration |
| 187 | + |
| 188 | +- ✅ **Performance** - Edge Functions plus rapides que Cloud Functions |
| 189 | +- ✅ **Coûts** - Pricing plus avantageux que Firebase Functions |
| 190 | +- ✅ **Intégration** - Native avec la base de données Supabase |
| 191 | +- ✅ **Développement** - Développement et déploiement simplifiés |
| 192 | +- ✅ **Monitoring** - Logs et monitoring intégrés au dashboard Supabase |
0 commit comments