Fondamentaux
Concepts de Base
Architecture du proxy, isolation multi-tenant et gestion des environnements.
Architecture & Concepts
Architecture du Proxy
Quand votre app appelle ash-gate, voici ce qui se passe en coulisses :
1. Votre app Flutter envoie une requête
POST /fedapay/transactions
Header: X-Feda-Project-Key: pk_sandbox_xxx
2. FedapayTenantMiddleware s'exécute
→ Résout pk_sandbox_xxx vers le projet "mon-app"
→ Déchiffre la clé secrète réelle (AES-256)
→ Injecte req.apiKey, req.projectId, req.tenantId
3. ProxyAccessGuard vérifie les droits
→ Public Key : accès limité aux routes @ProxySafe()
→ Secret Key : accès complet
4. Le controller transmet à l'API FedaPay
avec les clés réelles, de façon transparente
5. La réponse revient à votre app
sans jamais exposer la vraie clé secrète.
Isolation Multi-tenant
Chaque projet dans ash-gate est totalement isolé :
| Donnée | Isolation |
|---|---|
| Clés d'API | Chiffrées par projet (AES-256) |
| Transactions | Taguées avec ash_project_id dans les métadonnées |
| Plans & abonnements | Liés à un tenantId et un projectId |
| Quotas & metering | Comptés par projet |
| Webhooks | Routés par ash_project_id |
Pourquoi ash_project_id dans les métadonnées ?
Chaque transaction créée via le proxy inclut automatiquement :
{
"metadata": {
"ash_project_id": "64f3a1b2c3d4e5f6a7b8c9d0"
}
}
Cela permet au webhook handler de savoir exactement quel projet ash-gate doit traiter l'événement, même si tous les projets partagent la même URL de webhook côté FedaPay.
Environnements
ash-gate supporte les deux modes FedaPay. Basculez avec le header X-Feda-Env :
# Mode sandbox (développement)
curl -H "X-Feda-Project-Key: pk_sandbox_xxx" \
-H "X-Feda-Env: sandbox" \
https://app.ashgateway.com/fedapay/transactions
# Mode live (production)
curl -H "X-Feda-Project-Key: pk_live_xxx" \
-H "X-Feda-Env: live" \
https://app.ashgateway.com/fedapay/transactions
!IMPORTANT Créez deux projets distincts ash-gate — un pour le sandbox, un pour la production. Cela évite tout mélange de clés et permet un monitoring séparé.
Public Key vs Secret Key
| Opération | Clé Publique (Public Key) | Clé Secrète (Secret Key) |
|---|---|---|
| Intégration mobile | Oui | Non |
| Création de transaction | Oui | Oui |
| Listing des transactions | Non | Oui |
| Création de plan SaaS | Non | Oui |
| Souscription à un plan | Oui | Oui |
| Annulation d'abonnement | Non | Oui |
| Gestion des clients | Non | Oui |