Création d’un ordre de paiement
Le Connecteur transmet les ordres de paiement via une requête HTTP POST sécurisée.Les informations de sécurité sont portées exclusivement par les en-têtes HTTP et font référence au corps JSON signé.
| En-tête | Description |
|---|---|
X-Client-Id | Identifiant technique du connecteur |
X-Request-Id | Identifiant technique de la requete |
X-Timestamp | Horodatage ISO 8601 UTC |
X-Nonce | Identifiant unique anti-rejeu |
X-Idempotency-Key | Clé d’idempotence métier |
X-Signature | Signature cryptographique du corps |
Authorization | OAuth2 (Bearer / DPoP ) |
Content-Type | application/json |
Réponse attendue du service bancaire
Le service bancaire DOIT retourner une réponse HTTP conforme aux règles décrites ci-dessous.Le code HTTP détermine explicitement la présence ou non d’un corps de réponse.
| HTTP Status | Signification | Corps de réponse |
|---|---|---|
| 200 OK (sync) | Traitement en cours ou terminé | OBLIGATOIRE |
| 202 Accepted (async) | Traitement accepté, résultat différé | ABSENT |
| 4xx / 5xx | Erreur | Objet d’erreur standard |
Cas 1 — HTTP 202 Accepted (traitement asynchrone)
Description
Le code 202 Accepted indique que :- l’ordre a été accepté techniquement,
- le traitement bancaire est différé,
- aucun statut métier final n’est encore disponible.
Règle obligatoire
- Aucun corps de réponse ne doit être retourné
- Le header
Content-Lengthdoit être égal à0 - Le statut final DEVRA être transmis ultérieurement via callback
Cas 2 — HTTP 200 OK (traitement synchrone)
Description
Le code 200 OK indique que :- l’ordre a été traité immédiatement,
- un statut métier est disponible,
- le résultat est définitif.
Règle obligatoire
- Le corps de réponse est OBLIGATOIRE
- Le corps DOIT respecter le format standard décrit ci-dessous
Format du corps de réponse (HTTP 200)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
status | String | Oui | Statut métier du paiement |
reference | String | Oui | Référence initiale de l’ordre |
bank_reference | String | Oui | Référence bancaire interne |
reason_code | String | Conditionnel | Obligatoire si status = FAILED |
reason_message | String | Conditionnel | Message lisible expliquant l’échec |
timestamp | ISO 8601 UTC | Oui | Date de traitement bancaire |
status
| Valeur | Signification |
|---|---|
PENDING | Traitement initié, finalisation différée |
SUCCESS | Paiement exécuté avec succès |
FAILED | Paiement rejeté ou échoué |
Contraintes
SUCCESSetFAILEDsont des statuts finauxPENDINGimplique obligatoirement un callback ultérieur- Un statut final ne peut jamais être modifié
Cas particulier — FAILED
Lorsquestatus = FAILED :
reasonCodeest OBLIGATOIREreasonMessageest OBLIGATOIRE- Le code doit appartenir à la nomenclature des erreurs métier documentées
Règles de cohérence (IMPORTANT)
- Un HTTP 200 sans body est invalide
- Un HTTP 202 avec body est invalide
- Le
referenceDOIT correspondre exactement à la référence reçue - Le
bank_referenceest obligatoire pour toute traçabilité bancaire - Le timestamp DOIT être exprimé en UTC