v1.0 Novembre 2025
Document 7.4

Documentation Intégrations Tierces

La solution de cashback nouvelle génération

24 novembre 2025
Version 1.0
1

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
2

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. 1
    Accès Console Firebase

    Accéder à la console Firebase (console.firebase.google.com)

  2. 2
    Création du projet

    Créer un nouveau projet "REWAPP-Production"

  3. 3
    Activation Cloud Messaging

    Activer Cloud Messaging dans les paramètres

  4. 4
    Configuration

    Télécharger google-services.json (Android) et GoogleService-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
ENV
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

JSON
{
  "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 utilisateurs
  • premium_users — Utilisateurs avec abonnement premium
  • partner_<id> — Clients d'un partenaire spécifique
  • city_<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
3

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

ENV
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
4

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
ENV
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

2FA Admin
REWAPP - Votre code de vérification est : {{code}}. Valide 5 minutes. Ne le partagez jamais.
Alerte Sécurité
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
5

ANALYTICS ET TRACKING

5.1 Architecture Analytics

REWAPP utilise une double approche analytics :

GA4 Acquisition & Attribution
Mixpanel Product 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

ENV
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

ENV
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
6

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

ENV
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
7

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
8

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
9

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