Pular para o conteúdo principal

Export des Paiements

Exports des paiements d'un transfert vers l'opérateur de paiement (fichier ST) ou vers Excel, et suivi de leur transmission. Le fichier de retour de l'opérateur (CT) est traité par la réconciliation.

Endpoints​

Toutes les routes /api/export-paiements demandent la permission transferts.paiements_view et vérifient que le transfert est dans le périmètre de l'utilisateur (403 sinon).

EndpointMethodeDescription
/api/export-paiements/generate-st/{cycleId}POSTGénère le fichier ST de l'opérateur (archive ZIP protégée)
/api/export-paiements/generate/{cycleId}POSTTélécharge directement un Excel des paiements
/api/export-paiementsGETHistorique des exports (cycle, limit 50 par défaut, offset)
/api/export-paiements/{id}GETDétail d'un export
/api/export-paiements/download/{id}GETTélécharge l'archive d'un export
/api/export-paiements/{id}/marquer-envoyePOSTMarque l'export comme transmis à l'opérateur
/api/export-paiements/{id}/confirmerPOSTMarque l'export comme confirmé par l'opérateur
/api/export/paiementsGETDonnées de paiements en JSON pour les exports de rapport

Les deux routes de génération acceptent les mêmes filtres dans le corps JSON : region, secteur, localite (UUID) et statut. Sans paiement correspondant : 400 Aucun paiement trouvé avec ces filtres.


POST /api/export-paiements/generate-st/{cycleId}​

{ "region": "<uuid>", "statut": "en_attente" }

Le SIG produit une archive ZIP protégée par mot de passe. Elle contient le fichier ST, un Excel et un PDF récapitulatifs. Les paiements exportés en en_attente passent en en_cours, et le transfert passe en en_cours s'il n'est pas terminé.

{
"success": true,
"data": {
"id": "…",
"nomFichier": "20260715_143000_ST_AGENCE.zip",
"motDePasse": "…",
"hashSha256": "…",
"nombreBeneficiaires": 1200,
"montantTotal": 18000000,
"dateGeneration": "2026-07-15T14:30:00+00:00"
}
}

Le mot de passe de l'archive est renvoyé dans cette réponse : il se transmet à l'opérateur par un autre canal que le fichier.

Format ST​

Le fichier ST est à largeur fixe, une ligne par bénéficiaire :

ChampLargeurContenu
Indicateur2ST
Nom agence10Complété par des espaces
Système de paiement10MM
Identifiant de l'ordre de transfert50Unique par transfert
Identifiant de téléchargement10Unique par bénéficiaire, complété par des zéros
Date8JJMMAAAA
Date de valeur8JJMMAAAA
Montant10Sans décimales, complété par des zéros
Téléphone24Complété par des espaces
Nom du bénéficiaire50Complété par des espaces

POST /api/export-paiements/generate/{cycleId}​

Renvoie directement un fichier paiements_<code>_<horodatage>.xlsx (pas de JSON).


Suivi d'un export​

POST /api/export-paiements/{id}/marquer-envoye
POST /api/export-paiements/{id}/confirmer

Corps optionnel : { "commentaire": "…" }. La confirmation supprime l'archive du serveur.


Workflow d'export operateur​

┌────────────────────┐
│ 1. Valider le │
│ transfert │
└─────────┬──────────┘
▼
┌────────────────────┐
│ 2. Générer le ST │
└─────────┬──────────┘
▼
┌────────────────────┐
│ 3. Transmettre a │
│ l'operateur │
└─────────┬──────────┘
▼
┌────────────────────┐
│ 4. Recevoir le │
│ fichier CT │
└─────────┬──────────┘
▼
┌────────────────────┐
│ 5. Réconciliation │
└────────────────────┘

Exemple​

curl -X POST "https://sig.example.com/api/export-paiements/generate-st/<cycleId>" \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"statut": "en_attente"}'

curl "https://sig.example.com/api/export-paiements/download/<exportId>" \
-H "Authorization: Bearer TOKEN" \
-o export_st.zip

Codes d'erreur​

HTTPCas
400Aucun paiement ne correspond aux filtres
401Non authentifié
403Permission manquante ou transfert hors périmètre
404Transfert, export ou fichier introuvable
500Échec de création de l'archive