Documentation Intégrations Tierces
La solution de cashback nouvelle génération
INTRODUCTION
1.1 Objectif du Document
Ce document décrit en détail l'ensemble des intégrations avec les services tiers utilisés par la plateforme REWAPP. Il fournit les spécifications techniques, configurations, exemples d'implémentation et codes d'erreur pour chaque service externe intégré.
1.2 Vue d'Ensemble des Intégrations
Services Tiers Intégrés
| Catégorie | Service | Fournisseur | Statut |
|---|---|---|---|
| Notifications Push | Android | Firebase Cloud Messaging (FCM) |
Principal |
| Notifications Push | iOS | APNs via FCM |
Principal |
| Emails | Transactionnels | SendGrid |
Principal |
| Emails | Marketing | Brevo (ex-Sendinblue) |
Backup |
| SMS | Transactionnels | Twilio |
Principal |
| Analytics | Web/Mobile | Google Analytics 4 |
Principal |
| Analytics | Product Analytics | Mixpanel |
Principal |
| Error Tracking | Toutes plateformes | Sentry |
Principal |
1.3 Prérequis Techniques
- Node.js 20 LTS
- NestJS 10.x
- TypeScript 5.x
- Accès Variables d'environnement CapRover
- Comptes développeur configurés sur chaque plateforme
NOTIFICATIONS PUSH
2.1 Architecture et Fournisseurs
REWAPP utilise Firebase Cloud Messaging (FCM) comme service principal pour l'envoi des notifications push sur Android et iOS. FCM agit comme proxy vers APNs pour les appareils iOS.
Configuration des Plateformes
| Plateforme | Service | Protocole | Port |
|---|---|---|---|
| Android | Firebase Cloud Messaging | HTTPS (HTTP/2) |
443 |
| iOS | APNs via FCM | HTTPS (HTTP/2) |
443 |
Avantages de cette architecture
- API unifiée pour Android et iOS
- Gestion automatique des tokens
- Analytics intégrés
- Topics pour segmentation
- Notifications riches (images, actions)
2.2 Configuration Firebase Cloud Messaging
2.2.1 Création du Projet Firebase
-
1
Accès Console Firebase
Accéder à la console Firebase (console.firebase.google.com)
-
2
Création du projet
Créer un nouveau projet "REWAPP-Production"
-
3
Activation Cloud Messaging
Activer Cloud Messaging dans les paramètres
-
4
Configuration
Télécharger
google-services.json(Android) etGoogleService-Info.plist(iOS)
2.2.2 Clés et Credentials
| Clé | Description | Stockage |
|---|---|---|
Server Key |
Clé d'authentification API serveur | Variables CapRover |
Sender ID |
Identifiant du projet Firebase | Variables d'environnement |
VAPID Key |
Clé pour Web Push (Dashboard PWA) | Variables CapRover |
FCM_SERVER_KEY=<clé_serveur_firebase>
FCM_SENDER_ID=<sender_id>
2.3 Configuration Apple Push Notification Service
Certificats Requis
| Type | Validité | Environnement | Extension |
|---|---|---|---|
APNs Auth Key (p8) |
Illimitée | Dev + Prod | .p8 |
APNs Certificate |
1 an | Dev ou Prod | .p12 |
RECOMMANDATION
Utiliser APNs Auth Key (.p8) car elle n'expire pas et fonctionne pour les deux environnements.
2.4 Types de Notifications REWAPP
2.4.1 Notifications Transactionnelles
| Type | Déclencheur | Titre | Priorité |
|---|---|---|---|
transaction_detected |
Détection achat partenaire | "Transaction détectée" | Haute |
points_credited |
Crédit de points sur compte | "Points crédités !" | Haute |
qr_scanned |
QR code scanné par partenaire | "Paiement confirmé" | Haute |
points_expiring |
J-30 avant expiration points | "Points bientôt expirés" | Normale |
withdrawal_completed |
Virement bancaire effectué | "Virement effectué" | Haute |
2.4.2 Notifications Marketing
| Type | Déclencheur | Titre | Priorité |
|---|---|---|---|
new_partner |
Nouveau partenaire dans la zone | "Nouveau partenaire" | Normale |
campaign_available |
Nouvelle campagne promotionnelle | "Offre spéciale" | Normale |
loyalty_upgrade |
Passage au palier supérieur | "Félicitations !" | Normale |
2.4.3 Notifications de Sécurité
| Type | Déclencheur | Titre | Priorité |
|---|---|---|---|
new_device_login |
Connexion nouvel appareil | "Nouvelle connexion" | Haute |
password_changed |
Changement mot de passe | "Mot de passe modifié" | Haute |
card_linked |
Nouvelle carte liée | "Carte ajoutée" | Normale |
2.5 Implémentation Backend
2.5.1 Structure du Payload FCM
{
"to": "<device_token>",
"notification": {
"title": "Points crédités !",
"body": "Vous avez reçu 45 points chez Boulangerie Martin",
"sound": "default",
"badge": 1,
"click_action": "OPEN_ACTIVITY"
},
"data": {
"type": "points_credited",
"transaction_id": "txn_abc123",
"points": "45",
"partner_name": "Boulangerie Martin",
"deep_link": "rewapp://transactions/txn_abc123"
},
"android": {
"priority": "high",
"notification": {
"channel_id": "transactions"
}
},
"apns": {
"headers": {
"apns-priority": "10"
},
"payload": {
"aps": {
"category": "TRANSACTION"
}
}
}
}
2.5.2 Topics FCM Disponibles
all_users— Tous les utilisateurspremium_users— Utilisateurs avec abonnement premiumpartner_<id>— Clients d'un partenaire spécifiquecity_<code>— Utilisateurs d'une ville
ENVOI EN BATCH
Pour les envois massifs (>500 destinataires), utiliser sendMulticast() avec batches de 500 tokens maximum.
2.6 Gestion des Tokens
Cycle de Vie des Tokens
| Événement | Action | Stockage |
|---|---|---|
| Installation app | Enregistrer token | user_devices |
| Mise à jour token | Mettre à jour en base | user_devices |
| Désinstallation | Marquer token invalide | Soft delete |
| Erreur (NotRegistered) | Supprimer token | Hard delete |
2.7 Personnalisation et Deep Linking
Deep Links Supportés
| Deep Link | Écran | Paramètres |
|---|---|---|
rewapp://home |
Accueil | - |
rewapp://transactions |
Liste transactions | - |
rewapp://transactions/:id |
Détail transaction | id |
rewapp://qrcode |
Génération QR | amount (optionnel) |
rewapp://partners |
Liste partenaires | - |
rewapp://partners/:id |
Détail partenaire | id |
rewapp://profile |
Profil utilisateur | - |
rewapp://settings |
Paramètres | - |
2.8 Codes d'Erreur FCM
Codes d'Erreur
| Code | Message | Cause | Action |
|---|---|---|---|
MissingRegistration |
Token manquant | Requête sans token | Vérifier payload |
InvalidRegistration |
Token invalide | Format token incorrect | Supprimer token |
NotRegistered |
Token désactivé | App désinstallée | Supprimer token |
MessageTooBig |
Payload trop grand | Payload > 4KB | Réduire data |
Unavailable |
Service indisponible | FCM down | Retry avec exponential backoff |
EMAILS TRANSACTIONNELS
3.1 Architecture et Fournisseurs
| Fournisseur | Rôle | Volume | Tarif |
|---|---|---|---|
| SendGrid | Principal | Jusqu'à 100K/mois | 0.0025€/email |
| Brevo | Backup | Illimité | Abonnement mensuel |
SendGrid est utilisé comme service principal pour sa fiabilité et son excellent taux de délivrabilité (>99%).
3.2 Configuration SendGrid
3.2.1 Configuration DNS Requise
Enregistrements DNS
| Type | Nom | Valeur | TTL |
|---|---|---|---|
TXT |
@ | v=spf1 include:sendgrid.net ~all |
3600 |
CNAME |
em1234.rewapp.fr | u1234.wl.sendgrid.net |
3600 |
CNAME |
s1._domainkey.rewapp.fr | s1.domainkey.u1234.wl.sendgrid.net |
3600 |
TXT |
_dmarc.rewapp.fr | v=DMARC1; p=quarantine; rua=mailto:dmarc@rewapp.fr |
3600 |
3.2.2 Credentials
SENDGRID_API_KEY=SG.xxxxxxxxxxxxxxxxxxxxx
SENDGRID_FROM_EMAIL=noreply@rewapp.fr
SENDGRID_FROM_NAME=REWAPP
3.3 Templates d'Emails REWAPP
Liste des Templates
| ID Template | Nom | Type | Déclencheur |
|---|---|---|---|
d-welcome001 |
Bienvenue | Transactionnel | Inscription |
d-confirm002 |
Confirmation email | Transactionnel | Inscription |
d-reset003 |
Réinitialisation MDP | Transactionnel | Demande reset |
d-transaction004 |
Notification transaction | Transactionnel | Transaction détectée |
d-points005 |
Points crédités | Transactionnel | Crédit points |
d-expiring006 |
Points expirant bientôt | Transactionnel | J-30, J-7 |
d-withdrawal007 |
Confirmation virement | Transactionnel | Demande virement |
d-monthly008 |
Récapitulatif mensuel | Marketing | 1er du mois |
d-campaign009 |
Campagne promotionnelle | Marketing | Campagne active |
3.4 Variables Dynamiques
Variables Globales
| Variable | Description | Exemple |
|---|---|---|
{{user.firstName}} |
Prénom utilisateur | Marine |
{{user.lastName}} |
Nom utilisateur | Dupont |
{{user.email}} |
Email utilisateur | marine@email.com |
{{transaction.amount}} |
Montant achat | 45,50 € |
{{transaction.points}} |
Points gagnés | 45 |
{{points.balance}} |
Solde actuel | 1 250 |
3.5 Tracking et Analytics Email
Événements Trackés
| Événement | Description | Webhook |
|---|---|---|
processed |
Email traité par SendGrid | Oui |
delivered |
Email délivré au serveur destination | Oui |
open |
Email ouvert | Oui |
click |
Lien cliqué | Oui |
bounce |
Email rejeté | Oui |
spam_report |
Marqué comme spam | Oui |
3.6 Conformité et Bonnes Pratiques
RGPD
- Consentement explicite requis pour emails marketing
- Lien de désinscription obligatoire dans chaque email
- Possibilité de gérer les préférences email
- Suppression des données sur demande
Bonnes Pratiques
- Fréquence maximale : 1 email marketing/semaine
- Emails transactionnels sans limite (événements utilisateur)
- Subject lines clairs et non-trompeurs
- Version texte plain disponible
- Poids total < 102KB
3.7 Codes d'Erreur SendGrid
| Code | Message | Cause | Action |
|---|---|---|---|
400 |
Bad Request | Payload invalide | Vérifier format |
401 |
Unauthorized | API Key invalide | Vérifier credentials |
429 |
Too Many Requests | Rate limit atteint | Retry avec backoff |
500 |
Server Error | Erreur SendGrid | Retry ou fallback Brevo |
SMS TRANSACTIONNELS
USAGE LIMITÉ
Les SMS sont réservés aux cas critiques uniquement pour optimiser les coûts.
4.1 Architecture et Fournisseur
| Fournisseur | Service | Tarif France | Tarif International |
|---|---|---|---|
| Twilio | Programmable SMS | 0.0725€/SMS | Variable par pays |
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_PHONE_NUMBER=+33xxxxxxxxx
TWILIO_MESSAGING_SERVICE_SID=MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4.2 Cas d'Usage SMS REWAPP
| Cas d'Usage | Déclencheur | Template | Priorité |
|---|---|---|---|
| Authentification 2FA | Connexion admin | Code: {{code}} |
Critique |
| Alerte sécurité | Connexion suspecte | Connexion détectée depuis {{device}} |
Critique |
| Confirmation virement | Virement > 500€ | Virement {{amount}} initié |
Haute |
Templates SMS
REWAPP - Votre code de vérification est : {{code}}. Valide 5 minutes. Ne le partagez jamais.
REWAPP - Nouvelle connexion détectée sur {{device}} à {{time}}. Si ce n'est pas vous, changez votre mot de passe immédiatement.
4.3 Codes d'Erreur Twilio
| Code | Message | Cause | Action |
|---|---|---|---|
21211 |
Invalid phone number | Numéro invalide | Vérifier format E.164 |
21610 |
Message blocked | Numéro dans blacklist | Utilisateur désinscrit |
30003 |
Unreachable | Téléphone éteint | Retry plus tard |
30006 |
Landline or unreachable | Numéro fixe | Utiliser email |
ANALYTICS ET TRACKING
5.1 Architecture Analytics
REWAPP utilise une double approche analytics :
| Outil | Focus | Plateforme | Données |
|---|---|---|---|
| Google Analytics 4 | Acquisition & Attribution | Web + Mobile | Sessions, conversions, sources |
| Mixpanel | Product Analytics | Mobile + Dashboards | Events, funnels, rétention |
5.2 Configuration Google Analytics 4
GA4_MEASUREMENT_ID=G-XXXXXXXXXX
GA4_API_SECRET=xxxxxxxxxxxxxxxxxxx
Conversions GA4
| Conversion | Événement | Valeur |
|---|---|---|
| Inscription | sign_up |
1€ |
| Liaison carte | card_linked |
5€ |
| Première transaction | first_transaction |
10€ |
| Utilisation QR | qr_code_used |
2€ |
5.3 Configuration Mixpanel
MIXPANEL_PROJECT_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MIXPANEL_API_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5.4 Événements REWAPP
Événements Utilisateur
| Événement | Déclencheur | Propriétés |
|---|---|---|
app_open |
Ouverture app | platform, version, source |
sign_up_completed |
Fin inscription | method, referral_code |
card_linked |
Carte liée | bank_name, card_type |
transaction_detected |
Transaction détectée | partner_id, amount, points |
qr_code_generated |
Génération QR | amount, points_used |
withdrawal_requested |
Demande virement | amount, points_converted |
5.5 Propriétés Utilisateur
| Propriété | Type | Description |
|---|---|---|
user_id |
String | ID unique utilisateur |
total_points |
Number | Solde de points actuel |
total_transactions |
Number | Nombre total de transactions |
lifetime_value |
Number | Valeur totale générée |
loyalty_tier |
String | Palier fidélité (Bronze→Diamant) |
has_linked_card |
Boolean | Carte bancaire liée |
5.6 Conformité RGPD
Consentement
- Consentement explicite requis avant tout tracking
- Granularité :
analytics_essential,analytics_marketing - Stockage du consentement en base de données
- Révocation possible à tout moment
Anonymisation
- IP anonymisé dans GA4 (activé par défaut en EU)
- Email hashé (SHA256) avant envoi
- Pas de données personnelles dans les événements
- User ID interne (UUID) uniquement
Rétention des Données
| Outil | Rétention | Configuration |
|---|---|---|
| Google Analytics 4 | 14 mois | Minimum EU requis |
| Mixpanel | 24 mois | Configurable par projet |
ERROR TRACKING ET MONITORING
6.1 Architecture Sentry
Sentry est utilisé pour capturer et analyser les erreurs sur toutes les plateformes REWAPP.
Projets Sentry
| Plateforme | SDK | Projet Sentry |
|---|---|---|
| App Mobile (RN) | @sentry/react-native |
rewapp-mobile |
| Site Vitrine | @sentry/nextjs |
rewapp-vitrine |
| Dashboard Admin | @sentry/react |
rewapp-admin |
| Dashboard Partenaire | @sentry/react |
rewapp-partner |
| Backend API | @sentry/nestjs |
rewapp-api |
6.2 Configuration
SENTRY_DSN=https://xxxxxxxxx@sentry.io/xxxxxxx
SENTRY_ORG=rewapp
SENTRY_PROJECT=rewapp-api
SENTRY_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6.3 Alertes et Notifications
Règles d'Alerte
| Condition | Seuil | Canal | Priorité |
|---|---|---|---|
| Nouvelle erreur | 1 occurrence | Slack #errors | Info |
| Erreur fréquente | >10/heure | Slack #errors | Warning |
| Erreur critique | >100/heure | Slack + PagerDuty | Critical |
| Régression | Nouvelle version | Slack #releases | Warning |
Canaux de Notification
- Slack #rewapp-errors — Toutes les erreurs
- Slack #rewapp-critical — Erreurs critiques uniquement
- PagerDuty — Erreurs critiques en production (24/7)
- Email — Récapitulatif hebdomadaire
GESTION DES SECRETS ET SÉCURITÉ
7.1 Variables d'environnement CapRover
Tous les credentials des services tiers sont stockés dans les variables d'environnement CapRover.
Structure des Secrets
| Nom Secret | Contenu | Environnement |
|---|---|---|
rewapp/prod/firebase |
FCM_SERVER_KEY, FCM_SENDER_ID | Production |
rewapp/prod/sendgrid |
SENDGRID_API_KEY | Production |
rewapp/prod/twilio |
TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN | Production |
rewapp/prod/analytics |
GA4_MEASUREMENT_ID, MIXPANEL_TOKEN | Production |
rewapp/prod/sentry |
SENTRY_DSN, SENTRY_AUTH_TOKEN | Production |
7.2 Rotation des Clés
| Service | Fréquence | Méthode |
|---|---|---|
| Firebase Server Key | Annuelle | Manuelle via console |
| SendGrid API Key | 90 jours | Manuelle (Variables CapRover) |
| Twilio Auth Token | 90 jours | Manuelle via console |
| Sentry Auth Token | Annuelle | Manuelle via settings |
ENVIRONNEMENTS ET CONFIGURATION
8.1 Configuration par Environnement
Environnements
| Service | Développement | Staging | Production |
|---|---|---|---|
| FCM | Projet Firebase Dev | Projet Firebase Staging | Projet Firebase Prod |
| SendGrid | Sandbox mode | Compte test | Compte production |
| Twilio | Test credentials | Test credentials | Live credentials |
| GA4 | Propriété Dev | Propriété Staging | Propriété Prod |
| Mixpanel | Projet Dev | Projet Staging | Projet Prod |
| Sentry | Projet Dev | Projet Staging | Projet Prod |
8.2 Tests et Validation
Tests Unitaires
- Mock des clients HTTP pour chaque service
- Validation des payloads avant envoi
- Tests des handlers d'erreur
Tests d'Intégration
- Environnement Staging avec données de test
- Numéros de téléphone de test Twilio
- Emails de test SendGrid (sandbox)
- Tokens FCM de test
Monitoring en Production
- Dashboard Grafana pour métriques d'envoi
- Alertes sur taux d'échec > 1%
- Logs centralisés dans ELK Stack
RÉCAPITULATIF ET RÉFÉRENCES
9.1 Récapitulatif des Intégrations
Vue d'Ensemble
| Service | Fournisseur | SDK | Documentation |
|---|---|---|---|
| Push Notifications | Firebase (FCM) | firebase-admin |
firebase.google.com/docs/cloud-messaging |
| Emails | SendGrid | @sendgrid/mail |
docs.sendgrid.com |
| SMS | Twilio | twilio |
twilio.com/docs/sms |
| Analytics | Google Analytics 4 | @google-analytics/data |
developers.google.com/analytics |
| Product Analytics | Mixpanel | mixpanel |
developer.mixpanel.com |
| Error Tracking | Sentry | @sentry/* |
docs.sentry.io |
9.2 Documents Complémentaires
- 4.5 Stack Technique Détaillé — Technologies et justifications
- 6.1 Document de Sécurité — Politiques de sécurité globales
- 7.1 Documentation API Backend — Endpoints et webhooks
- 7.2 Spécifications Webhooks — Détail des webhooks entrants
- 7.3 Documentation Intégration Solution Bancaire — Card linking et virements
- 13.3 Plan de Tracking Analytics — Événements détaillés
9.3 Contacts et Support
| Service | Support | SLA |
|---|---|---|
| Firebase | Console Firebase + Support Google | Standard |
| SendGrid | support.sendgrid.com | 99.95% uptime |
| Twilio | support.twilio.com | 99.95% uptime |
| Mixpanel | help.mixpanel.com | Enterprise |
| Sentry | sentry.io/support | Business plan |