## Principe Le mode sandbox vous permet de **développer et tester** votre intégration sans créer de ressources réelles ni débiter votre wallet live. Un token `kh_test_*` active automatiquement le mode sandbox pour toutes les requêtes. ## Comportement par mode | Opération | Mode Live (`kh_live_`) | Mode Sandbox (`kh_test_`) | |-----------|----------------------|--------------------------| | Création client | Compte utilisateur créé (`is_reseller_client=true`) | Enregistrement fictif, `user_id=null` | | Hébergement web | Compte cPanel réel créé | Simulation — aucune ressource créée | | Domaine | Enregistrement réel effectué | Simulation — 5 000 XAF débité du wallet sandbox | | VPS | Serveur cloud provisionné | Simulation — `server_id: sb_xxxx`, `ipv4: 0.0.0.0` | | Email Pro | Boîtes email créées | Simulation — `status: active` immédiat | | Wallet débité | Wallet **live** | Wallet **sandbox** | | Webhooks | Envoyés normalement | Envoyés avec `"sandbox": true` | | Tickets | Vrais tickets KennHosting | Vrais tickets (pas de simulation) | ## Créer un token sandbox Depuis votre espace revendeur → API, cochez **"Token sandbox (kh_test_)"** lors de la création. ## Créditer le wallet sandbox Le wallet sandbox est rechargeable librement (gratuit) via : ```bash POST /api/v1/reseller/wallet/sandbox/credit ``` ```json { "amount": 500000 } ``` **Réponse :** ```json { "success": true, "data": { "balance": 500000, "credited": 500000, "transaction_id": 1 } } ``` Cette route est uniquement accessible avec un token `kh_test_`. Un token live retourne `{"code": "sandbox_only"}`. ## Isolation des données Les clients créés en sandbox ont `"sandbox": true` et ne sont **jamais** visibles depuis un token live. Un token live ne voit que ses clients live, un token sandbox ne voit que ses clients sandbox. ```bash # Token SANDBOX → liste uniquement les clients sandbox GET /api/v1/reseller/clients # → ["sandbox": true, "user_id": null, ...] # Token LIVE → liste uniquement les clients live GET /api/v1/reseller/clients # → ["sandbox": false, "user_id": 42, ...] ``` ## Exemple de flow sandbox complet ```bash # 1. Créditer le wallet sandbox curl -X POST ".../wallet/sandbox/credit" \ -H "Authorization: Bearer kh_test_YOUR_TOKEN" \ -d '{"amount": 500000}' # 2. Créer un client fictif curl -X POST ".../clients" \ -H "Authorization: Bearer kh_test_YOUR_TOKEN" \ -d '{"name": "Jean Test", "email": "jean@test.cm"}' # → {"sandbox": true, "user_id": null} # 3. Enregistrer un domaine (simulé, 5000 XAF débité) curl -X POST ".../clients/1/domains" \ -H "Authorization: Bearer kh_test_YOUR_TOKEN" \ -d '{"domain": "jean-test.cm", "years": 1}' # → {"sandbox": true, "amount_debited": 5000} # 4. Provisionner un hébergement (simulé) curl -X POST ".../clients/1/hosting" \ -H "Authorization: Bearer kh_test_YOUR_TOKEN" \ -d '{"domain": "jean-test.cm", "whm_package": "starter"}' # → {"sandbox": true, "username": "sb_xxxxx"} ```