Appearance
Recette ministry
Checklist de recette pour intégration SI ministériel (hosted ou embed) avant passage sk_live_.
Acteurs
| Acteur | Rôle |
|---|---|
| Équipe SI ministry | Implémentation API et webhook |
| Officer régie / Epayment | Credentials, endpoints, origines embed |
| Opérateur recette | Exécute scénarios sandbox |
Prérequis
- Application sandbox créée avec clé
sk_test_*. - Au moins un endpoint webhook HTTPS (recette) abonné aux événements checkout.
webhook_secreten coffre ; handler HMAC testé unitairement.- Catalogue service et
service_codealignés avec le cas métier. - Pour embed : origines parent configurées.
Séquence recette type
Scénarios obligatoires
| # | Scénario | Résultat attendu |
|---|---|---|
| 1 | Création session hosted | 201, session_id, checkout_url, payment_ref |
| 2 | Paiement MM sandbox via checkout UI (Paiement test) | Webhook checkout.completed, paid: true (numéro saisi sur le checkout, hors suffixes 0002 / 0003) |
| 3 | Paiement agence sandbox | Même webhook après collecte guichet |
| 4 | Paiement carte sandbox via checkout UI | Webhook checkout.completed ; session open après refus test |
| 5 | Ping | platform.webhook.ping reçu et signé |
| 6 | Idempotence webhook | Rejeu même x-epayment-event-id → pas double effet métier |
| 7 | Idempotence create | Même Idempotency-Key + même corps → même session |
| 8 | Session expirée | checkout.expired ou GET expired ; dossier non débloqué |
| 9 | Échec collect MM via checkout UI (Paiement test) | checkout.failed avec failure_code ; dossier non débloqué (suffixe 0002 = refus, 0003 = timeout ; voir Mobile money - sandbox) |
Scénarios embed (si applicable)
| # | Scénario | Résultat attendu |
|---|---|---|
| 10 | Création mode=embedded | client_secret, pas embed.origins_required |
| 11 | SDK open + paiement | onComplete + verify-completion → paid: true |
| 12 | Token rejoué | verify-completion idempotent (409 ou 200 selon état) |
| 13 | Webhook parallèle | Même order_id que verify ; handler idempotent |
| 14 | Carte en overlay (devise EUR) | pending pendant redirect ; verify après succès |
Chemins d'échec à valider
| Scénario | Code ou événement | Vérification |
|---|---|---|
| Clé invalide | 401 / generic.unauthorized | Aucune session créée |
tenant_id absent (clé plateforme) | checkout.tenant_required | Message stable |
| Session déjà payée | checkout.completed sur recréation | Pas second encaissement |
| Signature webhook incorrecte | Handler rejette | Aucun déblocage métier |
Collecte / attempts avec sk_ | Hors contrat SI | Utiliser hosted ou embed uniquement |
Critères d'acceptation recette
- [ ] Tous scénarios obligatoires passent en sandbox.
- [ ] Secrets absents du code source et des logs applicatifs.
- [ ] Corrélation
order_id,session_id,notice_iddocumentée côté SI. - [ ] Runbook incident : contact Epayment avec
x-epayment-event-id. - [ ] Passage
sk_live_après signature procès-verbal recette.