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 :
POST /api/v1/reseller/wallet/sandbox/credit
Réponse :
{
"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.
# 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
# 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"}