Expériences & Intégrations
Architecture de paiement, fournisseurs et infrastructure utilisés par ImmoSignal.
Intégration Whop — Paiement sans marque
Whop.com comme fournisseur de paiement fallback. Checkout externalisé sans marque, webhooks HMAC-SHA256, et gestion des abonnements avec période de grâce de 48h.
- SDK officiels : PyPI whop-sdk + npm @whopio/whop-sdk (TypeScript, full-typed)
- Checkout SDK : whopSdk.payments.createCheckoutSession({ planId, metadata })
- Webhooks : client.webhooks.unwrap(payload, headers) — vérification HMAC automatique
- Produits : client.products.create/update/list/delete() — gestion via SDK Python
- Expériences : client.experiences.duplicate/attach/detach() — gestion des accès utilisateur
- Sandbox : sandbox-api.whop.com pour les tests de développement
- Fallback : activé uniquement si Bonzai échoue (timeout ou erreur API)
Intégration Bonzai — Fournisseur primaire
Bonzai.pro comme fournisseur de paiement principal. Checkout simplifié via API REST, webhooks non signés (sécurisés par URL non-guessable).
- API REST : bonzai.pro/api/v1 — clé API via header X-API-Key
- Checkout : POST /products/{uuid}/checkout → URL de redirection
- Webhooks : product_access_granted, product_access_revoked (non signés)
- Sécurité : URL de webhook aléatoire (non-guessable) compense l'absence de signature
- Produit : UUID XWy2_8250 — crédits IA pré-définis
Architecture Proxy — paybook2luxe.com
Architecture à deux couches avec Apache ProxyPass sur le VPS MultiSaasDeploy. Les providers de paiement ne voient que paybook2luxe.com — jamais l'infrastructure réelle.
- Proxy Apache : ProxyPass /api/vakandi/ → Coolify backend
- Origine falsifiée : les appels API aux providers utilisent Origin: paybook2luxe.com
- Pages statiques : success.html / failed.html sur paybook2luxe.com/pay-vakandi/
- Tokens d'accès : single-use, 60min TTL, 256 bits d'entropie (secrets.token_urlsafe(32))
- OpSec : les providers ne peuvent pas découvrir l'infrastructure derrière le proxy
Stratégie de Paiement — Fallback Automatique
Système de paiement avec priorité et fallback automatique. Chaque provider implémente une interface commune (PaymentProvider) avec 3 méthodes : create_checkout_session, verify_webhook, get_transaction.
- Ordre de priorité : Bonzai → Whop → Stripe (legacy)
- Pattern Strategy : chaque provider est interchangeable via l'interface PaymentProvider
- Fallback : si le provider principal échoue, le suivant dans la liste est essayé automatiquement
- Rapport d'erreur : si tous les providers échouent, la liste complète des erreurs est retournée
- Transaction : persistée dans Directus (collection payment_transactions) avec crédits alloués
Flux de paiement complet
1. L'utilisateur clique sur un plan ou un achat de crédits
2. Le frontend appelle POST /payments/create-checkout
3. Le backend essaie Bonzai.pro en premier → si OK, retourne l'URL de checkout
4. Si Bonzai échoue → Whop est essayé automatiquement
5. Si Whop échoue aussi → Stripe (legacy) est utilisé
6. L'utilisateur paie sur la plateforme du fournisseur (jamais sur ImmoSignal)
7. Le webhook confirme le paiement → les crédits sont crédités instantanément