Ce mode est utilisé exclusivement lorsque la Banque est techniquement incapable d’émettre des appels sortants (Callback Push).
A. Principe général
- Le Connecteur initie les requêtes
- La Banque reste source de vérité du statut
- Le Polling Inverse :
- NE REMPLACE PAS le Callback Push
- N’EST UTILISÉ QUE comme mécanisme de secours
- Le Polling Inverse s’applique **uniquement aux ordres en statut **
PENDING ou push async
B. Endpoint de requête de statut (côté Banque)
Endpoint
curl -X GET /payment-orders/{orderId}/status
Authentification et sécurité
La requête DOIT être protégée par :
- mTLS obligatoire
- Authentification applicative obligatoire :
- OAuth 2.0 (Bearer ou DPoP)
- ou API Key selon le contrat
En-têtes requis
| En-tête | Obligatoire | Description |
|---|
X-Timestamp | Oui | Horodatage ISO-8601 UTC |
X-Nonce | Oui | Protection anti-replay |
X-Signature | Oui | Signature cryptographique du Connecteur |
Authorization | Oui | Bearer / DPoP / X-API-Key |
X-Client-Id | Oui | Identifiant du Connecteur |
Paramètre de chemin
| Paramètre | Type | Description |
|---|
orderId | String | Identifiant métier unique de l’ordre |
Exemple
curl -X GET /payment-orders/PAY-2025-0001/status
C. Comportement attendu du Connecteur (client)
Fréquence de polling
Le Connecteur DOIT implémenter une stratégie de polling adaptative :
- fréquence initiale courte (ex : 30s – 1min)
- intervalle progressif (backoff exponentiel)
- plafond maximal configurable (ex : 10–15 minutes)
Règles de sécurité
- Chaque requête DOIT être signée via
X-Signature
- La signature DOIT couvrir :
- la méthode HTTP
- l’URI
- les paramètres
- les en-têtes critiques
Condition d’arrêt (CRITIQUE)
Le polling inverse s’arrête uniquement lorsque la Banque retourne un statut final.
Statuts finaux :
La Banque retourne une enveloppe JSON standard contenant un seul objet de mise à jour de statut.
Réponse – 200 OK
{
"reference": "PAY-2025-0001",
"bank_reference": "BNK-778899",
"status": "PENDING | SUCCESS | FAILED",
"reasonCode": "BUS_INSUFFICIENT_FUNDS",
"reasonMessage": "Insufficient balance on debtor account.",
"processed_at": "2025-11-19T07:30:00Z"
}
Règles associées
reference DOIT correspondre à l’ordre interrogé
reasonCode et reasonMessage sont :
- **OBLIGATOIRES si **
status = FAILED
processed_at est la date de traitement bancaire
E. Codes HTTP et comportements
| Code HTTP | Signification | Action du Connecteur |
|---|
| 200 OK | Statut disponible | Mettre à jour l’état local |
| 404 Not Found | Ordre inconnu | Arrêter le polling + alerte |
| 429 Too Many Requests | Limite atteinte | Appliquer backoff |
| 4xx / 5xx | Erreur technique | Retry selon stratégie |
F. Exemple de requête – Polling inverse (Mintlify)
cURL
curl -X GET "https://bank.example.com/payment-orders/PAY-2025-0001/status" \
-H "Authorization: Bearer <access_token>" \
-H "X-Client-Id: CONNECTOR_X" \
-H "X-Timestamp: 2025-11-19T07:30:00Z" \
-H "X-Nonce: 550e8400-e29b-41d4-a716-446655440000" \
-H "X-Signature: <signature>"