File size: 2,139 Bytes
3078897
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 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: '<YOUR_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.