Sandbox & recette

Differences sandbox / production, scenarios de test et verifications avant go-live.

Sandbox vs Production

AspectSandboxProduction
Base URLhttps://sandbox.api.insurance-agg.examplehttps://api.insurance-agg.example
Clés APIpk_test_...pk_live_...
Passerelle de paiementMode test (aucun débit réel)Mode live (débit réel)
ASKIAÉmission simulée (contrats factices)Émission réelle
Webhooks sortantsEnvoyés vers l'URL configurée en sandboxEnvoyés vers l'URL prod
Rate limits60 req/minDéfini par contrat partenaire
DonnéesPeuvent être purgées à tout momentRétention selon politique légale

Ne jamais mélanger clés et URLs. Une clé pk_test_ appelée sur le domaine production (ou l'inverse) retourne 401 Unauthorized.

Obtenir un accès sandbox

  1. Demander à l'équipe intégration : une clé pk_test_ et un compte partenaire sandbox.
  2. Configurer votre endpoint webhook en sandbox (peut être un tunnel ngrok ou équivalent pour le développement local).
  3. Enregistrer l'URL avec PATCH /api/v1/partners/me/webhook.

Scénarios de test à couvrir

  1. Happy path

    Création de session → paiement simulé OK → réception webhook insurance.contract.issued.

  2. Paiement annulé

    Création de session → clic "annuler" sur la passerelle → pas de webhook → vérifier via GET /partner/contracts/requests/:reference que le contractStatus = PAYMENT_FAILED.

  3. Paiement expiré

    Création de session → attendre TTL → status = expired.

  4. Émission échouée

    Utiliser un payload ou un cas sandbox fourni par le support declenchant une erreur ASKIA simulee → reception insurance.contract.issuance_failed.

  5. Signature invalide (négatif)

    Envoyer un faux POST vers votre endpoint avec signature incorrecte → votre handler doit retourner 401 et ne pas traiter.

  6. Retry webhook

    Renvoyer 500 depuis votre endpoint sur la première livraison → vérifier que l'agrégateur rejoue selon le backoff.

  7. Idempotence

    Rejouer 3 fois le même webhook → votre base n'a qu'une seule entrée.

Jeux de données sandbox

Plutot que de dependre d identifiants magiques cote partenaire, la sandbox doit servir a valider des scenarios :

ScenarioAttendu
Moto <= 125 avec scatCode=010Demande acceptee puis paiement testable.
Moto > 125 avec scatCode=011 et pfs > 125Demande acceptee puis emission possible.
Moto > 125 avec scatCode=011 mais pfs <= 125Rejet metier 422 validation_failed.
Webhook partenaire invalideRetry ou echec de livraison cote partenaire.
Emission simulee en echecinsurance.contract.issuance_failed ou ISSUANCE_FAILED.

Si l equipe support vous fournit des valeurs sandbox specifiques pour declencher un cas particulier, traitez-les comme des donnees de recette, pas comme une contrainte d integration durable.

Simuler un webhook entrant paiement (debug interne)

Cette section est principalement utile côté agrégateur. Pour un partenaire, il n'est généralement pas nécessaire de simuler ce webhook: le paiement sandbox déclenche naturellement la chaîne complète.

Si besoin (par exemple pour rejouer manuellement une session), l'admin peut POSTer vers POST /api/v1/webhooks/dexpay avec le header x-webhook-signature calculé via HMAC SHA256 et le secret sandbox.

Outils recommandés côté partenaire

  • Tunnel local : ngrok http 3000, cloudflared tunnel, localtunnel.
  • Inspecteur webhook : RequestBin, Webhook.site, Hookdeck (pour debug).
  • Client HTTP : curl, Postman, Insomnia.
  • Vérification signature : tests unitaires dédiés (voir exemples Node.js / Python dans Webhooks sortants).

Passage en production

Checklist avant go-live :

  1. Signature webhook vérifiée systématiquement (test négatif inclus).
  2. Endpoint webhook HTTPS avec certificat valide (pas auto-signé).
  3. Timeout < 5s, traitement déporté en async.
  4. Idempotence sur x-insurance-reference.
  5. Alerting câblé sur insurance.contract.issuance_failed.
  6. Logs conservés 30 jours minimum, avec x-request-id.
  7. Clé production obtenue, clé sandbox retirée des configs prod.
  8. Tests de charge si volume attendu > 10 req/s.

Voir aussi Go-live checklist.

On this page