# Implémentation Embedded Signup WhatsApp Ce document décrit le flux technique pour permettre aux organisations B2B de connecter leur propre numéro WhatsApp à la plateforme. ## 1. Flux Frontend (SDK Meta) Le Frontend doit charger le SDK Facebook et déclencher la popup de configuration. ### Configuration Requise - **SDK URL** : `https://connect.facebook.net/en_US/sdk.js` - **App ID** : Configuré dans le Dashboard Meta App. - **Config ID** : Identifiant de la configuration d'Embedded Signup créée sur Meta Business Suite. ### Exemple d'appel JS ```javascript FB.login((response) => { if (response.authResponse) { const code = response.authResponse.code; // Envoyer le code ou le token au Backend } }, { config_id: '', response_type: 'code', override_default_response_type: true }); ``` ## 2. Point de Terminaison Backend (API) L'API réceptionne les données après la validation Meta côté client. ### Route : `POST /v1/organizations/:id/whatsapp-setup` **Authentification** : Requiert un token JWT valide d'un administrateur d'organisation ou une clé API d'administration. **Corps de la requête (JSON)** : ```json { "wabaId": "1234567890", "accessToken": "EAAG...", "phoneNumberId": "9876543210", "phoneNumber": "+33612345678" } ``` ### Traitement Backend : 1. **Validation** : Vérification de la présence des champs obligatoires via Zod. 2. **Chiffrement** : Le `accessToken` est chiffré à la volée avec l' `ENCRYPTION_SECRET` (AES-256-GCM). 3. **Persistance** : Mise à jour de la table `Organization` (champs `systemUserToken` et `wabaId`). 4. **Synchronisation** : `upsert` dans la table `WhatsAppPhoneNumber` pour lier l'ID technique au numéro lisible. 5. **Invalidation Cache** : Suppression des clés Redis `org:config:*` et `org:phone:*` pour forcer le Worker à charger la nouvelle configuration. ## 3. Sécurité - **Données en transit** : Toujours sous HTTPS + JWT. - **Données au repos** : Tous les tokens d'accès système sont chiffrés. Seul le code applicatif possédant l' `ENCRYPTION_SECRET` (non présent en DB) peut les lire.