pi-spi-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/LICENSE +22 -0
- package/README.md +300 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.js +4 -0
- package/dist/error-handler.d.ts +7 -0
- package/dist/error-handler.js +52 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.js +40 -0
- package/dist/examples.d.ts +8 -0
- package/dist/examples.js +91 -0
- package/dist/generated/core/ApiError.d.ts +10 -0
- package/dist/generated/core/ApiError.js +11 -0
- package/dist/generated/core/ApiRequestOptions.d.ts +13 -0
- package/dist/generated/core/ApiRequestOptions.js +1 -0
- package/dist/generated/core/ApiResult.d.ts +7 -0
- package/dist/generated/core/ApiResult.js +1 -0
- package/dist/generated/core/CancelablePromise.d.ts +20 -0
- package/dist/generated/core/CancelablePromise.js +111 -0
- package/dist/generated/core/OpenAPI.d.ts +16 -0
- package/dist/generated/core/OpenAPI.js +11 -0
- package/dist/generated/core/request.d.ts +34 -0
- package/dist/generated/core/request.js +269 -0
- package/dist/generated/index.d.ts +78 -0
- package/dist/generated/index.js +43 -0
- package/dist/generated/models/AliasCreationReponse.d.ts +22 -0
- package/dist/generated/models/AliasCreationReponse.js +1 -0
- package/dist/generated/models/AliasCreationRequest.d.ts +11 -0
- package/dist/generated/models/AliasCreationRequest.js +1 -0
- package/dist/generated/models/AliasReponseListe.d.ts +26 -0
- package/dist/generated/models/AliasReponseListe.js +1 -0
- package/dist/generated/models/AnnulationStatut.d.ts +13 -0
- package/dist/generated/models/AnnulationStatut.js +18 -0
- package/dist/generated/models/Champs.d.ts +1 -0
- package/dist/generated/models/Champs.js +1 -0
- package/dist/generated/models/CompteOperation.d.ts +72 -0
- package/dist/generated/models/CompteOperation.js +24 -0
- package/dist/generated/models/CompteOperationListe.d.ts +18 -0
- package/dist/generated/models/CompteOperationListe.js +1 -0
- package/dist/generated/models/CompteSolde.d.ts +129 -0
- package/dist/generated/models/CompteSolde.js +71 -0
- package/dist/generated/models/CompteTransfertIntraReponse.d.ts +33 -0
- package/dist/generated/models/CompteTransfertIntraReponse.js +12 -0
- package/dist/generated/models/CompteTransfertIntraRequest.d.ts +9 -0
- package/dist/generated/models/CompteTransfertIntraRequest.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +14 -0
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +19 -0
- package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +41 -0
- package/dist/generated/models/DemandePaiementConfirmationReponse.js +13 -0
- package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/DemandePaiementConfirmationRequest.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +151 -0
- package/dist/generated/models/DemandePaiementConsultationReponse.js +27 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +74 -0
- package/dist/generated/models/DemandePaiementEnMasseRequest.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +98 -0
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +20 -0
- package/dist/generated/models/DemandePaiementListe.d.ts +26 -0
- package/dist/generated/models/DemandePaiementListe.js +1 -0
- package/dist/generated/models/DemandePaiementListeItem.d.ts +163 -0
- package/dist/generated/models/DemandePaiementListeItem.js +27 -0
- package/dist/generated/models/DemandePaiementReponse.d.ts +129 -0
- package/dist/generated/models/DemandePaiementReponse.js +1 -0
- package/dist/generated/models/DemandePaiementReponseRequest.d.ts +21 -0
- package/dist/generated/models/DemandePaiementReponseRequest.js +11 -0
- package/dist/generated/models/DemandePaiementRequest.d.ts +98 -0
- package/dist/generated/models/DemandePaiementRequest.js +7 -0
- package/dist/generated/models/DemandePaiementRequestBase.d.ts +42 -0
- package/dist/generated/models/DemandePaiementRequestBase.js +1 -0
- package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +12 -0
- package/dist/generated/models/DemandePaiementRequestCategorie.js +17 -0
- package/dist/generated/models/DemandePaiementStatut.d.ts +13 -0
- package/dist/generated/models/DemandePaiementStatut.js +18 -0
- package/dist/generated/models/DemandePaiementStatutRaison.d.ts +46 -0
- package/dist/generated/models/DemandePaiementStatutRaison.js +51 -0
- package/dist/generated/models/ListeMeta.d.ts +14 -0
- package/dist/generated/models/ListeMeta.js +1 -0
- package/dist/generated/models/Paiement.d.ts +156 -0
- package/dist/generated/models/Paiement.js +28 -0
- package/dist/generated/models/PaiementAnnulationMotif.d.ts +17 -0
- package/dist/generated/models/PaiementAnnulationMotif.js +22 -0
- package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +11 -0
- package/dist/generated/models/PaiementAnnulationReponseRequest.js +1 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementAnnulationRequest.d.ts +4 -0
- package/dist/generated/models/PaiementAnnulationRequest.js +1 -0
- package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +21 -0
- package/dist/generated/models/PaiementAnnulationStatutRaison.js +26 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +1 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +97 -0
- package/dist/generated/models/PaiementEnMasseReponseStatut.js +20 -0
- package/dist/generated/models/PaiementEnMasseRequest.d.ts +54 -0
- package/dist/generated/models/PaiementEnMasseRequest.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +31 -0
- package/dist/generated/models/PaiementImmediatConfirmationReponse.js +7 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequest.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementImmediatReponse.d.ts +98 -0
- package/dist/generated/models/PaiementImmediatReponse.js +7 -0
- package/dist/generated/models/PaiementImmediatRequest.d.ts +13 -0
- package/dist/generated/models/PaiementImmediatRequest.js +1 -0
- package/dist/generated/models/PaiementListe.d.ts +6 -0
- package/dist/generated/models/PaiementListe.js +1 -0
- package/dist/generated/models/PaiementRequest.d.ts +33 -0
- package/dist/generated/models/PaiementRequest.js +1 -0
- package/dist/generated/models/PaiementStatut.d.ts +13 -0
- package/dist/generated/models/PaiementStatut.js +18 -0
- package/dist/generated/models/PaiementStatutRaison.d.ts +56 -0
- package/dist/generated/models/PaiementStatutRaison.js +61 -0
- package/dist/generated/models/Problem7807.d.ts +31 -0
- package/dist/generated/models/Problem7807.js +1 -0
- package/dist/generated/models/RefDocType.d.ts +38 -0
- package/dist/generated/models/RefDocType.js +43 -0
- package/dist/generated/models/RetourStatut.d.ts +13 -0
- package/dist/generated/models/RetourStatut.js +18 -0
- package/dist/generated/models/RetourStatutRaison.d.ts +25 -0
- package/dist/generated/models/RetourStatutRaison.js +30 -0
- package/dist/generated/models/WebhookCreationRequest.d.ts +14 -0
- package/dist/generated/models/WebhookCreationRequest.js +1 -0
- package/dist/generated/models/WebhookCreationResponse.d.ts +12 -0
- package/dist/generated/models/WebhookCreationResponse.js +1 -0
- package/dist/generated/models/WebhookData.d.ts +8 -0
- package/dist/generated/models/WebhookData.js +1 -0
- package/dist/generated/models/WebhookEvent.d.ts +191 -0
- package/dist/generated/models/WebhookEvent.js +42 -0
- package/dist/generated/models/WebhookEventsList.d.ts +13 -0
- package/dist/generated/models/WebhookEventsList.js +1 -0
- package/dist/generated/models/WebhookList.d.ts +13 -0
- package/dist/generated/models/WebhookList.js +1 -0
- package/dist/generated/models/WebhookModificationRequest.d.ts +4 -0
- package/dist/generated/models/WebhookModificationRequest.js +1 -0
- package/dist/generated/models/WebhooksEvents.d.ts +12 -0
- package/dist/generated/models/WebhooksEvents.js +17 -0
- package/dist/generated/services/AliasService.d.ts +63 -0
- package/dist/generated/services/AliasService.js +84 -0
- package/dist/generated/services/ComptesService.d.ts +64 -0
- package/dist/generated/services/ComptesService.js +86 -0
- package/dist/generated/services/DemandeAnnulationService.d.ts +84 -0
- package/dist/generated/services/DemandeAnnulationService.js +99 -0
- package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +161 -0
- package/dist/generated/services/DemandesDePaiementEnMasseService.js +189 -0
- package/dist/generated/services/DemandesDePaiementService.d.ts +123 -0
- package/dist/generated/services/DemandesDePaiementService.js +161 -0
- package/dist/generated/services/NotificationService.d.ts +80 -0
- package/dist/generated/services/NotificationService.js +132 -0
- package/dist/generated/services/PaiementEnMasseService.d.ts +159 -0
- package/dist/generated/services/PaiementEnMasseService.js +187 -0
- package/dist/generated/services/PaiementImmediatService.d.ts +135 -0
- package/dist/generated/services/PaiementImmediatService.js +176 -0
- package/dist/generated/services/RetoursdeFondsService.d.ts +28 -0
- package/dist/generated/services/RetoursdeFondsService.js +37 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +23 -0
- package/dist/query-builder.d.ts +91 -0
- package/dist/query-builder.js +187 -0
- package/dist/sdk.d.ts +88 -0
- package/dist/sdk.js +107 -0
- package/dist/services/alias.d.ts +72 -0
- package/dist/services/alias.js +82 -0
- package/dist/services/base.d.ts +9 -0
- package/dist/services/base.js +17 -0
- package/dist/services/comptes.d.ts +149 -0
- package/dist/services/comptes.js +158 -0
- package/dist/services/demandes-annulation.d.ts +97 -0
- package/dist/services/demandes-annulation.js +104 -0
- package/dist/services/demandes-paiement-en-masse.d.ts +139 -0
- package/dist/services/demandes-paiement-en-masse.js +139 -0
- package/dist/services/demandes-paiement.d.ts +144 -0
- package/dist/services/demandes-paiement.js +151 -0
- package/dist/services/paiements-en-masse.d.ts +152 -0
- package/dist/services/paiements-en-masse.js +153 -0
- package/dist/services/paiements.d.ts +135 -0
- package/dist/services/paiements.js +135 -0
- package/dist/services/retours-fonds.d.ts +94 -0
- package/dist/services/retours-fonds.js +100 -0
- package/dist/services/webhooks.d.ts +131 -0
- package/dist/services/webhooks.js +142 -0
- package/dist/types/alias.d.ts +64 -0
- package/dist/types/alias.js +73 -0
- package/dist/utils/constants.d.ts +93 -0
- package/dist/utils/constants.js +93 -0
- package/dist/utils/index.d.ts +60 -0
- package/dist/utils/index.js +115 -0
- package/package.json +81 -0
- package/scripts/post-generate.js +129 -0
- package/scripts/pre-generate.js +106 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { Paiement } from '../models/Paiement';
|
|
2
|
+
import type { PaiementImmediatConfirmationReponse } from '../models/PaiementImmediatConfirmationReponse';
|
|
3
|
+
import type { PaiementImmediatConfirmationRequest } from '../models/PaiementImmediatConfirmationRequest';
|
|
4
|
+
import type { PaiementImmediatReponse } from '../models/PaiementImmediatReponse';
|
|
5
|
+
import type { PaiementImmediatRequest } from '../models/PaiementImmediatRequest';
|
|
6
|
+
import type { PaiementListe } from '../models/PaiementListe';
|
|
7
|
+
import type { CancelablePromise } from '../core/CancelablePromise';
|
|
8
|
+
export declare class PaiementImmediatService {
|
|
9
|
+
/**
|
|
10
|
+
* Envoyer un paiement
|
|
11
|
+
* Ce point de terminaison permet au business d'effectuer des paiements.
|
|
12
|
+
*
|
|
13
|
+
* Le destinataire du paiement est identifié par son alias de compte.
|
|
14
|
+
*
|
|
15
|
+
* Le business peut définir le champ `confirmation` à `true` pour demander une validation en deux étapes : le PSP retournera d'abord le résultat de la recherche d'alias (avec le nom et le pays du bénéficiaire), puis attendra une confirmation explicite avant d'exécuter le paiement via l'endpoint `PUT /paiements/{txId}/confirmations`.
|
|
16
|
+
*
|
|
17
|
+
* **Timeout de confirmation** : Si le business demande une confirmation, il dispose de **24 heures** pour confirmer. Passé ce délai, la demande expire automatiquement.
|
|
18
|
+
*
|
|
19
|
+
* @returns PaiementImmediatReponse Paiement traité. Le champ `statut` indique le résultat :
|
|
20
|
+
* - `INITIE` : En attente de confirmation (si `confirmation: true`)
|
|
21
|
+
* - `ENVOYE` : Paiement envoyé avec succès (si `confirmation: false`)
|
|
22
|
+
* - `REJETE` : Paiement rejeté. Le champ `statutRaison` contient le code d'erreur :
|
|
23
|
+
* - `DU03` : txId dupliqué (déjà utilisé)
|
|
24
|
+
* - `BE23` : Alias bénéficiaire invalide
|
|
25
|
+
* - Autres codes ISO 20022
|
|
26
|
+
*
|
|
27
|
+
* @throws ApiError
|
|
28
|
+
*/
|
|
29
|
+
static paiementCreer({ requestBody, }: {
|
|
30
|
+
/**
|
|
31
|
+
* Pour effectuer le transfert, le client doit fournir l'alias du destinataire ainsi que le montant du transfert à effectuer.
|
|
32
|
+
*/
|
|
33
|
+
requestBody: PaiementImmediatRequest;
|
|
34
|
+
}): CancelablePromise<PaiementImmediatReponse>;
|
|
35
|
+
/**
|
|
36
|
+
* Lister les paiements
|
|
37
|
+
* Ce point de terminaison permet de lister les paiements effectués par le client.
|
|
38
|
+
* @returns PaiementListe Succès de l'opération
|
|
39
|
+
* @throws ApiError
|
|
40
|
+
*/
|
|
41
|
+
static paiementLister({ payeAlias, payeCompte, payeurAlias, payeurCompte, dateEnvoi, dateIrrevocabilite, statut, categorie, montantAchat, montantRetrait, motif, refDocType, instructionId, txId, annulationStatut, annulationMotif, retourStatut, page, size, sort, fields, }: {
|
|
42
|
+
payeAlias?: string;
|
|
43
|
+
payeCompte?: string;
|
|
44
|
+
payeurAlias?: string;
|
|
45
|
+
payeurCompte?: string;
|
|
46
|
+
dateEnvoi?: string;
|
|
47
|
+
dateIrrevocabilite?: string;
|
|
48
|
+
statut?: 'INITIE' | 'ENVOYE' | 'IRREVOCABLE' | 'REJETE';
|
|
49
|
+
categorie?: '631' | '000' | '400' | '733' | '300' | '999' | '500' | '521' | '401';
|
|
50
|
+
montantAchat?: number;
|
|
51
|
+
montantRetrait?: number;
|
|
52
|
+
motif?: string;
|
|
53
|
+
refDocType?: string;
|
|
54
|
+
instructionId?: string;
|
|
55
|
+
txId?: string;
|
|
56
|
+
annulationStatut?: string;
|
|
57
|
+
annulationMotif?: string;
|
|
58
|
+
retourStatut?: string;
|
|
59
|
+
page?: string;
|
|
60
|
+
size?: string;
|
|
61
|
+
sort?: string;
|
|
62
|
+
fields?: any;
|
|
63
|
+
}): CancelablePromise<PaiementListe>;
|
|
64
|
+
/**
|
|
65
|
+
* Détails d'un paiement
|
|
66
|
+
* Cet point de terminaison permet de consulter les details d'un paiement.
|
|
67
|
+
*
|
|
68
|
+
* @returns Paiement Opération effectuée avec succès
|
|
69
|
+
* @throws ApiError
|
|
70
|
+
*/
|
|
71
|
+
static paiementRecuperer({ txId, }: {
|
|
72
|
+
/**
|
|
73
|
+
* L'identifiant de la transaction dans le SI du client
|
|
74
|
+
*/
|
|
75
|
+
txId: string;
|
|
76
|
+
}): CancelablePromise<Paiement>;
|
|
77
|
+
/**
|
|
78
|
+
* Confirmer le paiement
|
|
79
|
+
* Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'un paiement immédiat
|
|
80
|
+
* après vérification du nom et du pays du bénéficiaire.
|
|
81
|
+
*
|
|
82
|
+
* **Idempotence** : Cet endpoint est idempotent.
|
|
83
|
+
* - Premier appel avec `decision: true` → Lance le paiement, retourne `200 OK {statut: "ENVOYE"}`
|
|
84
|
+
* - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
|
|
85
|
+
* - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
|
|
86
|
+
* - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
|
|
87
|
+
* - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
|
|
88
|
+
* - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
|
|
89
|
+
*
|
|
90
|
+
* **Timeout** : La confirmation doit être envoyée dans les **24 heures** suivant la création de la demande. Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée.
|
|
91
|
+
*
|
|
92
|
+
* **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
|
|
93
|
+
*
|
|
94
|
+
* @returns PaiementImmediatConfirmationReponse Paiement en cours d'envoi
|
|
95
|
+
* @throws ApiError
|
|
96
|
+
*/
|
|
97
|
+
static paiementConfirmer({ txId, requestBody, }: {
|
|
98
|
+
/**
|
|
99
|
+
* L'identifiant de la transaction dans le SI du payé
|
|
100
|
+
*/
|
|
101
|
+
txId: string;
|
|
102
|
+
/**
|
|
103
|
+
* Le client envoie oui ou non s'il confirme l'envoi du paiement.
|
|
104
|
+
*/
|
|
105
|
+
requestBody: PaiementImmediatConfirmationRequest;
|
|
106
|
+
}): CancelablePromise<PaiementImmediatConfirmationReponse>;
|
|
107
|
+
/**
|
|
108
|
+
* Vérifier un paiement
|
|
109
|
+
* Ce point de terminaison permet de vérifier la réception d’un paiement à partir de l’`end2endId`.
|
|
110
|
+
*
|
|
111
|
+
* Dans certains cas, le **client business** peut ne pas avoir reçu la notification de paiement.
|
|
112
|
+
* Le **client payeur** peut alors lui communiquer l’`end2endId` afin qu’il puisse vérifier manuellement le statut du paiement.
|
|
113
|
+
*
|
|
114
|
+
* Le **participant** doit, dans ce cas, vérifier dans sa base de données et s'il ne trouve pas le paiement, il doit interroger l’endpoint de PI-SPI permettant de **récupérer le statut d’un paiement**, puis **retourner ce statut** dans sa réponse.
|
|
115
|
+
*
|
|
116
|
+
* Le statut retourné doit être soit :
|
|
117
|
+
* - `IRREVOCABLE` (paiement irrévocable), ou
|
|
118
|
+
* - `REJETE` (paiement rejeté).
|
|
119
|
+
*
|
|
120
|
+
* Un transfert **ne peut pas** être signalé comme « en cours de traitement » dans ce contexte.
|
|
121
|
+
*
|
|
122
|
+
* ⚠️ **Remarques :**
|
|
123
|
+
* - La vérification ne doit concerner que les paiements réalisés depuis **moins de 3 mois (90 jours)** afin de garantir la disponibilité de la réponse.
|
|
124
|
+
* - La garantie de réponse n’est assurée qu’à partir de **20 secondes après l’envoi du transfert**.
|
|
125
|
+
*
|
|
126
|
+
* @returns Paiement Opération effectuée avec succès
|
|
127
|
+
* @throws ApiError
|
|
128
|
+
*/
|
|
129
|
+
static paiementVerifier({ end2EndId, }: {
|
|
130
|
+
/**
|
|
131
|
+
* L'identifiant de bout en bout de la transaction
|
|
132
|
+
*/
|
|
133
|
+
end2EndId: string;
|
|
134
|
+
}): CancelablePromise<Paiement>;
|
|
135
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { OpenAPI } from '../core/OpenAPI';
|
|
2
|
+
import { request as __request } from '../core/request';
|
|
3
|
+
export class PaiementImmediatService {
|
|
4
|
+
/**
|
|
5
|
+
* Envoyer un paiement
|
|
6
|
+
* Ce point de terminaison permet au business d'effectuer des paiements.
|
|
7
|
+
*
|
|
8
|
+
* Le destinataire du paiement est identifié par son alias de compte.
|
|
9
|
+
*
|
|
10
|
+
* Le business peut définir le champ `confirmation` à `true` pour demander une validation en deux étapes : le PSP retournera d'abord le résultat de la recherche d'alias (avec le nom et le pays du bénéficiaire), puis attendra une confirmation explicite avant d'exécuter le paiement via l'endpoint `PUT /paiements/{txId}/confirmations`.
|
|
11
|
+
*
|
|
12
|
+
* **Timeout de confirmation** : Si le business demande une confirmation, il dispose de **24 heures** pour confirmer. Passé ce délai, la demande expire automatiquement.
|
|
13
|
+
*
|
|
14
|
+
* @returns PaiementImmediatReponse Paiement traité. Le champ `statut` indique le résultat :
|
|
15
|
+
* - `INITIE` : En attente de confirmation (si `confirmation: true`)
|
|
16
|
+
* - `ENVOYE` : Paiement envoyé avec succès (si `confirmation: false`)
|
|
17
|
+
* - `REJETE` : Paiement rejeté. Le champ `statutRaison` contient le code d'erreur :
|
|
18
|
+
* - `DU03` : txId dupliqué (déjà utilisé)
|
|
19
|
+
* - `BE23` : Alias bénéficiaire invalide
|
|
20
|
+
* - Autres codes ISO 20022
|
|
21
|
+
*
|
|
22
|
+
* @throws ApiError
|
|
23
|
+
*/
|
|
24
|
+
static paiementCreer({ requestBody, }) {
|
|
25
|
+
return __request(OpenAPI, {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
url: '/paiements',
|
|
28
|
+
body: requestBody,
|
|
29
|
+
mediaType: 'application/json',
|
|
30
|
+
errors: {
|
|
31
|
+
400: `La requête est malformée`,
|
|
32
|
+
401: `Autorisations manquantes`,
|
|
33
|
+
403: `Interdiction d'effectuer le paiement (erreurs métier non-retriables)`,
|
|
34
|
+
429: `Erreur inattendue`,
|
|
35
|
+
503: `Erreur inattendue du serveur`,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Lister les paiements
|
|
41
|
+
* Ce point de terminaison permet de lister les paiements effectués par le client.
|
|
42
|
+
* @returns PaiementListe Succès de l'opération
|
|
43
|
+
* @throws ApiError
|
|
44
|
+
*/
|
|
45
|
+
static paiementLister({ payeAlias, payeCompte, payeurAlias, payeurCompte, dateEnvoi, dateIrrevocabilite, statut, categorie, montantAchat, montantRetrait, motif, refDocType, instructionId, txId, annulationStatut, annulationMotif, retourStatut, page, size, sort, fields, }) {
|
|
46
|
+
return __request(OpenAPI, {
|
|
47
|
+
method: 'GET',
|
|
48
|
+
url: '/paiements',
|
|
49
|
+
query: {
|
|
50
|
+
'payeAlias': payeAlias,
|
|
51
|
+
'payeCompte': payeCompte,
|
|
52
|
+
'payeurAlias': payeurAlias,
|
|
53
|
+
'payeurCompte': payeurCompte,
|
|
54
|
+
'dateEnvoi': dateEnvoi,
|
|
55
|
+
'dateIrrevocabilite': dateIrrevocabilite,
|
|
56
|
+
'statut': statut,
|
|
57
|
+
'categorie': categorie,
|
|
58
|
+
'montantAchat': montantAchat,
|
|
59
|
+
'montantRetrait': montantRetrait,
|
|
60
|
+
'motif': motif,
|
|
61
|
+
'refDocType': refDocType,
|
|
62
|
+
'instructionId': instructionId,
|
|
63
|
+
'txId': txId,
|
|
64
|
+
'annulationStatut': annulationStatut,
|
|
65
|
+
'annulationMotif': annulationMotif,
|
|
66
|
+
'retourStatut': retourStatut,
|
|
67
|
+
'page': page,
|
|
68
|
+
'size': size,
|
|
69
|
+
'sort': sort,
|
|
70
|
+
'fields': fields,
|
|
71
|
+
},
|
|
72
|
+
errors: {
|
|
73
|
+
401: `Autorisations manquantes`,
|
|
74
|
+
429: `Erreur inattendue`,
|
|
75
|
+
503: `Erreur inattendue du serveur`,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Détails d'un paiement
|
|
81
|
+
* Cet point de terminaison permet de consulter les details d'un paiement.
|
|
82
|
+
*
|
|
83
|
+
* @returns Paiement Opération effectuée avec succès
|
|
84
|
+
* @throws ApiError
|
|
85
|
+
*/
|
|
86
|
+
static paiementRecuperer({ txId, }) {
|
|
87
|
+
return __request(OpenAPI, {
|
|
88
|
+
method: 'GET',
|
|
89
|
+
url: '/paiements/{txId}',
|
|
90
|
+
path: {
|
|
91
|
+
'txId': txId,
|
|
92
|
+
},
|
|
93
|
+
errors: {
|
|
94
|
+
401: `Autorisations manquantes`,
|
|
95
|
+
404: `La ressource n'existe pas dans le système`,
|
|
96
|
+
429: `Erreur inattendue`,
|
|
97
|
+
503: `Erreur inattendue du serveur`,
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Confirmer le paiement
|
|
103
|
+
* Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'un paiement immédiat
|
|
104
|
+
* après vérification du nom et du pays du bénéficiaire.
|
|
105
|
+
*
|
|
106
|
+
* **Idempotence** : Cet endpoint est idempotent.
|
|
107
|
+
* - Premier appel avec `decision: true` → Lance le paiement, retourne `200 OK {statut: "ENVOYE"}`
|
|
108
|
+
* - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
|
|
109
|
+
* - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
|
|
110
|
+
* - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
|
|
111
|
+
* - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
|
|
112
|
+
* - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
|
|
113
|
+
*
|
|
114
|
+
* **Timeout** : La confirmation doit être envoyée dans les **24 heures** suivant la création de la demande. Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée.
|
|
115
|
+
*
|
|
116
|
+
* **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
|
|
117
|
+
*
|
|
118
|
+
* @returns PaiementImmediatConfirmationReponse Paiement en cours d'envoi
|
|
119
|
+
* @throws ApiError
|
|
120
|
+
*/
|
|
121
|
+
static paiementConfirmer({ txId, requestBody, }) {
|
|
122
|
+
return __request(OpenAPI, {
|
|
123
|
+
method: 'PUT',
|
|
124
|
+
url: '/paiements/{txId}/confirmations',
|
|
125
|
+
path: {
|
|
126
|
+
'txId': txId,
|
|
127
|
+
},
|
|
128
|
+
body: requestBody,
|
|
129
|
+
mediaType: 'application/json',
|
|
130
|
+
errors: {
|
|
131
|
+
401: `Autorisations manquantes`,
|
|
132
|
+
403: `Opération interdite`,
|
|
133
|
+
404: `La ressource n'existe pas dans le système`,
|
|
134
|
+
429: `Erreur inattendue`,
|
|
135
|
+
503: `Erreur inattendue du serveur`,
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Vérifier un paiement
|
|
141
|
+
* Ce point de terminaison permet de vérifier la réception d’un paiement à partir de l’`end2endId`.
|
|
142
|
+
*
|
|
143
|
+
* Dans certains cas, le **client business** peut ne pas avoir reçu la notification de paiement.
|
|
144
|
+
* Le **client payeur** peut alors lui communiquer l’`end2endId` afin qu’il puisse vérifier manuellement le statut du paiement.
|
|
145
|
+
*
|
|
146
|
+
* Le **participant** doit, dans ce cas, vérifier dans sa base de données et s'il ne trouve pas le paiement, il doit interroger l’endpoint de PI-SPI permettant de **récupérer le statut d’un paiement**, puis **retourner ce statut** dans sa réponse.
|
|
147
|
+
*
|
|
148
|
+
* Le statut retourné doit être soit :
|
|
149
|
+
* - `IRREVOCABLE` (paiement irrévocable), ou
|
|
150
|
+
* - `REJETE` (paiement rejeté).
|
|
151
|
+
*
|
|
152
|
+
* Un transfert **ne peut pas** être signalé comme « en cours de traitement » dans ce contexte.
|
|
153
|
+
*
|
|
154
|
+
* ⚠️ **Remarques :**
|
|
155
|
+
* - La vérification ne doit concerner que les paiements réalisés depuis **moins de 3 mois (90 jours)** afin de garantir la disponibilité de la réponse.
|
|
156
|
+
* - La garantie de réponse n’est assurée qu’à partir de **20 secondes après l’envoi du transfert**.
|
|
157
|
+
*
|
|
158
|
+
* @returns Paiement Opération effectuée avec succès
|
|
159
|
+
* @throws ApiError
|
|
160
|
+
*/
|
|
161
|
+
static paiementVerifier({ end2EndId, }) {
|
|
162
|
+
return __request(OpenAPI, {
|
|
163
|
+
method: 'GET',
|
|
164
|
+
url: '/paiements/{end2endId}/statuts',
|
|
165
|
+
path: {
|
|
166
|
+
'end2endId': end2EndId,
|
|
167
|
+
},
|
|
168
|
+
errors: {
|
|
169
|
+
401: `Autorisations manquantes`,
|
|
170
|
+
404: `Ce paiement n'a pas été trouvé`,
|
|
171
|
+
429: `Erreur inattendue`,
|
|
172
|
+
503: `Erreur inattendue du serveur`,
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Paiement } from '../models/Paiement';
|
|
2
|
+
import type { CancelablePromise } from '../core/CancelablePromise';
|
|
3
|
+
export declare class RetoursdeFondsService {
|
|
4
|
+
/**
|
|
5
|
+
* Retourner les fonds
|
|
6
|
+
* Ce point de terminaison permet au business de retourner les fonds d'un paiement reçu.
|
|
7
|
+
*
|
|
8
|
+
* **Idempotence** : Cet endpoint est idempotent. Plusieurs appels avec le même `end2endId` produiront le même résultat.
|
|
9
|
+
* Si le retour de fonds a déjà été envoyé et irrévocable, le champ `retourStatut` de la réponse sera `IRREVOCABLE`.
|
|
10
|
+
* Si le retour de fonds a été envoyé et rejeté, le retour de fonds sera envoyé à nouveau.
|
|
11
|
+
* Si le retour de fonds est en cours d'envoi, le champ `retourStatut` de la réponse sera `INITIE`.
|
|
12
|
+
*
|
|
13
|
+
* **Notifications webhook** : Après envoi du retour de fonds, si le business a souscrit au service de webhook, il recevra :
|
|
14
|
+
* - Une notification `RETOUR_ENVOYE` en cas de succès du retour de fonds
|
|
15
|
+
* - Une notification `RETOUR_REJETE` en cas de rejet de la demande
|
|
16
|
+
*
|
|
17
|
+
* **Vérification du statut** : Pour obtenir le statut d'un retour de fonds envoyé, vous pouvez invoquer l'endpoint `GET /paiements/{end2endId}` et le champ `retourStatut` de la réponse indiquera l'état du retour de fonds.
|
|
18
|
+
*
|
|
19
|
+
* @returns Paiement Retour de fonds enregistré avec succès
|
|
20
|
+
* @throws ApiError
|
|
21
|
+
*/
|
|
22
|
+
static retourFondsEnvoyer({ end2EndId, }: {
|
|
23
|
+
/**
|
|
24
|
+
* L'identifiant unique de bout en bout de la transaction
|
|
25
|
+
*/
|
|
26
|
+
end2EndId: string;
|
|
27
|
+
}): CancelablePromise<Paiement>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { OpenAPI } from '../core/OpenAPI';
|
|
2
|
+
import { request as __request } from '../core/request';
|
|
3
|
+
export class RetoursdeFondsService {
|
|
4
|
+
/**
|
|
5
|
+
* Retourner les fonds
|
|
6
|
+
* Ce point de terminaison permet au business de retourner les fonds d'un paiement reçu.
|
|
7
|
+
*
|
|
8
|
+
* **Idempotence** : Cet endpoint est idempotent. Plusieurs appels avec le même `end2endId` produiront le même résultat.
|
|
9
|
+
* Si le retour de fonds a déjà été envoyé et irrévocable, le champ `retourStatut` de la réponse sera `IRREVOCABLE`.
|
|
10
|
+
* Si le retour de fonds a été envoyé et rejeté, le retour de fonds sera envoyé à nouveau.
|
|
11
|
+
* Si le retour de fonds est en cours d'envoi, le champ `retourStatut` de la réponse sera `INITIE`.
|
|
12
|
+
*
|
|
13
|
+
* **Notifications webhook** : Après envoi du retour de fonds, si le business a souscrit au service de webhook, il recevra :
|
|
14
|
+
* - Une notification `RETOUR_ENVOYE` en cas de succès du retour de fonds
|
|
15
|
+
* - Une notification `RETOUR_REJETE` en cas de rejet de la demande
|
|
16
|
+
*
|
|
17
|
+
* **Vérification du statut** : Pour obtenir le statut d'un retour de fonds envoyé, vous pouvez invoquer l'endpoint `GET /paiements/{end2endId}` et le champ `retourStatut` de la réponse indiquera l'état du retour de fonds.
|
|
18
|
+
*
|
|
19
|
+
* @returns Paiement Retour de fonds enregistré avec succès
|
|
20
|
+
* @throws ApiError
|
|
21
|
+
*/
|
|
22
|
+
static retourFondsEnvoyer({ end2EndId, }) {
|
|
23
|
+
return __request(OpenAPI, {
|
|
24
|
+
method: 'PUT',
|
|
25
|
+
url: '/paiements/{end2endId}/retours',
|
|
26
|
+
path: {
|
|
27
|
+
'end2endId': end2EndId,
|
|
28
|
+
},
|
|
29
|
+
errors: {
|
|
30
|
+
401: `Autorisations manquantes`,
|
|
31
|
+
403: `Interdiction d'effectuer le retour de fonds`,
|
|
32
|
+
429: `Erreur inattendue`,
|
|
33
|
+
503: `Erreur inattendue du serveur`,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main entry point for PI-SPI SDK
|
|
3
|
+
*
|
|
4
|
+
* @module pi-spi-sdk
|
|
5
|
+
*/
|
|
6
|
+
export { PiSpiSDK } from './sdk';
|
|
7
|
+
export type { PiSpiConfig } from './config';
|
|
8
|
+
export { PiSpiError, PiSpiValidationError, PiSpiAuthError, PiSpiNotFoundError, PiSpiRateLimitError, } from './errors';
|
|
9
|
+
export { QueryBuilder, type QueryParams, type FilterOperator } from './query-builder';
|
|
10
|
+
export { handleApiError } from './error-handler';
|
|
11
|
+
export { AliasType, ALIAS_TYPES, isValidAliasType, getAvailableAliasTypes, type AliasType as AliasTypeType, } from './types/alias';
|
|
12
|
+
export { formatAmount, xofToCentimes, centimesToXof, isValidAccountNumber, isValidShidAlias, isValidPhoneNumber, getCountryFromAccount, sleep, retryWithBackoff, } from './utils';
|
|
13
|
+
export { PI_SPI_ENDPOINTS, PAYMENT_STATUS, ACCOUNT_STATUS, ACCOUNT_TYPE, CLIENT_TYPE, UEMOA_COUNTRIES, CURRENCY, DEFAULT_LIMITS, WEBHOOK_EVENTS, } from './utils/constants';
|
|
14
|
+
export * from './generated';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main entry point for PI-SPI SDK
|
|
3
|
+
*
|
|
4
|
+
* @module pi-spi-sdk
|
|
5
|
+
*/
|
|
6
|
+
// Export main SDK class
|
|
7
|
+
export { PiSpiSDK } from './sdk';
|
|
8
|
+
// Export error classes
|
|
9
|
+
export { PiSpiError, PiSpiValidationError, PiSpiAuthError, PiSpiNotFoundError, PiSpiRateLimitError, } from './errors';
|
|
10
|
+
// Export query builder
|
|
11
|
+
export { QueryBuilder } from './query-builder';
|
|
12
|
+
// Export error handler for advanced use cases
|
|
13
|
+
export { handleApiError } from './error-handler';
|
|
14
|
+
// Export alias types and utilities
|
|
15
|
+
export { AliasType, ALIAS_TYPES, isValidAliasType, getAvailableAliasTypes, } from './types/alias';
|
|
16
|
+
// Export utility functions
|
|
17
|
+
export { formatAmount, xofToCentimes, centimesToXof, isValidAccountNumber, isValidShidAlias, isValidPhoneNumber, getCountryFromAccount, sleep, retryWithBackoff, } from './utils';
|
|
18
|
+
// Export constants
|
|
19
|
+
export { PI_SPI_ENDPOINTS, PAYMENT_STATUS, ACCOUNT_STATUS, ACCOUNT_TYPE, CLIENT_TYPE, UEMOA_COUNTRIES, CURRENCY, DEFAULT_LIMITS, WEBHOOK_EVENTS, } from './utils/constants';
|
|
20
|
+
// Note: ALIAS_TYPES is exported from './types/alias' above
|
|
21
|
+
// Re-export generated types and services (available after running generate)
|
|
22
|
+
// These will be available once the OpenAPI codegen is run
|
|
23
|
+
export * from './generated';
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query builder utility for constructing filter, pagination, and sorting parameters
|
|
3
|
+
*/
|
|
4
|
+
export type FilterOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'contains' | 'notContains' | 'beginsWith' | 'endsWith' | 'exists';
|
|
5
|
+
export interface FilterOptions {
|
|
6
|
+
operator?: FilterOperator;
|
|
7
|
+
value: string | number | boolean | string[];
|
|
8
|
+
}
|
|
9
|
+
export interface QueryParams {
|
|
10
|
+
[key: string]: string | number | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare class QueryBuilder {
|
|
13
|
+
private params;
|
|
14
|
+
private filters;
|
|
15
|
+
private sortField?;
|
|
16
|
+
private sortOrder;
|
|
17
|
+
/**
|
|
18
|
+
* Add a filter condition
|
|
19
|
+
* @param field - Field name to filter on
|
|
20
|
+
* @param operator - Filter operator (default: 'eq')
|
|
21
|
+
* @param value - Filter value
|
|
22
|
+
*/
|
|
23
|
+
filter(field: string, operatorOrValue: FilterOperator | string | number | boolean, value?: string | number | boolean | string[]): this;
|
|
24
|
+
/**
|
|
25
|
+
* Add an equality filter (shorthand)
|
|
26
|
+
*/
|
|
27
|
+
eq(field: string, value: string | number | boolean): this;
|
|
28
|
+
/**
|
|
29
|
+
* Add a "not equal" filter (shorthand)
|
|
30
|
+
*/
|
|
31
|
+
ne(field: string, value: string | number | boolean): this;
|
|
32
|
+
/**
|
|
33
|
+
* Add a "greater than" filter (shorthand)
|
|
34
|
+
*/
|
|
35
|
+
gt(field: string, value: string | number): this;
|
|
36
|
+
/**
|
|
37
|
+
* Add a "greater than or equal" filter (shorthand)
|
|
38
|
+
*/
|
|
39
|
+
gte(field: string, value: string | number): this;
|
|
40
|
+
/**
|
|
41
|
+
* Add a "less than" filter (shorthand)
|
|
42
|
+
*/
|
|
43
|
+
lt(field: string, value: string | number): this;
|
|
44
|
+
/**
|
|
45
|
+
* Add a "less than or equal" filter (shorthand)
|
|
46
|
+
*/
|
|
47
|
+
lte(field: string, value: string | number): this;
|
|
48
|
+
/**
|
|
49
|
+
* Add an "in" filter (shorthand)
|
|
50
|
+
*/
|
|
51
|
+
in(field: string, values: string[]): this;
|
|
52
|
+
/**
|
|
53
|
+
* Add a "contains" filter (shorthand)
|
|
54
|
+
*/
|
|
55
|
+
contains(field: string, value: string): this;
|
|
56
|
+
/**
|
|
57
|
+
* Set sort field and order
|
|
58
|
+
* @param field - Field to sort by
|
|
59
|
+
* @param order - Sort order ('asc' or 'desc', default: 'asc')
|
|
60
|
+
*/
|
|
61
|
+
sort(field: string, order?: 'asc' | 'desc'): this;
|
|
62
|
+
/**
|
|
63
|
+
* Sort in descending order (shorthand)
|
|
64
|
+
*/
|
|
65
|
+
sortDesc(field: string): this;
|
|
66
|
+
/**
|
|
67
|
+
* Set page number
|
|
68
|
+
*/
|
|
69
|
+
page(page: number | string): this;
|
|
70
|
+
/**
|
|
71
|
+
* Set page size
|
|
72
|
+
*/
|
|
73
|
+
size(size: number): this;
|
|
74
|
+
/**
|
|
75
|
+
* Add a custom parameter
|
|
76
|
+
*/
|
|
77
|
+
param(key: string, value: string | number): this;
|
|
78
|
+
/**
|
|
79
|
+
* Build the query parameters object
|
|
80
|
+
*/
|
|
81
|
+
build(): QueryParams;
|
|
82
|
+
/**
|
|
83
|
+
* Build query string
|
|
84
|
+
*/
|
|
85
|
+
buildQueryString(): string;
|
|
86
|
+
/**
|
|
87
|
+
* Reset the builder
|
|
88
|
+
*/
|
|
89
|
+
reset(): this;
|
|
90
|
+
private isOperator;
|
|
91
|
+
}
|