Skip to content

Checklist recette eGouv ​

Checklist de validation avant mise en production d'un parcours eGouv / e-Citizen avec checkout embed et clé API plateforme.

Configuration plateforme ​

  • [ ] Clé API scope platform émise et stockée côté back eGouv uniquement
  • [ ] Origines embed configurées dans Intégration eGouv (admin super-admin)
  • [ ] Chaque origine production listée avec schéma https:// exact
  • [ ] Environnement sandbox et production séparés (sk_test_ / sk_live_)

Création session ​

  • [ ] POST /checkout/sessions avec mode: embedded et tenant_id (UUID ou slug régie)
  • [ ] Absence de tenant_id → 400 checkout.tenant_required (test négatif)
  • [ ] service_code référence un service catalogue actif de la régie ciblée
  • [ ] Idempotency-Key : double soumission même clé → même session
  • [ ] Réponse contient client_secret, embed_checkout_url, id
  • [ ] Sans origines embed : 422 embed.origins_required (test négatif)

Front embed (CDN SDK) ​

  • [ ] Script /sdk/v1.js chargé depuis l'hôte checkout production
  • [ ] EpaymentCheckout.open() avec clientSecret fourni par le back eGouv
  • [ ] Overlay s'affiche ; iframe charge sans erreur CSP
  • [ ] parent_origin correspond à l'origine eGouv configurée
  • [ ] Layout adapté (défaut viewport ≥ 720 px → large, sinon compact)
  • [ ] onComplete reçu après paiement test mobile money
  • [ ] Pas d'exposition de sk_ dans le réseau navigateur (audit DevTools)

Paiement par carte (overlay) ​

  • [ ] Session currency: EUR ou USD avec mode: embedded
  • [ ] Overlay epayment.checkout.pending pendant redirect acquéreur
  • [ ] Refus carte test : session reste open, pas de déblocage prématuré
  • [ ] Voir Paiement par carte

verify-completion ​

  • [ ] Back eGouv appelle POST /checkout/sessions/verify-completion avec sk_ plateforme
  • [ ] Corps inclut tenant_id si requis par votre implémentation
  • [ ] Réponse paid: true et order_id correspond au dossier eGouv
  • [ ] tenant_id réponse cohérent avec la régie attendue
  • [ ] Token expiré → 410 ; token inconnu → 404 (tests négatifs)
  • [ ] Replay même token → 200 idempotent, pas de double effet métier

Webhooks (régie cible + eGouv) ​

  • [ ] Endpoints eGouv configurés dans admin → Intégration eGouv (indépendants des clés API)
  • [ ] Ping platform.webhook.ping reçu sur au moins un endpoint eGouv
  • [ ] Après paiement test avec clé plateforme : livraison vers app intégrateur régie et vers eGouv
  • [ ] Session avec clé application : pas de livraison vers eGouv (test négatif)
  • [ ] verify-completion reste le chemin UX synchrone recommandé en parallèle du webhook

Paiement agence ​

  • [ ] Voucher affiché dans iframe embed
  • [ ] Overlay fermable ; message citoyen présent
  • [ ] Encaissement agent → déblocage via webhook ou verify si overlay resté ouvert
  • [ ] Voir Agence en embed

Multi-régie ​

  • [ ] Session MinJust (tenant_id: minjust) et autre régie testées séparément
  • [ ] order_id unique par dossier et par régie (pas de collision cross-tenant)
  • [ ] verify-completion rejette order_id d'une autre régie si mismatch métier

Cas limites ​

  • [ ] Matrice edge cases parcourue
  • [ ] iframe bloquée → fallback hosted testé
  • [ ] Webhook avant onComplete : déblocage idempotent
  • [ ] onComplete avant webhook : déblocage idempotent

Mise en production ​

  • [ ] Bascule sk_live_ et origines production
  • [ ] Monitoring erreurs verify-completion (4xx/5xx)
  • [ ] Procédure rollback : désactiver embed, redirect hosted temporaire
  • [ ] Contact régie pour validation webhook application si couplage bus interne

Documentation associée ​

Plateforme d'orchestration de paiement DPI. Les fonds ne transitent pas par Epayment.