pi-spi-sdk 0.1.3 → 0.2.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 +39 -0
- package/README.md +23 -1
- package/dist/chunk-7W56NW2S.mjs +2066 -0
- package/dist/generated-FM5EVVHH.mjs +84 -0
- package/dist/index.cjs +4754 -0
- package/dist/index.d.cts +4940 -0
- package/dist/index.d.ts +4937 -12
- package/dist/index.mjs +2359 -0
- package/dist/index.umd.js +2 -0
- package/dist/qrcode/index.cjs +757 -0
- package/dist/qrcode/index.d.cts +68 -0
- package/dist/qrcode/index.d.ts +20 -14
- package/dist/qrcode/index.mjs +712 -0
- package/package.json +24 -8
- package/dist/config.d.ts +0 -35
- package/dist/config.js +0 -5
- package/dist/error-handler.d.ts +0 -7
- package/dist/error-handler.js +0 -55
- package/dist/errors.d.ts +0 -25
- package/dist/errors.js +0 -48
- package/dist/examples.d.ts +0 -8
- package/dist/examples.js +0 -93
- package/dist/generated/core/ApiError.d.ts +0 -10
- package/dist/generated/core/ApiError.js +0 -15
- package/dist/generated/core/ApiRequestOptions.d.ts +0 -13
- package/dist/generated/core/ApiRequestOptions.js +0 -2
- package/dist/generated/core/ApiResult.d.ts +0 -7
- package/dist/generated/core/ApiResult.js +0 -2
- package/dist/generated/core/CancelablePromise.d.ts +0 -20
- package/dist/generated/core/CancelablePromise.js +0 -116
- package/dist/generated/core/OpenAPI.d.ts +0 -16
- package/dist/generated/core/OpenAPI.js +0 -14
- package/dist/generated/core/request.d.ts +0 -34
- package/dist/generated/core/request.js +0 -292
- package/dist/generated/index.d.ts +0 -78
- package/dist/generated/index.js +0 -86
- package/dist/generated/models/AliasCreationReponse.d.ts +0 -22
- package/dist/generated/models/AliasCreationReponse.js +0 -2
- package/dist/generated/models/AliasCreationRequest.d.ts +0 -11
- package/dist/generated/models/AliasCreationRequest.js +0 -2
- package/dist/generated/models/AliasReponseListe.d.ts +0 -26
- package/dist/generated/models/AliasReponseListe.js +0 -2
- package/dist/generated/models/AnnulationStatut.d.ts +0 -13
- package/dist/generated/models/AnnulationStatut.js +0 -21
- package/dist/generated/models/Champs.d.ts +0 -1
- package/dist/generated/models/Champs.js +0 -2
- package/dist/generated/models/CompteOperation.d.ts +0 -72
- package/dist/generated/models/CompteOperation.js +0 -27
- package/dist/generated/models/CompteOperationListe.d.ts +0 -18
- package/dist/generated/models/CompteOperationListe.js +0 -2
- package/dist/generated/models/CompteSolde.d.ts +0 -129
- package/dist/generated/models/CompteSolde.js +0 -74
- package/dist/generated/models/CompteTransfertIntraReponse.d.ts +0 -33
- package/dist/generated/models/CompteTransfertIntraReponse.js +0 -15
- package/dist/generated/models/CompteTransfertIntraRequest.d.ts +0 -9
- package/dist/generated/models/CompteTransfertIntraRequest.js +0 -2
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +0 -14
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +0 -22
- package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +0 -41
- package/dist/generated/models/DemandePaiementConfirmationReponse.js +0 -16
- package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +0 -3
- package/dist/generated/models/DemandePaiementConfirmationRequest.js +0 -2
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +0 -9
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +0 -2
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +0 -9
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +0 -2
- package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +0 -151
- package/dist/generated/models/DemandePaiementConsultationReponse.js +0 -30
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +0 -3
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +0 -2
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +0 -9
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +0 -2
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +0 -9
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +0 -2
- package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +0 -74
- package/dist/generated/models/DemandePaiementEnMasseRequest.js +0 -2
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +0 -98
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +0 -23
- package/dist/generated/models/DemandePaiementListe.d.ts +0 -26
- package/dist/generated/models/DemandePaiementListe.js +0 -2
- package/dist/generated/models/DemandePaiementListeItem.d.ts +0 -163
- package/dist/generated/models/DemandePaiementListeItem.js +0 -30
- package/dist/generated/models/DemandePaiementReponse.d.ts +0 -129
- package/dist/generated/models/DemandePaiementReponse.js +0 -2
- package/dist/generated/models/DemandePaiementReponseRequest.d.ts +0 -21
- package/dist/generated/models/DemandePaiementReponseRequest.js +0 -14
- package/dist/generated/models/DemandePaiementRequest.d.ts +0 -98
- package/dist/generated/models/DemandePaiementRequest.js +0 -10
- package/dist/generated/models/DemandePaiementRequestBase.d.ts +0 -42
- package/dist/generated/models/DemandePaiementRequestBase.js +0 -2
- package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +0 -12
- package/dist/generated/models/DemandePaiementRequestCategorie.js +0 -20
- package/dist/generated/models/DemandePaiementStatut.d.ts +0 -13
- package/dist/generated/models/DemandePaiementStatut.js +0 -21
- package/dist/generated/models/DemandePaiementStatutRaison.d.ts +0 -46
- package/dist/generated/models/DemandePaiementStatutRaison.js +0 -54
- package/dist/generated/models/ListeMeta.d.ts +0 -14
- package/dist/generated/models/ListeMeta.js +0 -2
- package/dist/generated/models/Paiement.d.ts +0 -156
- package/dist/generated/models/Paiement.js +0 -31
- package/dist/generated/models/PaiementAnnulationMotif.d.ts +0 -17
- package/dist/generated/models/PaiementAnnulationMotif.js +0 -25
- package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +0 -11
- package/dist/generated/models/PaiementAnnulationReponseRequest.js +0 -2
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +0 -9
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +0 -2
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +0 -9
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +0 -2
- package/dist/generated/models/PaiementAnnulationRequest.d.ts +0 -4
- package/dist/generated/models/PaiementAnnulationRequest.js +0 -2
- package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +0 -21
- package/dist/generated/models/PaiementAnnulationStatutRaison.js +0 -29
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +0 -3
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +0 -2
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +0 -9
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +0 -2
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +0 -9
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +0 -2
- package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +0 -97
- package/dist/generated/models/PaiementEnMasseReponseStatut.js +0 -23
- package/dist/generated/models/PaiementEnMasseRequest.d.ts +0 -54
- package/dist/generated/models/PaiementEnMasseRequest.js +0 -2
- package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +0 -31
- package/dist/generated/models/PaiementImmediatConfirmationReponse.js +0 -10
- package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +0 -3
- package/dist/generated/models/PaiementImmediatConfirmationRequest.js +0 -2
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +0 -9
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +0 -2
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +0 -9
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +0 -2
- package/dist/generated/models/PaiementImmediatReponse.d.ts +0 -98
- package/dist/generated/models/PaiementImmediatReponse.js +0 -10
- package/dist/generated/models/PaiementImmediatRequest.d.ts +0 -13
- package/dist/generated/models/PaiementImmediatRequest.js +0 -2
- package/dist/generated/models/PaiementListe.d.ts +0 -6
- package/dist/generated/models/PaiementListe.js +0 -2
- package/dist/generated/models/PaiementRequest.d.ts +0 -33
- package/dist/generated/models/PaiementRequest.js +0 -2
- package/dist/generated/models/PaiementStatut.d.ts +0 -13
- package/dist/generated/models/PaiementStatut.js +0 -21
- package/dist/generated/models/PaiementStatutRaison.d.ts +0 -56
- package/dist/generated/models/PaiementStatutRaison.js +0 -64
- package/dist/generated/models/Problem7807.d.ts +0 -31
- package/dist/generated/models/Problem7807.js +0 -2
- package/dist/generated/models/RefDocType.d.ts +0 -38
- package/dist/generated/models/RefDocType.js +0 -46
- package/dist/generated/models/RetourStatut.d.ts +0 -13
- package/dist/generated/models/RetourStatut.js +0 -21
- package/dist/generated/models/RetourStatutRaison.d.ts +0 -25
- package/dist/generated/models/RetourStatutRaison.js +0 -33
- package/dist/generated/models/WebhookCreationRequest.d.ts +0 -14
- package/dist/generated/models/WebhookCreationRequest.js +0 -2
- package/dist/generated/models/WebhookCreationResponse.d.ts +0 -12
- package/dist/generated/models/WebhookCreationResponse.js +0 -2
- package/dist/generated/models/WebhookData.d.ts +0 -8
- package/dist/generated/models/WebhookData.js +0 -2
- package/dist/generated/models/WebhookEvent.d.ts +0 -191
- package/dist/generated/models/WebhookEvent.js +0 -45
- package/dist/generated/models/WebhookEventsList.d.ts +0 -13
- package/dist/generated/models/WebhookEventsList.js +0 -2
- package/dist/generated/models/WebhookList.d.ts +0 -13
- package/dist/generated/models/WebhookList.js +0 -2
- package/dist/generated/models/WebhookModificationRequest.d.ts +0 -4
- package/dist/generated/models/WebhookModificationRequest.js +0 -2
- package/dist/generated/models/WebhooksEvents.d.ts +0 -12
- package/dist/generated/models/WebhooksEvents.js +0 -20
- package/dist/generated/services/AliasService.d.ts +0 -63
- package/dist/generated/services/AliasService.js +0 -88
- package/dist/generated/services/ComptesService.d.ts +0 -64
- package/dist/generated/services/ComptesService.js +0 -90
- package/dist/generated/services/DemandeAnnulationService.d.ts +0 -84
- package/dist/generated/services/DemandeAnnulationService.js +0 -103
- package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +0 -161
- package/dist/generated/services/DemandesDePaiementEnMasseService.js +0 -193
- package/dist/generated/services/DemandesDePaiementService.d.ts +0 -123
- package/dist/generated/services/DemandesDePaiementService.js +0 -165
- package/dist/generated/services/NotificationService.d.ts +0 -80
- package/dist/generated/services/NotificationService.js +0 -136
- package/dist/generated/services/PaiementEnMasseService.d.ts +0 -159
- package/dist/generated/services/PaiementEnMasseService.js +0 -191
- package/dist/generated/services/PaiementImmediatService.d.ts +0 -135
- package/dist/generated/services/PaiementImmediatService.js +0 -180
- package/dist/generated/services/RetoursdeFondsService.d.ts +0 -28
- package/dist/generated/services/RetoursdeFondsService.js +0 -41
- package/dist/index.js +0 -72
- package/dist/qrcode/index.js +0 -541
- package/dist/qrcode/logo.d.ts +0 -3
- package/dist/qrcode/logo.js +0 -142
- package/dist/query-builder.d.ts +0 -91
- package/dist/query-builder.js +0 -191
- package/dist/sdk.d.ts +0 -104
- package/dist/sdk.js +0 -147
- package/dist/services/alias.d.ts +0 -76
- package/dist/services/alias.js +0 -80
- package/dist/services/base.d.ts +0 -20
- package/dist/services/base.js +0 -67
- package/dist/services/comptes.d.ts +0 -149
- package/dist/services/comptes.js +0 -162
- package/dist/services/demandes-annulation.d.ts +0 -97
- package/dist/services/demandes-annulation.js +0 -108
- package/dist/services/demandes-paiement-en-masse.d.ts +0 -33
- package/dist/services/demandes-paiement-en-masse.js +0 -44
- package/dist/services/demandes-paiement.d.ts +0 -148
- package/dist/services/demandes-paiement.js +0 -153
- package/dist/services/paiements-en-masse.d.ts +0 -152
- package/dist/services/paiements-en-masse.js +0 -157
- package/dist/services/paiements.d.ts +0 -135
- package/dist/services/paiements.js +0 -139
- package/dist/services/retours-fonds.d.ts +0 -94
- package/dist/services/retours-fonds.js +0 -104
- package/dist/services/webhooks.d.ts +0 -131
- package/dist/services/webhooks.js +0 -146
- package/dist/types/alias.d.ts +0 -64
- package/dist/types/alias.js +0 -78
- package/dist/utils/constants.d.ts +0 -93
- package/dist/utils/constants.js +0 -96
- package/dist/utils/index.d.ts +0 -60
- package/dist/utils/index.js +0 -126
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,4940 @@
|
|
|
1
|
+
declare const PISPI_AMBER_LOGO_DATA_URL: string;
|
|
2
|
+
declare const PISPI_QRCODE_LOGO_DATA_URL: string;
|
|
3
|
+
declare const DEFAULT_PISPI_LOGO_DATA_URL: string;
|
|
4
|
+
|
|
5
|
+
type QrType = 'STATIC' | 'DYNAMIC';
|
|
6
|
+
interface QrPayloadInput {
|
|
7
|
+
alias: string;
|
|
8
|
+
countryCode: string;
|
|
9
|
+
qrType: QrType;
|
|
10
|
+
referenceLabel: string;
|
|
11
|
+
amount?: number | string;
|
|
12
|
+
}
|
|
13
|
+
interface AdditionalDataOverrides {
|
|
14
|
+
merchantChannel?: string;
|
|
15
|
+
purposeOfTransaction?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Free form additional data embedded inside template 62 (id => value)
|
|
18
|
+
* Keys must be 2-digit strings according to EMV specification.
|
|
19
|
+
*/
|
|
20
|
+
custom?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
interface QrPayloadOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Override default Additional Data tags.
|
|
25
|
+
*/
|
|
26
|
+
additionalData?: AdditionalDataOverrides;
|
|
27
|
+
}
|
|
28
|
+
interface QrPayloadResult {
|
|
29
|
+
payload: string;
|
|
30
|
+
}
|
|
31
|
+
interface QrValidationResult {
|
|
32
|
+
valid: boolean;
|
|
33
|
+
errors: string[];
|
|
34
|
+
data?: QrPayloadInput;
|
|
35
|
+
}
|
|
36
|
+
interface QrCodeSvgOptions {
|
|
37
|
+
size?: number;
|
|
38
|
+
margin?: number;
|
|
39
|
+
logoDataUrl?: string;
|
|
40
|
+
logoSizeRatio?: number;
|
|
41
|
+
logoPaddingRatio?: number;
|
|
42
|
+
logoBackgroundColor?: string;
|
|
43
|
+
logoBorderRadiusRatio?: number;
|
|
44
|
+
dotColor?: string;
|
|
45
|
+
backgroundColor?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Génère la payload EMV conforme PI-SPI pour un QR Code.
|
|
49
|
+
*/
|
|
50
|
+
declare function createQrPayload(input: QrPayloadInput, options?: QrPayloadOptions): QrPayloadResult;
|
|
51
|
+
declare function computeCrc16(input: string): string;
|
|
52
|
+
declare function buildPayloadString(params: QrPayloadInput, options?: QrPayloadOptions): string;
|
|
53
|
+
declare function generateQrCodeSvg(input: QrPayloadInput, options?: QrCodeSvgOptions): Promise<string>;
|
|
54
|
+
declare const QRCode: {
|
|
55
|
+
createQrPayload: typeof createQrPayload;
|
|
56
|
+
buildPayloadString: typeof buildPayloadString;
|
|
57
|
+
computeCrc16: typeof computeCrc16;
|
|
58
|
+
generateQrCodeSvg: typeof generateQrCodeSvg;
|
|
59
|
+
isValidPispiQrPayload: typeof isValidPispiQrPayload;
|
|
60
|
+
payload: typeof buildPayloadString;
|
|
61
|
+
svg: typeof generateQrCodeSvg;
|
|
62
|
+
validate: typeof isValidPispiQrPayload;
|
|
63
|
+
raw: typeof createQrPayload;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
declare function isValidPispiQrPayload(value: string): QrValidationResult;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Error handler utility for converting API errors to SDK errors
|
|
70
|
+
*/
|
|
71
|
+
/**
|
|
72
|
+
* Convert a generated API error to a SDK error
|
|
73
|
+
*/
|
|
74
|
+
declare function handleApiError(error: unknown): never;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* PI-SPI SDK Configuration
|
|
78
|
+
*/
|
|
79
|
+
interface PiSpiConfig {
|
|
80
|
+
/**
|
|
81
|
+
* Base URL for the PI-SPI API
|
|
82
|
+
* @default 'https://sandbox.api.pi-bceao.com/piz/v1'
|
|
83
|
+
*/
|
|
84
|
+
baseUrl?: string;
|
|
85
|
+
/**
|
|
86
|
+
* OAuth2 access token for authentication
|
|
87
|
+
*/
|
|
88
|
+
accessToken: string;
|
|
89
|
+
/**
|
|
90
|
+
* Optional: undici/fetch dispatcher (e.g. mTLS Agent)
|
|
91
|
+
*/
|
|
92
|
+
dispatcher?: unknown;
|
|
93
|
+
/**
|
|
94
|
+
* Optional: Client certificate path for mTLS
|
|
95
|
+
*/
|
|
96
|
+
clientCert?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Optional: Client key path for mTLS
|
|
99
|
+
*/
|
|
100
|
+
clientKey?: string;
|
|
101
|
+
/**
|
|
102
|
+
* Optional: CA certificate path for mTLS
|
|
103
|
+
*/
|
|
104
|
+
caCert?: string;
|
|
105
|
+
/**
|
|
106
|
+
* Optional: Additional headers to include in requests
|
|
107
|
+
*/
|
|
108
|
+
headers?: Record<string, string>;
|
|
109
|
+
/**
|
|
110
|
+
* Optional: Request timeout in milliseconds
|
|
111
|
+
* @default 30000
|
|
112
|
+
*/
|
|
113
|
+
timeout?: number;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Base service class with common error handling and HTTP request capability
|
|
118
|
+
*/
|
|
119
|
+
interface ApiConfig {
|
|
120
|
+
BASE: string;
|
|
121
|
+
TOKEN?: string;
|
|
122
|
+
HEADERS?: Record<string, string>;
|
|
123
|
+
dispatcher?: unknown;
|
|
124
|
+
}
|
|
125
|
+
declare abstract class BaseService {
|
|
126
|
+
protected config: ApiConfig;
|
|
127
|
+
constructor(config: ApiConfig);
|
|
128
|
+
/**
|
|
129
|
+
* Wrap an async operation with error handling
|
|
130
|
+
*/
|
|
131
|
+
protected execute<T>(operation: () => Promise<T>): Promise<T>;
|
|
132
|
+
/**
|
|
133
|
+
* Make an HTTP request
|
|
134
|
+
*/
|
|
135
|
+
protected request<T>(method: string, path: string, body?: any, params?: Record<string, any>): Promise<T>;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Query builder utility for constructing filter, pagination, and sorting parameters
|
|
140
|
+
*/
|
|
141
|
+
type FilterOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'contains' | 'notContains' | 'beginsWith' | 'endsWith' | 'exists';
|
|
142
|
+
interface QueryParams {
|
|
143
|
+
[key: string]: string | number | undefined;
|
|
144
|
+
}
|
|
145
|
+
declare class QueryBuilder {
|
|
146
|
+
private params;
|
|
147
|
+
private filters;
|
|
148
|
+
private sortField?;
|
|
149
|
+
private sortOrder;
|
|
150
|
+
/**
|
|
151
|
+
* Add a filter condition
|
|
152
|
+
* @param field - Field name to filter on
|
|
153
|
+
* @param operator - Filter operator (default: 'eq')
|
|
154
|
+
* @param value - Filter value
|
|
155
|
+
*/
|
|
156
|
+
filter(field: string, operatorOrValue: FilterOperator | string | number | boolean, value?: string | number | boolean | string[]): this;
|
|
157
|
+
/**
|
|
158
|
+
* Add an equality filter (shorthand)
|
|
159
|
+
*/
|
|
160
|
+
eq(field: string, value: string | number | boolean): this;
|
|
161
|
+
/**
|
|
162
|
+
* Add a "not equal" filter (shorthand)
|
|
163
|
+
*/
|
|
164
|
+
ne(field: string, value: string | number | boolean): this;
|
|
165
|
+
/**
|
|
166
|
+
* Add a "greater than" filter (shorthand)
|
|
167
|
+
*/
|
|
168
|
+
gt(field: string, value: string | number): this;
|
|
169
|
+
/**
|
|
170
|
+
* Add a "greater than or equal" filter (shorthand)
|
|
171
|
+
*/
|
|
172
|
+
gte(field: string, value: string | number): this;
|
|
173
|
+
/**
|
|
174
|
+
* Add a "less than" filter (shorthand)
|
|
175
|
+
*/
|
|
176
|
+
lt(field: string, value: string | number): this;
|
|
177
|
+
/**
|
|
178
|
+
* Add a "less than or equal" filter (shorthand)
|
|
179
|
+
*/
|
|
180
|
+
lte(field: string, value: string | number): this;
|
|
181
|
+
/**
|
|
182
|
+
* Add an "in" filter (shorthand)
|
|
183
|
+
*/
|
|
184
|
+
in(field: string, values: string[]): this;
|
|
185
|
+
/**
|
|
186
|
+
* Add a "contains" filter (shorthand)
|
|
187
|
+
*/
|
|
188
|
+
contains(field: string, value: string): this;
|
|
189
|
+
/**
|
|
190
|
+
* Set sort field and order
|
|
191
|
+
* @param field - Field to sort by
|
|
192
|
+
* @param order - Sort order ('asc' or 'desc', default: 'asc')
|
|
193
|
+
*/
|
|
194
|
+
sort(field: string, order?: 'asc' | 'desc'): this;
|
|
195
|
+
/**
|
|
196
|
+
* Sort in descending order (shorthand)
|
|
197
|
+
*/
|
|
198
|
+
sortDesc(field: string): this;
|
|
199
|
+
/**
|
|
200
|
+
* Set page number
|
|
201
|
+
*/
|
|
202
|
+
page(page: number | string): this;
|
|
203
|
+
/**
|
|
204
|
+
* Set page size
|
|
205
|
+
*/
|
|
206
|
+
size(size: number): this;
|
|
207
|
+
/**
|
|
208
|
+
* Add a custom parameter
|
|
209
|
+
*/
|
|
210
|
+
param(key: string, value: string | number): this;
|
|
211
|
+
/**
|
|
212
|
+
* Build the query parameters object
|
|
213
|
+
*/
|
|
214
|
+
build(): QueryParams;
|
|
215
|
+
/**
|
|
216
|
+
* Build query string
|
|
217
|
+
*/
|
|
218
|
+
buildQueryString(): string;
|
|
219
|
+
/**
|
|
220
|
+
* Reset the builder
|
|
221
|
+
*/
|
|
222
|
+
reset(): this;
|
|
223
|
+
private isOperator;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Accounts (Comptes) service wrapper
|
|
228
|
+
*
|
|
229
|
+
* Provides methods for managing accounts, viewing balances,
|
|
230
|
+
* listing operations, and performing intra-account transfers.
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* ```typescript
|
|
234
|
+
* // Get account balance and details
|
|
235
|
+
* const account = await sdk.comptes.getAccount('CIC2344256727788288822');
|
|
236
|
+
* console.log('Balance:', account.solde); // Amount in centimes
|
|
237
|
+
* console.log('Status:', account.statut); // 'OUVERT', 'BLOQUE', or 'CLOTURE'
|
|
238
|
+
*
|
|
239
|
+
* // List operations with pagination
|
|
240
|
+
* const operations = await sdk.comptes.listOperations({
|
|
241
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
242
|
+
* page: 1,
|
|
243
|
+
* size: 20
|
|
244
|
+
* });
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
|
|
248
|
+
declare class ComptesService$1 extends BaseService {
|
|
249
|
+
/**
|
|
250
|
+
* Get account details and balance
|
|
251
|
+
*
|
|
252
|
+
* **Returns:**
|
|
253
|
+
* - Account type (CACC, SVGS, etc.)
|
|
254
|
+
* - Account number
|
|
255
|
+
* - Current balance (`solde` in centimes)
|
|
256
|
+
* - Account status (OUVERT, BLOQUE, CLOTURE)
|
|
257
|
+
* - Opening date
|
|
258
|
+
* - Pre-confirmation indicator
|
|
259
|
+
*
|
|
260
|
+
* @param numero - Account number (e.g., 'CIC2344256727788288822')
|
|
261
|
+
* @returns Account details including balance
|
|
262
|
+
* @throws {PiSpiNotFoundError} If account not found
|
|
263
|
+
* @throws {PiSpiAuthError} If authentication fails
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* const account = await sdk.comptes.getAccount('CIC2344256727788288822');
|
|
268
|
+
* // Returns: {
|
|
269
|
+
* // type: 'CACC',
|
|
270
|
+
* // numero: 'CIC2344256727788288822',
|
|
271
|
+
* // solde: 150000000, // 1,500,000 XOF in centimes
|
|
272
|
+
* // statut: 'OUVERT',
|
|
273
|
+
* // dateOuverture: '2023-02-21T15:30:01.250Z'
|
|
274
|
+
* // }
|
|
275
|
+
* ```
|
|
276
|
+
*/
|
|
277
|
+
getAccount(numero: string): Promise<{
|
|
278
|
+
type?: string;
|
|
279
|
+
numero?: string;
|
|
280
|
+
solde?: number;
|
|
281
|
+
balance?: number;
|
|
282
|
+
statut?: string;
|
|
283
|
+
dateOuverture?: string;
|
|
284
|
+
}>;
|
|
285
|
+
/**
|
|
286
|
+
* List account operations (transactions)
|
|
287
|
+
*
|
|
288
|
+
* **Filtering Options:**
|
|
289
|
+
* - Filter by account number (`comptePayeur`, `comptePaye`)
|
|
290
|
+
* - Filter by status (`statut`: INITIE, ENVOYE, IRREVOCABLE, REJETE)
|
|
291
|
+
* - Filter by dates (`dateEnvoi`, `dateIrrevocabilite`)
|
|
292
|
+
* - Use QueryBuilder for advanced filtering
|
|
293
|
+
*
|
|
294
|
+
* @param params - Query parameters for filtering and pagination
|
|
295
|
+
* @param params.comptePayeur - Filter by payer account number
|
|
296
|
+
* @param params.comptePaye - Filter by payee account number
|
|
297
|
+
* @param params.statut - Filter by transaction status
|
|
298
|
+
* @param params.dateEnvoi - Filter by send date
|
|
299
|
+
* @param params.dateIrrevocabilite - Filter by irrevocability date
|
|
300
|
+
* @param params.page - Page number (default: 1)
|
|
301
|
+
* @param params.size - Page size (default: 20, max: 100)
|
|
302
|
+
* @returns Paginated list of operations
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* ```typescript
|
|
306
|
+
* // List all operations for an account
|
|
307
|
+
* const operations = await sdk.comptes.listOperations({
|
|
308
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
309
|
+
* page: 1,
|
|
310
|
+
* size: 20
|
|
311
|
+
* });
|
|
312
|
+
*
|
|
313
|
+
* // Filter by status
|
|
314
|
+
* const completed = await sdk.comptes.listOperations({
|
|
315
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
316
|
+
* statut: 'IRREVOCABLE'
|
|
317
|
+
* });
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
listOperations(params?: QueryParams & {
|
|
321
|
+
comptePayeur?: string;
|
|
322
|
+
comptePaye?: string;
|
|
323
|
+
statut?: string;
|
|
324
|
+
dateEnvoi?: string;
|
|
325
|
+
dateIrrevocabilite?: string;
|
|
326
|
+
}): Promise<unknown>;
|
|
327
|
+
/**
|
|
328
|
+
* Transfer funds between accounts owned by the same client
|
|
329
|
+
*
|
|
330
|
+
* **Intra-Account Transfer:**
|
|
331
|
+
* - Transfers between accounts owned by the same legal entity
|
|
332
|
+
* - Accounts must be at the same financial institution
|
|
333
|
+
* - Can use account numbers or aliases
|
|
334
|
+
*
|
|
335
|
+
* **Transfer Methods:**
|
|
336
|
+
* - Using account numbers: `comptePayeur` and `comptePaye`
|
|
337
|
+
* - Using aliases: `payeurAlias` and `payeAlias`
|
|
338
|
+
*
|
|
339
|
+
* @param transfer - Transfer request details
|
|
340
|
+
* @param transfer.comptePayeur - Payer account number (if using account numbers)
|
|
341
|
+
* @param transfer.comptePaye - Payee account number (if using account numbers)
|
|
342
|
+
* @param transfer.payeurAlias - Payer alias (if using aliases)
|
|
343
|
+
* @param transfer.payeAlias - Payee alias (if using aliases)
|
|
344
|
+
* @param transfer.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
|
|
345
|
+
* @param transfer.motif - Transfer reason/description
|
|
346
|
+
* @param transfer.txId - Unique transaction ID (optional, auto-generated if not provided)
|
|
347
|
+
* @returns Transfer response with status
|
|
348
|
+
* @throws {PiSpiValidationError} If transfer fails validation
|
|
349
|
+
* @throws {PiSpiError} If account blocked or insufficient funds
|
|
350
|
+
*
|
|
351
|
+
* @example
|
|
352
|
+
* ```typescript
|
|
353
|
+
* // Transfer using account numbers
|
|
354
|
+
* await sdk.comptes.transfer({
|
|
355
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
356
|
+
* comptePaye: 'SNC2344256727788288822',
|
|
357
|
+
* montant: 150000, // 1,500 XOF
|
|
358
|
+
* motif: 'Transfert de fonds',
|
|
359
|
+
* txId: '23511722'
|
|
360
|
+
* });
|
|
361
|
+
*
|
|
362
|
+
* // Transfer using aliases
|
|
363
|
+
* await sdk.comptes.transfer({
|
|
364
|
+
* payeurAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
|
|
365
|
+
* payeAlias: '4r5ty499-3e50-435b-b757-ac7a83d67juio',
|
|
366
|
+
* montant: 150000,
|
|
367
|
+
* motif: 'Transfert entre comptes'
|
|
368
|
+
* });
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
transfer(transfer: {
|
|
372
|
+
comptePayeur?: string;
|
|
373
|
+
comptePaye?: string;
|
|
374
|
+
payeurAlias?: string;
|
|
375
|
+
payeAlias?: string;
|
|
376
|
+
montant: number;
|
|
377
|
+
motif?: string;
|
|
378
|
+
txId?: string;
|
|
379
|
+
}): Promise<unknown>;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Alias Types for PI-SPI
|
|
384
|
+
*
|
|
385
|
+
* The PI-SPI platform supports different types of account aliases:
|
|
386
|
+
*
|
|
387
|
+
* - **SHID**: A randomly generated 36-character unique payment address (UUID format).
|
|
388
|
+
* Generated by the system when created. Available for all client types (P, C, B, G).
|
|
389
|
+
* Example: `8b1b2499-3e50-435b-b757-ac7a83d8aa7f`
|
|
390
|
+
*
|
|
391
|
+
* - **MCOD**: Merchant code identifier for USSD payment support.
|
|
392
|
+
* Available for business clients only (C, B, G). Format: alphanumeric code.
|
|
393
|
+
* Example: `SNF00_2E4TY`
|
|
394
|
+
*
|
|
395
|
+
* - **MBNO**: Mobile phone number alias.
|
|
396
|
+
* Available for individual clients (P) only. Format: phone number.
|
|
397
|
+
* Example: `+221771234567`
|
|
398
|
+
*
|
|
399
|
+
* **Client Type Restrictions:**
|
|
400
|
+
* - Type P (Individuals): Can create MBNO and SHID aliases
|
|
401
|
+
* - Types C, B, G (Businesses): Can create SHID and MCOD aliases
|
|
402
|
+
*
|
|
403
|
+
* **Limits:**
|
|
404
|
+
* - Default limit: 20 aliases per account
|
|
405
|
+
* - Limit can be increased based on client needs
|
|
406
|
+
*/
|
|
407
|
+
/**
|
|
408
|
+
* Alias type values as defined in the PI-SPI API specification
|
|
409
|
+
*/
|
|
410
|
+
declare const AliasType: {
|
|
411
|
+
/**
|
|
412
|
+
* SHID - System-generated unique payment address (UUID format, 36 characters)
|
|
413
|
+
* Available for all client types: P, C, B, G
|
|
414
|
+
*/
|
|
415
|
+
readonly SHID: "SHID";
|
|
416
|
+
/**
|
|
417
|
+
* MCOD - Merchant code for USSD payment support
|
|
418
|
+
* Available for business clients only: C, B, G
|
|
419
|
+
*/
|
|
420
|
+
readonly MCOD: "MCOD";
|
|
421
|
+
/**
|
|
422
|
+
* MBNO - Mobile phone number alias
|
|
423
|
+
* Available for individual clients only: P
|
|
424
|
+
*/
|
|
425
|
+
readonly MBNO: "MBNO";
|
|
426
|
+
};
|
|
427
|
+
/**
|
|
428
|
+
* Type representing a valid alias type
|
|
429
|
+
*/
|
|
430
|
+
type AliasType = (typeof AliasType)[keyof typeof AliasType];
|
|
431
|
+
/**
|
|
432
|
+
* Valid alias types as a tuple for runtime validation
|
|
433
|
+
*/
|
|
434
|
+
declare const ALIAS_TYPES: readonly ["SHID", "MCOD", "MBNO"];
|
|
435
|
+
/**
|
|
436
|
+
* Check if a string is a valid alias type
|
|
437
|
+
*/
|
|
438
|
+
declare function isValidAliasType(value: string): value is AliasType;
|
|
439
|
+
/**
|
|
440
|
+
* Get available alias types for a client type
|
|
441
|
+
*
|
|
442
|
+
* @param clientType - Client type: 'P' (Individual), 'C' (Merchant), 'B' (Business), 'G' (Government)
|
|
443
|
+
* @returns Array of available alias types for the client type
|
|
444
|
+
*/
|
|
445
|
+
declare function getAvailableAliasTypes(clientType: 'P' | 'C' | 'B' | 'G'): AliasType[];
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Aliases service wrapper
|
|
449
|
+
*
|
|
450
|
+
* Provides methods for managing account aliases.
|
|
451
|
+
*
|
|
452
|
+
* @example
|
|
453
|
+
* ```typescript
|
|
454
|
+
* // Create a SHID alias (available for all client types)
|
|
455
|
+
* const alias = await sdk.alias.create({
|
|
456
|
+
* compte: 'CIC2344256727788288822',
|
|
457
|
+
* type: AliasType.SHID
|
|
458
|
+
* });
|
|
459
|
+
* // Returns: { cle: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', type: 'SHID', ... }
|
|
460
|
+
*
|
|
461
|
+
* // Create an MCOD alias (business clients only)
|
|
462
|
+
* const merchantAlias = await sdk.alias.create({
|
|
463
|
+
* compte: 'SNC2344256727788288822',
|
|
464
|
+
* type: AliasType.MCOD
|
|
465
|
+
* });
|
|
466
|
+
* // Returns: { cle: 'SNF00_2E4TY', type: 'MCOD', ... }
|
|
467
|
+
* ```
|
|
468
|
+
*/
|
|
469
|
+
|
|
470
|
+
declare class AliasService$1 extends BaseService {
|
|
471
|
+
/**
|
|
472
|
+
* Create an account alias
|
|
473
|
+
*
|
|
474
|
+
* **Alias Types:**
|
|
475
|
+
* - `SHID`: System-generated unique payment address (UUID format, 36 chars). Available for all client types (P, C, B, G)
|
|
476
|
+
* - `MCOD`: Merchant code for USSD payments. Available for business clients only (C, B, G)
|
|
477
|
+
* - `MBNO`: Mobile phone number. Available for individuals only (P)
|
|
478
|
+
*
|
|
479
|
+
* **Limits:**
|
|
480
|
+
* - Default: 20 aliases per account
|
|
481
|
+
* - Limit can be increased based on client needs
|
|
482
|
+
*
|
|
483
|
+
* @param alias - Alias creation data
|
|
484
|
+
* @param alias.compte - Account number (e.g., 'CIC2344256727788288822')
|
|
485
|
+
* @param alias.type - Alias type: 'SHID', 'MCOD', or 'MBNO'
|
|
486
|
+
* @returns Created alias with generated `cle` (key) value
|
|
487
|
+
* @throws {PiSpiError} If account not found or limit exceeded
|
|
488
|
+
*
|
|
489
|
+
* @example
|
|
490
|
+
* ```typescript
|
|
491
|
+
* // For business clients (C, B, G)
|
|
492
|
+
* await sdk.alias.create({
|
|
493
|
+
* compte: 'SNC2344256727788288822',
|
|
494
|
+
* type: AliasType.SHID
|
|
495
|
+
* });
|
|
496
|
+
* ```
|
|
497
|
+
*/
|
|
498
|
+
create(alias: {
|
|
499
|
+
compte: string;
|
|
500
|
+
type: AliasType;
|
|
501
|
+
}): Promise<{
|
|
502
|
+
cle?: string;
|
|
503
|
+
type?: string;
|
|
504
|
+
compte?: string;
|
|
505
|
+
}>;
|
|
506
|
+
/**
|
|
507
|
+
* List aliases for an account
|
|
508
|
+
*
|
|
509
|
+
* @param compte - Account number
|
|
510
|
+
* @param params - Query parameters for pagination
|
|
511
|
+
* @returns Paginated list of aliases
|
|
512
|
+
*/
|
|
513
|
+
list(compte: string, params?: QueryParams): Promise<unknown>;
|
|
514
|
+
/**
|
|
515
|
+
* Delete an alias
|
|
516
|
+
*
|
|
517
|
+
* @param alias - Alias identifier
|
|
518
|
+
*/
|
|
519
|
+
delete(alias: string, compte?: string): Promise<unknown>;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Webhooks (Notifications) service wrapper
|
|
524
|
+
*
|
|
525
|
+
* Provides methods for managing webhook configurations to receive real-time notifications
|
|
526
|
+
* about payment events, payment requests, and fund returns.
|
|
527
|
+
*
|
|
528
|
+
* **Supported Events:**
|
|
529
|
+
* - Payment events: `PAIEMENT_RECU`, `PAIEMENT_ENVOYE`, `PAIEMENT_REJETE`
|
|
530
|
+
* - Payment request events: `RTP_RECU`, `RTP_REJETE`
|
|
531
|
+
* - Fund return events: `RETOUR_ENVOYE`, `RETOUR_REJETE`, `RETOUR_RECU`
|
|
532
|
+
* - Cancellation events: `ANNULATION_DEMANDE`, `ANNULATION_REJETE`
|
|
533
|
+
*
|
|
534
|
+
* **Webhook Security:**
|
|
535
|
+
* - All communications must use SSL/TLS
|
|
536
|
+
* - mTLS authentication required (certificate from BCEAO CA)
|
|
537
|
+
* - Events are signed with HMAC for data integrity
|
|
538
|
+
*
|
|
539
|
+
* @example
|
|
540
|
+
* ```typescript
|
|
541
|
+
* // Create webhook for payment notifications
|
|
542
|
+
* const webhook = await sdk.webhooks.create({
|
|
543
|
+
* callbackUrl: 'https://business.example.com/api/webhooks/pi-spi',
|
|
544
|
+
* events: ['PAIEMENT_RECU', 'PAIEMENT_ENVOYE']
|
|
545
|
+
* });
|
|
546
|
+
* ```
|
|
547
|
+
*/
|
|
548
|
+
|
|
549
|
+
declare class WebhooksService extends BaseService {
|
|
550
|
+
/**
|
|
551
|
+
* Create a webhook configuration
|
|
552
|
+
*
|
|
553
|
+
* **Webhook Setup:**
|
|
554
|
+
* - URL must be HTTPS
|
|
555
|
+
* - Server must support mTLS with BCEAO-issued certificate
|
|
556
|
+
* - Server must validate HMAC signatures
|
|
557
|
+
* - Server must respond with 2xx status code
|
|
558
|
+
*
|
|
559
|
+
* **Event Types:**
|
|
560
|
+
* - `PAIEMENT_RECU`: Payment received
|
|
561
|
+
* - `PAIEMENT_ENVOYE`: Payment sent (irreversible)
|
|
562
|
+
* - `PAIEMENT_REJETE`: Payment rejected
|
|
563
|
+
* - `RTP_RECU`: Payment request received
|
|
564
|
+
* - `RTP_REJETE`: Payment request rejected
|
|
565
|
+
* - `RETOUR_ENVOYE`: Fund return sent
|
|
566
|
+
* - `RETOUR_REJETE`: Fund return rejected
|
|
567
|
+
* - `RETOUR_RECU`: Fund return received
|
|
568
|
+
* - `ANNULATION_DEMANDE`: Cancellation request received
|
|
569
|
+
* - `ANNULATION_REJETE`: Cancellation request rejected
|
|
570
|
+
*
|
|
571
|
+
* @param webhook - Webhook configuration
|
|
572
|
+
* @param webhook.callbackUrl - HTTPS URL to receive notifications (must support mTLS)
|
|
573
|
+
* @param webhook.events - Array of event types to subscribe to
|
|
574
|
+
* @param webhook.alias - Optional: Alias-specific webhook (only notifications for this alias)
|
|
575
|
+
* @returns Created webhook configuration
|
|
576
|
+
* @throws {PiSpiValidationError} If URL is invalid or events array is empty
|
|
577
|
+
*
|
|
578
|
+
* @example
|
|
579
|
+
* ```typescript
|
|
580
|
+
* // Webhook for all payment events
|
|
581
|
+
* await sdk.webhooks.create({
|
|
582
|
+
* callbackUrl: 'https://business.example.com/api/webhooks/pi-spi',
|
|
583
|
+
* events: ['PAIEMENT_RECU', 'PAIEMENT_ENVOYE', 'PAIEMENT_REJETE']
|
|
584
|
+
* });
|
|
585
|
+
*
|
|
586
|
+
* // Alias-specific webhook
|
|
587
|
+
* await sdk.webhooks.create({
|
|
588
|
+
* callbackUrl: 'https://business.example.com/api/webhooks/pi-spi',
|
|
589
|
+
* events: ['PAIEMENT_RECU'],
|
|
590
|
+
* alias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f'
|
|
591
|
+
* });
|
|
592
|
+
* ```
|
|
593
|
+
*/
|
|
594
|
+
create(webhook: {
|
|
595
|
+
callbackUrl: string;
|
|
596
|
+
events: string[];
|
|
597
|
+
alias?: string;
|
|
598
|
+
}): Promise<{
|
|
599
|
+
id?: string;
|
|
600
|
+
callbackUrl?: string;
|
|
601
|
+
events?: string[];
|
|
602
|
+
}>;
|
|
603
|
+
/**
|
|
604
|
+
* List all configured webhooks
|
|
605
|
+
*
|
|
606
|
+
* @param params - Query parameters for pagination
|
|
607
|
+
* @returns Paginated list of webhooks
|
|
608
|
+
*
|
|
609
|
+
* @example
|
|
610
|
+
* ```typescript
|
|
611
|
+
* const webhooks = await sdk.webhooks.list({ page: 1, size: 20 });
|
|
612
|
+
* ```
|
|
613
|
+
*/
|
|
614
|
+
list(params?: QueryParams): Promise<unknown>;
|
|
615
|
+
/**
|
|
616
|
+
* Get webhook details by ID
|
|
617
|
+
*
|
|
618
|
+
* @param id - Webhook ID
|
|
619
|
+
* @returns Webhook details
|
|
620
|
+
* @throws {PiSpiNotFoundError} If webhook not found
|
|
621
|
+
*/
|
|
622
|
+
get(id: string): Promise<unknown>;
|
|
623
|
+
/**
|
|
624
|
+
* Update webhook configuration
|
|
625
|
+
*
|
|
626
|
+
* @param id - Webhook ID
|
|
627
|
+
* @param webhook - Updated webhook configuration
|
|
628
|
+
* @param webhook.callbackUrl - New callback URL (optional)
|
|
629
|
+
* @param webhook.events - New event subscriptions (optional)
|
|
630
|
+
* @param webhook.alias - New alias filter (optional)
|
|
631
|
+
* @returns Updated webhook configuration
|
|
632
|
+
* @throws {PiSpiNotFoundError} If webhook not found
|
|
633
|
+
* @throws {PiSpiValidationError} If update fails validation
|
|
634
|
+
*
|
|
635
|
+
* @example
|
|
636
|
+
* ```typescript
|
|
637
|
+
* await sdk.webhooks.update('webhook-001', {
|
|
638
|
+
* callbackUrl: 'https://updated-url.com/webhooks/pi-spi',
|
|
639
|
+
* events: ['PAIEMENT_RECU', 'RTP_RECU']
|
|
640
|
+
* });
|
|
641
|
+
* ```
|
|
642
|
+
*/
|
|
643
|
+
update(id: string, webhook: {
|
|
644
|
+
callbackUrl?: string;
|
|
645
|
+
events?: string[];
|
|
646
|
+
alias?: string;
|
|
647
|
+
}): Promise<unknown>;
|
|
648
|
+
/**
|
|
649
|
+
* Delete a webhook configuration
|
|
650
|
+
*
|
|
651
|
+
* @param id - Webhook ID
|
|
652
|
+
* @throws {PiSpiNotFoundError} If webhook not found
|
|
653
|
+
*/
|
|
654
|
+
delete(id: string): Promise<unknown>;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* Payment Requests (Demandes de Paiement) service wrapper
|
|
659
|
+
*
|
|
660
|
+
* Provides methods for creating and managing payment requests (bills, invoices, etc.).
|
|
661
|
+
*
|
|
662
|
+
* **Payment Request Types:**
|
|
663
|
+
* - **E-commerce** (`categorie: 521`): Online payment requests with 3-minute expiry
|
|
664
|
+
* - **Point of Sale** (`categorie: 500`): Physical store payment requests
|
|
665
|
+
* - **Invoice/Bill** (`categorie: 401`): Invoice payment requests with due dates
|
|
666
|
+
* - **PICO**: Purchase with cash withdrawal (combined purchase + cashback)
|
|
667
|
+
* - **PICASH**: Cash withdrawal only
|
|
668
|
+
*
|
|
669
|
+
* **Payment Request Flow:**
|
|
670
|
+
* 1. Business creates payment request
|
|
671
|
+
* 2. Customer receives request (via alias)
|
|
672
|
+
* 3. Customer can: Accept & Pay Now, Accept & Pay Later, Reject, or Ignore
|
|
673
|
+
* 4. If accepted, payment is processed automatically
|
|
674
|
+
*
|
|
675
|
+
* @example
|
|
676
|
+
* ```typescript
|
|
677
|
+
* // Create invoice payment request
|
|
678
|
+
* const request = await sdk.demandesPaiement.create({
|
|
679
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
680
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
681
|
+
* montant: 150000,
|
|
682
|
+
* categorie: '401',
|
|
683
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
684
|
+
* motif: 'Facture électricité mars 2023'
|
|
685
|
+
* });
|
|
686
|
+
* ```
|
|
687
|
+
*/
|
|
688
|
+
|
|
689
|
+
declare class DemandesPaiementService extends BaseService {
|
|
690
|
+
/**
|
|
691
|
+
* Create a payment request
|
|
692
|
+
*
|
|
693
|
+
* **Request Types:**
|
|
694
|
+
* - **E-commerce** (`categorie: 521`): Max 3 minutes validity
|
|
695
|
+
* - **POS** (`categorie: 500`): Max 24 hours validity
|
|
696
|
+
* - **Invoice** (`categorie: 401`): Custom due date (up to 90 days)
|
|
697
|
+
*
|
|
698
|
+
* **Confirmation Options:**
|
|
699
|
+
* - `confirmation: false`: Request sent immediately (default for POS)
|
|
700
|
+
* - `confirmation: true`: Returns payer info for verification before sending
|
|
701
|
+
*
|
|
702
|
+
* **Customer Actions:**
|
|
703
|
+
* - Accept & Pay Now: Payment processed immediately
|
|
704
|
+
* - Accept & Pay Later: Payment scheduled (if dateLimiteReponse > 24h)
|
|
705
|
+
* - Reject: Request rejected with reason
|
|
706
|
+
* - Ignore: Request expires after dateLimiteReponse
|
|
707
|
+
*
|
|
708
|
+
* @param request - Payment request creation data
|
|
709
|
+
* @param request.comptePaye - Business account number (payee)
|
|
710
|
+
* @param request.payeurAlias - Customer alias (payer)
|
|
711
|
+
* @param request.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
|
|
712
|
+
* @param request.categorie - Request category: '500' (POS), '521' (E-commerce), '401' (Invoice)
|
|
713
|
+
* @param request.motif - Payment reason/description
|
|
714
|
+
* @param request.txId - Unique transaction ID (optional)
|
|
715
|
+
* @param request.dateLimitePaiement - Payment due date (required for e-commerce and invoices)
|
|
716
|
+
* @param request.dateLimiteReponse - Response deadline (default: 90 days from creation)
|
|
717
|
+
* @param request.confirmation - Whether to require confirmation (default: false for POS, true for invoices)
|
|
718
|
+
* @param request.refDocType - Reference document type (e.g., 'CINV' for invoice)
|
|
719
|
+
* @param request.refDocNumero - Reference document number (e.g., invoice number)
|
|
720
|
+
* @returns Payment request response
|
|
721
|
+
* @throws {PiSpiValidationError} If request fails validation
|
|
722
|
+
*
|
|
723
|
+
* @example
|
|
724
|
+
* ```typescript
|
|
725
|
+
* // E-commerce payment request (3-minute expiry)
|
|
726
|
+
* await sdk.demandesPaiement.create({
|
|
727
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
728
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
729
|
+
* montant: 25000, // 250 XOF
|
|
730
|
+
* categorie: '521',
|
|
731
|
+
* dateLimitePaiement: '2023-02-21T15:37:00.000Z', // 3 minutes from now
|
|
732
|
+
* motif: 'Paiement du livre Manuel des écritures comptables'
|
|
733
|
+
* });
|
|
734
|
+
*
|
|
735
|
+
* // Invoice payment request
|
|
736
|
+
* await sdk.demandesPaiement.create({
|
|
737
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
738
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
739
|
+
* montant: 150000, // 1,500 XOF
|
|
740
|
+
* categorie: '401',
|
|
741
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
742
|
+
* motif: 'Facture électricité mars 2023',
|
|
743
|
+
* refDocType: 'CINV',
|
|
744
|
+
* refDocNumero: 'FACT-ELEC-202303',
|
|
745
|
+
* confirmation: true
|
|
746
|
+
* });
|
|
747
|
+
* ```
|
|
748
|
+
*/
|
|
749
|
+
create(request: {
|
|
750
|
+
comptePaye: string;
|
|
751
|
+
payeurAlias: string;
|
|
752
|
+
montant: number;
|
|
753
|
+
categorie: string;
|
|
754
|
+
motif: string;
|
|
755
|
+
txId?: string;
|
|
756
|
+
dateLimitePaiement?: string;
|
|
757
|
+
dateLimiteReponse?: string;
|
|
758
|
+
confirmation?: boolean;
|
|
759
|
+
refDocType?: string;
|
|
760
|
+
refDocNumero?: string;
|
|
761
|
+
}): Promise<{
|
|
762
|
+
statut?: string;
|
|
763
|
+
txId?: string;
|
|
764
|
+
dateLimiteReponse?: string;
|
|
765
|
+
}>;
|
|
766
|
+
/**
|
|
767
|
+
* List payment requests with filtering and pagination
|
|
768
|
+
*
|
|
769
|
+
* @param params - Query parameters for filtering and pagination
|
|
770
|
+
* @returns Paginated list of payment requests
|
|
771
|
+
*/
|
|
772
|
+
list(params?: QueryParams): Promise<unknown>;
|
|
773
|
+
/**
|
|
774
|
+
* Get payment request details
|
|
775
|
+
*
|
|
776
|
+
* @param id - Payment request transaction ID
|
|
777
|
+
* @returns Payment request details
|
|
778
|
+
* @throws {PiSpiNotFoundError} If request not found
|
|
779
|
+
*/
|
|
780
|
+
get(id: string): Promise<{
|
|
781
|
+
statut?: string;
|
|
782
|
+
txId?: string;
|
|
783
|
+
montant?: number;
|
|
784
|
+
dateEnvoi?: string;
|
|
785
|
+
dateIrrevocabilite?: string;
|
|
786
|
+
dateRejet?: string;
|
|
787
|
+
dateLimiteReponse?: string;
|
|
788
|
+
}>;
|
|
789
|
+
/**
|
|
790
|
+
* Accept a payment request
|
|
791
|
+
*
|
|
792
|
+
* **Note:** This is typically called by the customer's payment app, not the business.
|
|
793
|
+
* The business receives notification when customer accepts.
|
|
794
|
+
*
|
|
795
|
+
* @param id - Payment request transaction ID
|
|
796
|
+
* @param immediate - Whether to pay immediately (true) or schedule payment (false)
|
|
797
|
+
* @returns Payment confirmation response
|
|
798
|
+
*/
|
|
799
|
+
accept(id: string, immediate?: boolean): Promise<unknown>;
|
|
800
|
+
/**
|
|
801
|
+
* Reject a payment request
|
|
802
|
+
*
|
|
803
|
+
* **Note:** This is typically called by the customer's payment app, not the business.
|
|
804
|
+
* The business receives notification when customer rejects.
|
|
805
|
+
*
|
|
806
|
+
* @param id - Payment request transaction ID
|
|
807
|
+
* @param reason - Rejection reason code (optional)
|
|
808
|
+
* @returns Rejection confirmation response
|
|
809
|
+
*/
|
|
810
|
+
reject(id: string, reason?: string): Promise<unknown>;
|
|
811
|
+
/**
|
|
812
|
+
* Confirm sending a payment request created with confirmation: true
|
|
813
|
+
*/
|
|
814
|
+
confirm(txId: string, decision: boolean): Promise<unknown>;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
/**
|
|
818
|
+
* Bulk Payment Requests (Demandes de Paiement en Masse) service wrapper
|
|
819
|
+
*
|
|
820
|
+
* Provides methods for creating and managing bulk payment requests.
|
|
821
|
+
*/
|
|
822
|
+
|
|
823
|
+
declare class DemandesPaiementEnMasseService extends BaseService {
|
|
824
|
+
/**
|
|
825
|
+
* Create bulk payment requests
|
|
826
|
+
*/
|
|
827
|
+
create(request: {
|
|
828
|
+
comptePaye: string;
|
|
829
|
+
transactions: Array<{
|
|
830
|
+
txId: string;
|
|
831
|
+
payeurAlias: string;
|
|
832
|
+
montant: number;
|
|
833
|
+
motif: string;
|
|
834
|
+
categorie?: string;
|
|
835
|
+
dateLimitePaiement?: string;
|
|
836
|
+
refDocType?: string;
|
|
837
|
+
refDocNumero?: string;
|
|
838
|
+
}>;
|
|
839
|
+
confirmation?: boolean;
|
|
840
|
+
}): Promise<unknown>;
|
|
841
|
+
/**
|
|
842
|
+
* Get bulk payment request details and status
|
|
843
|
+
*/
|
|
844
|
+
get(instructionId: string): Promise<unknown>;
|
|
845
|
+
/**
|
|
846
|
+
* Confirm and send bulk payment requests
|
|
847
|
+
*/
|
|
848
|
+
confirm(instructionId: string): Promise<unknown>;
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Payments (Paiements) service wrapper
|
|
853
|
+
*
|
|
854
|
+
* Provides methods for creating and managing immediate payments.
|
|
855
|
+
*
|
|
856
|
+
* **Payment Types Supported:**
|
|
857
|
+
* - **Bank-to-Bank**: Payments between bank accounts via API (`categorie: 733`)
|
|
858
|
+
* - **Bank-to-Wallet**: Payments from bank accounts to mobile wallets
|
|
859
|
+
* - **Wallet-to-Wallet**: Payments between mobile wallets
|
|
860
|
+
* - **Wallet-to-Bank**: Payments from mobile wallets to bank accounts
|
|
861
|
+
*
|
|
862
|
+
* All payment types are interoperable across the UEMOA region (8 countries).
|
|
863
|
+
*
|
|
864
|
+
* @example
|
|
865
|
+
* ```typescript
|
|
866
|
+
* // Create immediate payment
|
|
867
|
+
* const payment = await sdk.paiements.create({
|
|
868
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
869
|
+
* payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
|
|
870
|
+
* montant: 150000, // 1,500 XOF
|
|
871
|
+
* motif: 'Paiement de services'
|
|
872
|
+
* });
|
|
873
|
+
* ```
|
|
874
|
+
*/
|
|
875
|
+
|
|
876
|
+
declare class PaiementsService extends BaseService {
|
|
877
|
+
/**
|
|
878
|
+
* Create an immediate payment
|
|
879
|
+
*
|
|
880
|
+
* **Payment Flow:**
|
|
881
|
+
* - If `confirmation: false`: Payment is sent immediately (default)
|
|
882
|
+
* - If `confirmation: true`: Payment is initiated, returns payee info for confirmation
|
|
883
|
+
*
|
|
884
|
+
* **Supported Transaction Types:**
|
|
885
|
+
* - Bank-to-Bank (`categorie: 733`)
|
|
886
|
+
* - Bank-to-Wallet (via alias lookup)
|
|
887
|
+
* - Wallet-to-Wallet (via alias lookup)
|
|
888
|
+
* - Wallet-to-Bank (via alias lookup)
|
|
889
|
+
*
|
|
890
|
+
* **Status Values:**
|
|
891
|
+
* - `INITIE`: Waiting for confirmation (if confirmation: true)
|
|
892
|
+
* - `ENVOYE`: Payment sent successfully
|
|
893
|
+
* - `IRREVOCABLE`: Payment confirmed and cannot be reversed
|
|
894
|
+
* - `REJETE`: Payment rejected (check `statutRaison` for error code)
|
|
895
|
+
*
|
|
896
|
+
* @param payment - Payment creation data
|
|
897
|
+
* @param payment.comptePayeur - Payer account number (e.g., 'CIC2344256727788288822')
|
|
898
|
+
* @param payment.payeAlias - Payee alias (SHID, MCOD, or MBNO format)
|
|
899
|
+
* @param payment.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
|
|
900
|
+
* @param payment.motif - Payment reason/description
|
|
901
|
+
* @param payment.txId - Unique transaction ID (optional, auto-generated if not provided)
|
|
902
|
+
* @param payment.confirmation - Whether to require confirmation before sending (default: false)
|
|
903
|
+
* @param payment.categorie - Payment category/canal (default: 733 for API Business)
|
|
904
|
+
* @returns Payment response with status
|
|
905
|
+
* @throws {PiSpiValidationError} If payment fails validation (e.g., invalid alias, duplicate txId)
|
|
906
|
+
* @throws {PiSpiError} If account blocked or insufficient funds
|
|
907
|
+
*
|
|
908
|
+
* @example
|
|
909
|
+
* ```typescript
|
|
910
|
+
* // Immediate payment (no confirmation)
|
|
911
|
+
* const payment = await sdk.paiements.create({
|
|
912
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
913
|
+
* payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', // SHID alias
|
|
914
|
+
* montant: 150000, // 1,500 XOF
|
|
915
|
+
* motif: 'Paiement de services',
|
|
916
|
+
* txId: '23552722'
|
|
917
|
+
* });
|
|
918
|
+
*
|
|
919
|
+
* // Payment with confirmation (returns payee info)
|
|
920
|
+
* const paymentWithConfirmation = await sdk.paiements.create({
|
|
921
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
922
|
+
* payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
|
|
923
|
+
* montant: 3000000, // 30,000 XOF
|
|
924
|
+
* confirmation: true
|
|
925
|
+
* });
|
|
926
|
+
* ```
|
|
927
|
+
*/
|
|
928
|
+
create(payment: {
|
|
929
|
+
comptePayeur?: string;
|
|
930
|
+
payeurAlias?: string;
|
|
931
|
+
payeAlias: string;
|
|
932
|
+
comptePaye?: string;
|
|
933
|
+
montant: number;
|
|
934
|
+
motif: string;
|
|
935
|
+
txId?: string;
|
|
936
|
+
confirmation?: boolean;
|
|
937
|
+
categorie?: string;
|
|
938
|
+
}): Promise<{
|
|
939
|
+
statut?: string;
|
|
940
|
+
txId?: string;
|
|
941
|
+
statutRaison?: string;
|
|
942
|
+
}>;
|
|
943
|
+
/**
|
|
944
|
+
* Get payment details by transaction ID
|
|
945
|
+
*
|
|
946
|
+
* @param txId - Transaction ID
|
|
947
|
+
* @returns Payment details including status and history
|
|
948
|
+
* @throws {PiSpiNotFoundError} If payment not found
|
|
949
|
+
*
|
|
950
|
+
* @example
|
|
951
|
+
* ```typescript
|
|
952
|
+
* const payment = await sdk.paiements.get('23552722');
|
|
953
|
+
* console.log('Status:', payment.statut); // 'IRREVOCABLE'
|
|
954
|
+
* console.log('Amount:', payment.montant); // 150000
|
|
955
|
+
* ```
|
|
956
|
+
*/
|
|
957
|
+
get(txId: string): Promise<{
|
|
958
|
+
statut?: string;
|
|
959
|
+
txId?: string;
|
|
960
|
+
montant?: number;
|
|
961
|
+
dateEnvoi?: string;
|
|
962
|
+
dateIrrevocabilite?: string;
|
|
963
|
+
dateRejet?: string;
|
|
964
|
+
}>;
|
|
965
|
+
/**
|
|
966
|
+
* List payments with filtering and pagination
|
|
967
|
+
*
|
|
968
|
+
* **Filter Options:**
|
|
969
|
+
* - Filter by account: `comptePayeur`
|
|
970
|
+
* - Filter by status: `statut` (INITIE, ENVOYE, IRREVOCABLE, REJETE)
|
|
971
|
+
* - Filter by dates: `dateEnvoi`, `dateIrrevocabilite`
|
|
972
|
+
* - Use QueryBuilder for advanced filtering
|
|
973
|
+
*
|
|
974
|
+
* @param params - Query parameters for filtering and pagination
|
|
975
|
+
* @returns Paginated list of payments
|
|
976
|
+
*
|
|
977
|
+
* @example
|
|
978
|
+
* ```typescript
|
|
979
|
+
* // List all payments for an account
|
|
980
|
+
* const payments = await sdk.paiements.list({
|
|
981
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
982
|
+
* page: 1,
|
|
983
|
+
* size: 20
|
|
984
|
+
* });
|
|
985
|
+
*
|
|
986
|
+
* // Filter by status
|
|
987
|
+
* const completed = await sdk.paiements.list({
|
|
988
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
989
|
+
* statut: 'IRREVOCABLE'
|
|
990
|
+
* });
|
|
991
|
+
* ```
|
|
992
|
+
*/
|
|
993
|
+
list(params?: QueryParams & {
|
|
994
|
+
comptePayeur?: string;
|
|
995
|
+
statut?: string;
|
|
996
|
+
}): Promise<unknown>;
|
|
997
|
+
/**
|
|
998
|
+
* Confirm a payment that was created with confirmation: true
|
|
999
|
+
*/
|
|
1000
|
+
confirm(txId: string, decision: boolean, body?: Record<string, unknown>): Promise<unknown>;
|
|
1001
|
+
/**
|
|
1002
|
+
* Verify payment status by end-to-end ID
|
|
1003
|
+
*/
|
|
1004
|
+
verifyStatus(end2endId: string): Promise<unknown>;
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* Bulk Payments (Paiements en Masse) service wrapper
|
|
1009
|
+
*
|
|
1010
|
+
* Provides methods for creating and managing bulk payment operations.
|
|
1011
|
+
*
|
|
1012
|
+
* **Bulk Payment Features:**
|
|
1013
|
+
* - Process multiple payments in a single request
|
|
1014
|
+
* - Linked by unique `instructionId`
|
|
1015
|
+
* - Can retry failed payments
|
|
1016
|
+
* - Supports up to 10,000 transactions per bulk (recommended: 500-5,000)
|
|
1017
|
+
*
|
|
1018
|
+
* **Transaction Size:**
|
|
1019
|
+
* - Max size per transaction: ~310 bytes
|
|
1020
|
+
* - Max bulk size: ~3.1 MB for 10,000 transactions
|
|
1021
|
+
* - Recommended: 500-5,000 transactions per bulk
|
|
1022
|
+
*
|
|
1023
|
+
* **Use Cases:**
|
|
1024
|
+
* - Salary payments
|
|
1025
|
+
* - Vendor payments
|
|
1026
|
+
* - Bulk disbursements
|
|
1027
|
+
* - Mass refunds
|
|
1028
|
+
*
|
|
1029
|
+
* @example
|
|
1030
|
+
* ```typescript
|
|
1031
|
+
* // Create bulk payment
|
|
1032
|
+
* const bulkPayment = await sdk.paiementsEnMasse.createBulk({
|
|
1033
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
1034
|
+
* instructionId: 'BULK-2023-001',
|
|
1035
|
+
* transactions: [
|
|
1036
|
+
* { txId: 'TX001', payeAlias: 'alias1', montant: 100000, motif: 'Salaire' },
|
|
1037
|
+
* { txId: 'TX002', payeAlias: 'alias2', montant: 150000, motif: 'Salaire' }
|
|
1038
|
+
* ]
|
|
1039
|
+
* });
|
|
1040
|
+
* ```
|
|
1041
|
+
*/
|
|
1042
|
+
|
|
1043
|
+
declare class PaiementsEnMasseService extends BaseService {
|
|
1044
|
+
/**
|
|
1045
|
+
* Create bulk payments
|
|
1046
|
+
*
|
|
1047
|
+
* **Bulk Processing:**
|
|
1048
|
+
* - All transactions share the same `instructionId`
|
|
1049
|
+
* - Each transaction needs unique `txId`
|
|
1050
|
+
* - Transactions are processed in parallel
|
|
1051
|
+
* - Failed transactions can be retried
|
|
1052
|
+
*
|
|
1053
|
+
* **Performance Considerations:**
|
|
1054
|
+
* - Larger bulks take longer to process
|
|
1055
|
+
* - May hit HTTP timeout for very large bulks
|
|
1056
|
+
* - Recommended: 500-5,000 transactions per bulk
|
|
1057
|
+
* - For >10,000 transactions, split into multiple bulks
|
|
1058
|
+
*
|
|
1059
|
+
* **Response Status:**
|
|
1060
|
+
* - `INITIE`: Bulk created, awaiting confirmation
|
|
1061
|
+
* - `ENVOYE`: Bulk sent, transactions processing
|
|
1062
|
+
* - `IRREVOCABLE`: All transactions completed
|
|
1063
|
+
* - `PARTIEL`: Some transactions succeeded, some failed
|
|
1064
|
+
* - `REJETE`: Bulk rejected (validation failed)
|
|
1065
|
+
*
|
|
1066
|
+
* @param payment - Bulk payment creation data
|
|
1067
|
+
* @param payment.comptePayeur - Payer account number
|
|
1068
|
+
* @param payment.instructionId - Unique bulk instruction ID
|
|
1069
|
+
* @param payment.transactions - Array of payment transactions
|
|
1070
|
+
* @param payment.transactions[].txId - Unique transaction ID (must be unique within bulk)
|
|
1071
|
+
* @param payment.transactions[].payeAlias - Payee alias (SHID, MCOD, or MBNO)
|
|
1072
|
+
* @param payment.transactions[].montant - Amount in centimes
|
|
1073
|
+
* @param payment.transactions[].motif - Payment reason/description
|
|
1074
|
+
* @param payment.transactions[].refDocType - Reference document type (optional)
|
|
1075
|
+
* @param payment.transactions[].refDocNumero - Reference document number (optional)
|
|
1076
|
+
* @returns Bulk payment response with status and summary
|
|
1077
|
+
* @throws {PiSpiValidationError} If bulk fails validation (e.g., duplicate txId, invalid alias)
|
|
1078
|
+
* @throws {PiSpiError} If account blocked or insufficient funds
|
|
1079
|
+
*
|
|
1080
|
+
* @example
|
|
1081
|
+
* ```typescript
|
|
1082
|
+
* // Create bulk payment for salary disbursement
|
|
1083
|
+
* await sdk.paiementsEnMasse.createBulk({
|
|
1084
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
1085
|
+
* instructionId: 'SALARY-2023-03',
|
|
1086
|
+
* transactions: [
|
|
1087
|
+
* {
|
|
1088
|
+
* txId: 'SAL-001',
|
|
1089
|
+
* payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
|
|
1090
|
+
* montant: 500000, // 5,000 XOF
|
|
1091
|
+
* motif: 'Salaire mars 2023'
|
|
1092
|
+
* },
|
|
1093
|
+
* {
|
|
1094
|
+
* txId: 'SAL-002',
|
|
1095
|
+
* payeAlias: '4r5ty499-3e50-435b-b757-ac7a83d67juio',
|
|
1096
|
+
* montant: 750000, // 7,500 XOF
|
|
1097
|
+
* motif: 'Salaire mars 2023'
|
|
1098
|
+
* }
|
|
1099
|
+
* ]
|
|
1100
|
+
* });
|
|
1101
|
+
* ```
|
|
1102
|
+
*/
|
|
1103
|
+
createBulk(payment: {
|
|
1104
|
+
comptePayeur: string;
|
|
1105
|
+
instructionId: string;
|
|
1106
|
+
transactions: Array<{
|
|
1107
|
+
txId: string;
|
|
1108
|
+
payeAlias: string;
|
|
1109
|
+
montant: number;
|
|
1110
|
+
motif: string;
|
|
1111
|
+
refDocType?: string;
|
|
1112
|
+
refDocNumero?: string;
|
|
1113
|
+
}>;
|
|
1114
|
+
confirmation?: boolean;
|
|
1115
|
+
}): Promise<unknown>;
|
|
1116
|
+
/**
|
|
1117
|
+
* Get bulk payment details and status
|
|
1118
|
+
*
|
|
1119
|
+
* **Response Includes:**
|
|
1120
|
+
* - Overall bulk status
|
|
1121
|
+
* - Transaction counts (total, succeeded, failed)
|
|
1122
|
+
* - Individual transaction statuses
|
|
1123
|
+
* - Failed transaction details
|
|
1124
|
+
*
|
|
1125
|
+
* @param instructionId - Bulk instruction ID
|
|
1126
|
+
* @returns Bulk payment details with transaction statuses
|
|
1127
|
+
* @throws {PiSpiNotFoundError} If bulk payment not found
|
|
1128
|
+
*
|
|
1129
|
+
* @example
|
|
1130
|
+
* ```typescript
|
|
1131
|
+
* const bulk = await sdk.paiementsEnMasse.get('SALARY-2023-03');
|
|
1132
|
+
* console.log('Status:', bulk.statut); // 'IRREVOCABLE'
|
|
1133
|
+
* console.log('Succeeded:', bulk.nombreSuccess); // 98
|
|
1134
|
+
* console.log('Failed:', bulk.nombreEchec); // 2
|
|
1135
|
+
* ```
|
|
1136
|
+
*/
|
|
1137
|
+
get(instructionId: string): Promise<unknown>;
|
|
1138
|
+
/**
|
|
1139
|
+
* Confirm or retry a bulk payment
|
|
1140
|
+
*/
|
|
1141
|
+
confirm(instructionId: string, decision?: boolean): Promise<unknown>;
|
|
1142
|
+
/**
|
|
1143
|
+
* Retry failed payments in a bulk payment
|
|
1144
|
+
*
|
|
1145
|
+
* **Retry Process:**
|
|
1146
|
+
* - Only failed transactions are retried
|
|
1147
|
+
* - Successful transactions are not affected
|
|
1148
|
+
* - Uses same `instructionId`
|
|
1149
|
+
* - Can retry multiple times if needed
|
|
1150
|
+
*
|
|
1151
|
+
* @param instructionId - Bulk instruction ID
|
|
1152
|
+
* @returns Retry response with updated status
|
|
1153
|
+
* @throws {PiSpiNotFoundError} If bulk payment not found
|
|
1154
|
+
* @throws {PiSpiError} If no failed transactions to retry
|
|
1155
|
+
*
|
|
1156
|
+
* @example
|
|
1157
|
+
* ```typescript
|
|
1158
|
+
* // Retry failed transactions
|
|
1159
|
+
* await sdk.paiementsEnMasse.retry('SALARY-2023-03');
|
|
1160
|
+
* ```
|
|
1161
|
+
*/
|
|
1162
|
+
retry(instructionId: string): Promise<unknown>;
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
/**
|
|
1166
|
+
* Fund Returns (Retours de Fonds) service wrapper
|
|
1167
|
+
*
|
|
1168
|
+
* Provides methods for returning funds from received payments.
|
|
1169
|
+
*
|
|
1170
|
+
* **Return Rules:**
|
|
1171
|
+
* - Can only return funds from payments received
|
|
1172
|
+
* - Must be initiated within 90 days of original payment
|
|
1173
|
+
* - After 90 days, returns are no longer possible
|
|
1174
|
+
* - Returns are processed instantly when sent
|
|
1175
|
+
*
|
|
1176
|
+
* **Use Cases:**
|
|
1177
|
+
* - Refunds for returned goods
|
|
1178
|
+
* - Cancellation of services
|
|
1179
|
+
* - Error corrections
|
|
1180
|
+
* - Customer disputes
|
|
1181
|
+
*
|
|
1182
|
+
* @example
|
|
1183
|
+
* ```typescript
|
|
1184
|
+
* // Return funds from a received payment
|
|
1185
|
+
* const returnFunds = await sdk.retoursFonds.create({
|
|
1186
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
1187
|
+
* txId: '23552722', // Original payment transaction ID
|
|
1188
|
+
* montant: 150000, // Amount to return (1,500 XOF)
|
|
1189
|
+
* motif: 'CUST' // Customer request reason code
|
|
1190
|
+
* });
|
|
1191
|
+
* ```
|
|
1192
|
+
*/
|
|
1193
|
+
|
|
1194
|
+
declare class RetoursFondsService extends BaseService {
|
|
1195
|
+
/**
|
|
1196
|
+
* Create a fund return
|
|
1197
|
+
*
|
|
1198
|
+
* **Return Process:**
|
|
1199
|
+
* 1. Business identifies original payment transaction
|
|
1200
|
+
* 2. Creates return request (must be within 90 days)
|
|
1201
|
+
* 3. Return is processed immediately
|
|
1202
|
+
* 4. Funds are returned to original payer
|
|
1203
|
+
*
|
|
1204
|
+
* **Status Values:**
|
|
1205
|
+
* - `ENVOYE`: Return sent successfully
|
|
1206
|
+
* - `IRREVOCABLE`: Return confirmed and cannot be reversed
|
|
1207
|
+
* - `REJETE`: Return rejected (check `statutRaison` for error code)
|
|
1208
|
+
*
|
|
1209
|
+
* **Rejection Reasons:**
|
|
1210
|
+
* - `AM04`: Insufficient guarantee funds
|
|
1211
|
+
* - `AM09`: Wrong amount
|
|
1212
|
+
* - `AC06`: Blocked account
|
|
1213
|
+
* - `FR01`: Fraud suspicion
|
|
1214
|
+
* - `RR04`: Regulatory reason
|
|
1215
|
+
*
|
|
1216
|
+
* @param returnRequest - Fund return request data
|
|
1217
|
+
* @param returnRequest.comptePaye - Business account number (original payee)
|
|
1218
|
+
* @param returnRequest.txId - Original payment transaction ID
|
|
1219
|
+
* @param returnRequest.montant - Amount to return in centimes (e.g., 150000 = 1,500 XOF)
|
|
1220
|
+
* @param returnRequest.motif - Return reason code (e.g., 'CUST' for customer request)
|
|
1221
|
+
* @returns Fund return response
|
|
1222
|
+
* @throws {PiSpiValidationError} If return fails validation (e.g., > 90 days, invalid txId)
|
|
1223
|
+
* @throws {PiSpiError} If account blocked or insufficient funds
|
|
1224
|
+
*
|
|
1225
|
+
* @example
|
|
1226
|
+
* ```typescript
|
|
1227
|
+
* // Return full payment amount
|
|
1228
|
+
* await sdk.retoursFonds.create({
|
|
1229
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
1230
|
+
* txId: '23552722', // Original payment ID
|
|
1231
|
+
* montant: 150000, // 1,500 XOF
|
|
1232
|
+
* motif: 'CUST' // Customer request
|
|
1233
|
+
* });
|
|
1234
|
+
* ```
|
|
1235
|
+
*/
|
|
1236
|
+
create(returnRequest: {
|
|
1237
|
+
comptePaye?: string;
|
|
1238
|
+
txId?: string;
|
|
1239
|
+
end2endId?: string;
|
|
1240
|
+
montant?: number;
|
|
1241
|
+
motif?: string;
|
|
1242
|
+
}): Promise<unknown>;
|
|
1243
|
+
/**
|
|
1244
|
+
* Get fund return details by end-to-end ID
|
|
1245
|
+
*/
|
|
1246
|
+
get(end2endId: string): Promise<unknown>;
|
|
1247
|
+
/**
|
|
1248
|
+
* List payments with fund return status filter
|
|
1249
|
+
*/
|
|
1250
|
+
list(params?: QueryParams & {
|
|
1251
|
+
retourStatut?: string;
|
|
1252
|
+
}): Promise<unknown>;
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
/**
|
|
1256
|
+
* Cancellation Requests (Demandes d'Annulation) service wrapper
|
|
1257
|
+
*
|
|
1258
|
+
* Provides methods for requesting cancellation of sent payments.
|
|
1259
|
+
*
|
|
1260
|
+
* **Cancellation Rules:**
|
|
1261
|
+
* - Can only request cancellation of payments sent by the business
|
|
1262
|
+
* - Must be requested within 90 days of original payment
|
|
1263
|
+
* - Payee must accept the cancellation for funds to be returned
|
|
1264
|
+
* - Payee can reject the cancellation request
|
|
1265
|
+
* - Multiple cancellation requests can be sent for the same payment
|
|
1266
|
+
*
|
|
1267
|
+
* **Cancellation Flow:**
|
|
1268
|
+
* 1. Business requests cancellation of a sent payment
|
|
1269
|
+
* 2. Payee receives cancellation request
|
|
1270
|
+
* 3. Payee can accept (triggers fund return) or reject
|
|
1271
|
+
* 4. Business receives notification of payee's decision
|
|
1272
|
+
*
|
|
1273
|
+
* **Use Cases:**
|
|
1274
|
+
* - Payment sent to wrong recipient
|
|
1275
|
+
* - Duplicate payment
|
|
1276
|
+
* - Service cancellation
|
|
1277
|
+
* - Agreement cancellation
|
|
1278
|
+
*
|
|
1279
|
+
* @example
|
|
1280
|
+
* ```typescript
|
|
1281
|
+
* // Request cancellation of a sent payment
|
|
1282
|
+
* const cancellation = await sdk.demandesAnnulation.create({
|
|
1283
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
1284
|
+
* txId: '23552722', // Original payment transaction ID
|
|
1285
|
+
* motif: 'CUST' // Cancellation reason code
|
|
1286
|
+
* });
|
|
1287
|
+
* ```
|
|
1288
|
+
*/
|
|
1289
|
+
|
|
1290
|
+
declare class DemandesAnnulationService extends BaseService {
|
|
1291
|
+
/**
|
|
1292
|
+
* Create a cancellation request
|
|
1293
|
+
*
|
|
1294
|
+
* **Cancellation Process:**
|
|
1295
|
+
* 1. Business identifies payment to cancel
|
|
1296
|
+
* 2. Creates cancellation request (must be within 90 days)
|
|
1297
|
+
* 3. Payee receives cancellation request
|
|
1298
|
+
* 4. Payee accepts or rejects
|
|
1299
|
+
* 5. If accepted, funds are returned via fund return mechanism
|
|
1300
|
+
*
|
|
1301
|
+
* **Status Values:**
|
|
1302
|
+
* - `INITIE`: Cancellation request sent, awaiting payee response
|
|
1303
|
+
* - `ACCEPTE`: Payee accepted cancellation (funds returned)
|
|
1304
|
+
* - `REJETE`: Payee rejected cancellation request
|
|
1305
|
+
*
|
|
1306
|
+
* **Rejection Reasons:**
|
|
1307
|
+
* - `CUST`: Customer rejection (payee refuses cancellation)
|
|
1308
|
+
* - `AM09`: Wrong amount
|
|
1309
|
+
* - `AC06`: Blocked account
|
|
1310
|
+
* - `FR01`: Fraud suspicion
|
|
1311
|
+
*
|
|
1312
|
+
* @param request - Cancellation request data
|
|
1313
|
+
* @param request.comptePayeur - Business account number (original payer)
|
|
1314
|
+
* @param request.txId - Original payment transaction ID to cancel
|
|
1315
|
+
* @param request.motif - Cancellation reason code (e.g., 'CUST' for customer request)
|
|
1316
|
+
* @returns Cancellation request response
|
|
1317
|
+
* @throws {PiSpiValidationError} If cancellation fails validation (e.g., > 90 days, invalid txId)
|
|
1318
|
+
* @throws {PiSpiNotFoundError} If payment not found
|
|
1319
|
+
*
|
|
1320
|
+
* @example
|
|
1321
|
+
* ```typescript
|
|
1322
|
+
* // Request cancellation
|
|
1323
|
+
* await sdk.demandesAnnulation.create({
|
|
1324
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
1325
|
+
* txId: '23552722', // Payment to cancel
|
|
1326
|
+
* motif: 'CUST' // Customer request
|
|
1327
|
+
* });
|
|
1328
|
+
* ```
|
|
1329
|
+
*/
|
|
1330
|
+
create(request: {
|
|
1331
|
+
comptePayeur?: string;
|
|
1332
|
+
txId?: string;
|
|
1333
|
+
end2endId?: string;
|
|
1334
|
+
motif: string;
|
|
1335
|
+
}): Promise<unknown>;
|
|
1336
|
+
/**
|
|
1337
|
+
* Get cancellation request details by end-to-end ID
|
|
1338
|
+
*/
|
|
1339
|
+
get(end2endId: string): Promise<unknown>;
|
|
1340
|
+
/**
|
|
1341
|
+
* List payments with cancellation status filter
|
|
1342
|
+
*/
|
|
1343
|
+
list(params?: QueryParams & {
|
|
1344
|
+
annulationStatut?: string;
|
|
1345
|
+
}): Promise<unknown>;
|
|
1346
|
+
/**
|
|
1347
|
+
* Respond to a cancellation request (accept or reject)
|
|
1348
|
+
*/
|
|
1349
|
+
respond(end2endId: string, decision: boolean): Promise<unknown>;
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
declare class PiSpiSDK {
|
|
1353
|
+
/**
|
|
1354
|
+
* Accounts service
|
|
1355
|
+
* Handles account-related operations: balance, operations, transfers
|
|
1356
|
+
*/
|
|
1357
|
+
readonly comptes: ComptesService$1;
|
|
1358
|
+
/**
|
|
1359
|
+
* Aliases service
|
|
1360
|
+
* Handles account alias management
|
|
1361
|
+
*/
|
|
1362
|
+
readonly alias: AliasService$1;
|
|
1363
|
+
/**
|
|
1364
|
+
* Webhooks service
|
|
1365
|
+
* Handles webhook configuration and management
|
|
1366
|
+
*/
|
|
1367
|
+
readonly webhooks: WebhooksService;
|
|
1368
|
+
/**
|
|
1369
|
+
* Payment requests service
|
|
1370
|
+
* Handles payment request creation and management
|
|
1371
|
+
*/
|
|
1372
|
+
readonly demandesPaiement: DemandesPaiementService;
|
|
1373
|
+
/**
|
|
1374
|
+
* Bulk payment requests service
|
|
1375
|
+
* Handles bulk payment request operations
|
|
1376
|
+
*/
|
|
1377
|
+
readonly demandesPaiementEnMasse: DemandesPaiementEnMasseService;
|
|
1378
|
+
/**
|
|
1379
|
+
* Payments service
|
|
1380
|
+
* Handles immediate payment operations
|
|
1381
|
+
*/
|
|
1382
|
+
readonly paiements: PaiementsService;
|
|
1383
|
+
/**
|
|
1384
|
+
* Bulk payments service
|
|
1385
|
+
* Handles bulk payment operations
|
|
1386
|
+
*/
|
|
1387
|
+
readonly paiementsEnMasse: PaiementsEnMasseService;
|
|
1388
|
+
/**
|
|
1389
|
+
* Fund returns service
|
|
1390
|
+
* Handles fund return operations
|
|
1391
|
+
*/
|
|
1392
|
+
readonly retoursFonds: RetoursFondsService;
|
|
1393
|
+
/**
|
|
1394
|
+
* Cancellation requests service
|
|
1395
|
+
* Handles payment cancellation requests
|
|
1396
|
+
*/
|
|
1397
|
+
readonly demandesAnnulation: DemandesAnnulationService;
|
|
1398
|
+
/**
|
|
1399
|
+
* QR Code utilities
|
|
1400
|
+
* Generate and validate BCEAO compatible QR codes
|
|
1401
|
+
*/
|
|
1402
|
+
readonly qr: {
|
|
1403
|
+
createQrPayload: typeof createQrPayload;
|
|
1404
|
+
buildPayloadString: typeof buildPayloadString;
|
|
1405
|
+
computeCrc16: typeof computeCrc16;
|
|
1406
|
+
generateQrCodeSvg: typeof generateQrCodeSvg;
|
|
1407
|
+
isValidPispiQrPayload: typeof isValidPispiQrPayload;
|
|
1408
|
+
payload: typeof buildPayloadString;
|
|
1409
|
+
svg: typeof generateQrCodeSvg;
|
|
1410
|
+
validate: typeof isValidPispiQrPayload;
|
|
1411
|
+
raw: typeof createQrPayload;
|
|
1412
|
+
};
|
|
1413
|
+
private _config;
|
|
1414
|
+
/**
|
|
1415
|
+
* Initialize the PI-SPI SDK
|
|
1416
|
+
*
|
|
1417
|
+
* @param config - SDK configuration
|
|
1418
|
+
*
|
|
1419
|
+
* @example
|
|
1420
|
+
* ```typescript
|
|
1421
|
+
* const sdk = new PiSpiSDK({
|
|
1422
|
+
* baseUrl: 'https://sandbox.api.pi-bceao.com/piz/v1',
|
|
1423
|
+
* accessToken: 'your-oauth2-token',
|
|
1424
|
+
* });
|
|
1425
|
+
* ```
|
|
1426
|
+
*/
|
|
1427
|
+
constructor(config: PiSpiConfig);
|
|
1428
|
+
/**
|
|
1429
|
+
* Update the access token
|
|
1430
|
+
* Useful when tokens are refreshed
|
|
1431
|
+
*/
|
|
1432
|
+
setAccessToken(token: string): void;
|
|
1433
|
+
/**
|
|
1434
|
+
* Get the current base URL
|
|
1435
|
+
*/
|
|
1436
|
+
getBaseUrl(): string;
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
type LomiCustomerAliasType = 'SHID' | 'MBNO' | 'MCOD';
|
|
1440
|
+
type LomiCustomerQr = {
|
|
1441
|
+
t: 'lomi.cust';
|
|
1442
|
+
v: 1;
|
|
1443
|
+
alias: string;
|
|
1444
|
+
aliasType: LomiCustomerAliasType;
|
|
1445
|
+
};
|
|
1446
|
+
declare function buildLomiCustomerQr(input: {
|
|
1447
|
+
alias: string;
|
|
1448
|
+
aliasType?: LomiCustomerAliasType;
|
|
1449
|
+
}): LomiCustomerQr;
|
|
1450
|
+
declare function serializeLomiCustomerQr(qr: LomiCustomerQr): string;
|
|
1451
|
+
declare function parseLomiCustomerQr(raw: string): LomiCustomerQr | null;
|
|
1452
|
+
|
|
1453
|
+
/**
|
|
1454
|
+
* Custom error classes for PI-SPI SDK
|
|
1455
|
+
*/
|
|
1456
|
+
declare class PiSpiError extends Error {
|
|
1457
|
+
readonly statusCode: number;
|
|
1458
|
+
readonly statusText: string;
|
|
1459
|
+
readonly type?: string;
|
|
1460
|
+
readonly detail?: string;
|
|
1461
|
+
readonly instance?: string;
|
|
1462
|
+
constructor(message: string, statusCode: number, statusText: string, type?: string, detail?: string, instance?: string);
|
|
1463
|
+
}
|
|
1464
|
+
declare class PiSpiValidationError extends PiSpiError {
|
|
1465
|
+
readonly errors?: Record<string, string[]>;
|
|
1466
|
+
constructor(message: string, statusCode: number, statusText: string, errors?: Record<string, string[]>, type?: string, detail?: string);
|
|
1467
|
+
}
|
|
1468
|
+
declare class PiSpiAuthError extends PiSpiError {
|
|
1469
|
+
constructor(message: string, statusCode: number, statusText: string);
|
|
1470
|
+
}
|
|
1471
|
+
declare class PiSpiNotFoundError extends PiSpiError {
|
|
1472
|
+
constructor(message: string, statusCode: number, statusText: string);
|
|
1473
|
+
}
|
|
1474
|
+
declare class PiSpiRateLimitError extends PiSpiError {
|
|
1475
|
+
readonly retryAfter?: number;
|
|
1476
|
+
constructor(message: string, statusCode: number, statusText: string, retryAfter?: number);
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
/**
|
|
1480
|
+
* Utility functions for PI-SPI operations
|
|
1481
|
+
*
|
|
1482
|
+
* Common helper functions for formatting amounts, validating inputs,
|
|
1483
|
+
* and other utility operations.
|
|
1484
|
+
*/
|
|
1485
|
+
/**
|
|
1486
|
+
* Format amount from centimes to XOF
|
|
1487
|
+
* @param centimes - Amount in centimes
|
|
1488
|
+
* @returns Formatted amount string (e.g., "1 500 XOF")
|
|
1489
|
+
*/
|
|
1490
|
+
declare function formatAmount(centimes: number): string;
|
|
1491
|
+
/**
|
|
1492
|
+
* Convert XOF to centimes
|
|
1493
|
+
* @param xof - Amount in XOF
|
|
1494
|
+
* @returns Amount in centimes
|
|
1495
|
+
*/
|
|
1496
|
+
declare function xofToCentimes(xof: number): number;
|
|
1497
|
+
/**
|
|
1498
|
+
* Convert centimes to XOF
|
|
1499
|
+
* @param centimes - Amount in centimes
|
|
1500
|
+
* @returns Amount in XOF
|
|
1501
|
+
*/
|
|
1502
|
+
declare function centimesToXof(centimes: number): number;
|
|
1503
|
+
/**
|
|
1504
|
+
* Validate account number format
|
|
1505
|
+
* @param accountNumber - Account number to validate
|
|
1506
|
+
* @returns True if valid format
|
|
1507
|
+
*/
|
|
1508
|
+
declare function isValidAccountNumber(accountNumber: string): boolean;
|
|
1509
|
+
/**
|
|
1510
|
+
* Validate SHID alias format (UUID)
|
|
1511
|
+
* @param alias - Alias to validate
|
|
1512
|
+
* @returns True if valid UUID format
|
|
1513
|
+
*/
|
|
1514
|
+
declare function isValidShidAlias(alias: string): boolean;
|
|
1515
|
+
/**
|
|
1516
|
+
* Validate phone number format (for MBNO alias)
|
|
1517
|
+
* @param phoneNumber - Phone number to validate
|
|
1518
|
+
* @returns True if valid format
|
|
1519
|
+
*/
|
|
1520
|
+
declare function isValidPhoneNumber(phoneNumber: string): boolean;
|
|
1521
|
+
/**
|
|
1522
|
+
* Extract country code from account number
|
|
1523
|
+
* @param accountNumber - Account number
|
|
1524
|
+
* @returns Country code or null
|
|
1525
|
+
*/
|
|
1526
|
+
declare function getCountryFromAccount(accountNumber: string): string | null;
|
|
1527
|
+
/**
|
|
1528
|
+
* Sleep/delay utility
|
|
1529
|
+
* @param ms - Milliseconds to wait
|
|
1530
|
+
*/
|
|
1531
|
+
declare function sleep(ms: number): Promise<void>;
|
|
1532
|
+
/**
|
|
1533
|
+
* Retry a function with exponential backoff
|
|
1534
|
+
* @param fn - Function to retry
|
|
1535
|
+
* @param maxRetries - Maximum number of retries
|
|
1536
|
+
* @param initialDelay - Initial delay in milliseconds
|
|
1537
|
+
*/
|
|
1538
|
+
declare function retryWithBackoff<T>(fn: () => Promise<T>, maxRetries?: number, initialDelay?: number): Promise<T>;
|
|
1539
|
+
|
|
1540
|
+
/**
|
|
1541
|
+
* PI-SPI Constants
|
|
1542
|
+
*
|
|
1543
|
+
* Centralized constants for API endpoints, status codes, and configuration values
|
|
1544
|
+
*/
|
|
1545
|
+
declare const PI_SPI_ENDPOINTS: {
|
|
1546
|
+
/** Production API endpoint */
|
|
1547
|
+
PRODUCTION: string;
|
|
1548
|
+
/** Sandbox API endpoint */
|
|
1549
|
+
SANDBOX: string;
|
|
1550
|
+
/** Default endpoint (sandbox) */
|
|
1551
|
+
DEFAULT: string;
|
|
1552
|
+
};
|
|
1553
|
+
declare const PAYMENT_STATUS: {
|
|
1554
|
+
/** Payment initiated (awaiting confirmation after alias lookup) */
|
|
1555
|
+
INITIE: string;
|
|
1556
|
+
/** Payment sent (validations passed, PSP has sent the request) */
|
|
1557
|
+
ENVOYE: string;
|
|
1558
|
+
/** Payment is confirmed/irreversible */
|
|
1559
|
+
IRREVOCABLE: string;
|
|
1560
|
+
/** Payment has been rejected */
|
|
1561
|
+
REJETE: string;
|
|
1562
|
+
};
|
|
1563
|
+
declare const ACCOUNT_STATUS: {
|
|
1564
|
+
/** Account is open */
|
|
1565
|
+
OPEN: string;
|
|
1566
|
+
/** Account is blocked */
|
|
1567
|
+
BLOCKED: string;
|
|
1568
|
+
/** Account is closed */
|
|
1569
|
+
CLOSED: string;
|
|
1570
|
+
};
|
|
1571
|
+
declare const ACCOUNT_TYPE: {
|
|
1572
|
+
/** Current account */
|
|
1573
|
+
CURRENT: string;
|
|
1574
|
+
/** Savings account */
|
|
1575
|
+
SAVINGS: string;
|
|
1576
|
+
};
|
|
1577
|
+
declare const CLIENT_TYPE: {
|
|
1578
|
+
/** Individual person */
|
|
1579
|
+
INDIVIDUAL: string;
|
|
1580
|
+
/** Merchant */
|
|
1581
|
+
MERCHANT: string;
|
|
1582
|
+
/** Business */
|
|
1583
|
+
BUSINESS: string;
|
|
1584
|
+
/** Government */
|
|
1585
|
+
GOVERNMENT: string;
|
|
1586
|
+
};
|
|
1587
|
+
declare const UEMOA_COUNTRIES: {
|
|
1588
|
+
BENIN: string;
|
|
1589
|
+
BURKINA_FASO: string;
|
|
1590
|
+
IVORY_COAST: string;
|
|
1591
|
+
GUINEA_BISSAU: string;
|
|
1592
|
+
MALI: string;
|
|
1593
|
+
NIGER: string;
|
|
1594
|
+
SENEGAL: string;
|
|
1595
|
+
TOGO: string;
|
|
1596
|
+
};
|
|
1597
|
+
declare const CURRENCY: {
|
|
1598
|
+
/** West African CFA Franc */
|
|
1599
|
+
XOF: string;
|
|
1600
|
+
/** Amounts are specified in centimes (1 XOF = 100 centimes) */
|
|
1601
|
+
CENTIMES_PER_XOF: number;
|
|
1602
|
+
};
|
|
1603
|
+
declare const DEFAULT_LIMITS: {
|
|
1604
|
+
/** Maximum page size for paginated requests */
|
|
1605
|
+
MAX_PAGE_SIZE: number;
|
|
1606
|
+
/** Default page size */
|
|
1607
|
+
DEFAULT_PAGE_SIZE: number;
|
|
1608
|
+
/** Default aliases per account */
|
|
1609
|
+
DEFAULT_ALIASES_PER_ACCOUNT: number;
|
|
1610
|
+
};
|
|
1611
|
+
declare const WEBHOOK_EVENTS: {
|
|
1612
|
+
/** Payment received */
|
|
1613
|
+
PAIEMENT_RECU: string;
|
|
1614
|
+
/** Payment sent */
|
|
1615
|
+
PAIEMENT_ENVOYE: string;
|
|
1616
|
+
/** Payment rejected */
|
|
1617
|
+
PAIEMENT_REJETE: string;
|
|
1618
|
+
/** Payment request (RTP) received */
|
|
1619
|
+
RTP_RECU: string;
|
|
1620
|
+
/** Payment request (RTP) rejected */
|
|
1621
|
+
RTP_REJETE: string;
|
|
1622
|
+
/** Cancellation requested */
|
|
1623
|
+
ANNULATION_DEMANDE: string;
|
|
1624
|
+
/** Cancellation rejected */
|
|
1625
|
+
ANNULATION_REJETE: string;
|
|
1626
|
+
/** Fund return sent */
|
|
1627
|
+
RETOUR_ENVOYE: string;
|
|
1628
|
+
/** Fund return rejected */
|
|
1629
|
+
RETOUR_REJETE: string;
|
|
1630
|
+
/** Fund return received */
|
|
1631
|
+
RETOUR_RECU: string;
|
|
1632
|
+
};
|
|
1633
|
+
|
|
1634
|
+
type ApiRequestOptions = {
|
|
1635
|
+
readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH';
|
|
1636
|
+
readonly url: string;
|
|
1637
|
+
readonly path?: Record<string, any>;
|
|
1638
|
+
readonly cookies?: Record<string, any>;
|
|
1639
|
+
readonly headers?: Record<string, any>;
|
|
1640
|
+
readonly query?: Record<string, any>;
|
|
1641
|
+
readonly formData?: Record<string, any>;
|
|
1642
|
+
readonly body?: any;
|
|
1643
|
+
readonly mediaType?: string;
|
|
1644
|
+
readonly responseHeader?: string;
|
|
1645
|
+
readonly errors?: Record<number, string>;
|
|
1646
|
+
};
|
|
1647
|
+
|
|
1648
|
+
type ApiResult = {
|
|
1649
|
+
readonly url: string;
|
|
1650
|
+
readonly ok: boolean;
|
|
1651
|
+
readonly status: number;
|
|
1652
|
+
readonly statusText: string;
|
|
1653
|
+
readonly body: any;
|
|
1654
|
+
};
|
|
1655
|
+
|
|
1656
|
+
declare class ApiError extends Error {
|
|
1657
|
+
readonly url: string;
|
|
1658
|
+
readonly status: number;
|
|
1659
|
+
readonly statusText: string;
|
|
1660
|
+
readonly body: any;
|
|
1661
|
+
readonly request: ApiRequestOptions;
|
|
1662
|
+
constructor(request: ApiRequestOptions, response: ApiResult, message: string);
|
|
1663
|
+
}
|
|
1664
|
+
|
|
1665
|
+
declare class CancelError extends Error {
|
|
1666
|
+
constructor(message: string);
|
|
1667
|
+
get isCancelled(): boolean;
|
|
1668
|
+
}
|
|
1669
|
+
interface OnCancel {
|
|
1670
|
+
readonly isResolved: boolean;
|
|
1671
|
+
readonly isRejected: boolean;
|
|
1672
|
+
readonly isCancelled: boolean;
|
|
1673
|
+
(cancelHandler: () => void): void;
|
|
1674
|
+
}
|
|
1675
|
+
declare class CancelablePromise<T> implements Promise<T> {
|
|
1676
|
+
#private;
|
|
1677
|
+
constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: OnCancel) => void);
|
|
1678
|
+
get [Symbol.toStringTag](): string;
|
|
1679
|
+
then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
1680
|
+
catch<TResult = never>(onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
|
|
1681
|
+
finally(onFinally?: (() => void) | null): Promise<T>;
|
|
1682
|
+
cancel(): void;
|
|
1683
|
+
get isCancelled(): boolean;
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
|
|
1687
|
+
type Headers = Record<string, string>;
|
|
1688
|
+
type OpenAPIConfig = {
|
|
1689
|
+
BASE: string;
|
|
1690
|
+
VERSION: string;
|
|
1691
|
+
WITH_CREDENTIALS: boolean;
|
|
1692
|
+
CREDENTIALS: 'include' | 'omit' | 'same-origin';
|
|
1693
|
+
TOKEN?: string | Resolver<string> | undefined;
|
|
1694
|
+
USERNAME?: string | Resolver<string> | undefined;
|
|
1695
|
+
PASSWORD?: string | Resolver<string> | undefined;
|
|
1696
|
+
HEADERS?: Headers | Resolver<Headers> | undefined;
|
|
1697
|
+
ENCODE_PATH?: ((path: string) => string) | undefined;
|
|
1698
|
+
};
|
|
1699
|
+
declare const OpenAPI: OpenAPIConfig;
|
|
1700
|
+
|
|
1701
|
+
type AliasCreationReponse = {
|
|
1702
|
+
/**
|
|
1703
|
+
* Le valeur de l'alias créé
|
|
1704
|
+
*/
|
|
1705
|
+
cle?: string;
|
|
1706
|
+
/**
|
|
1707
|
+
* Le type de l'alias
|
|
1708
|
+
*/
|
|
1709
|
+
type?: string;
|
|
1710
|
+
/**
|
|
1711
|
+
* Le numéro de compte rattaché à l'alias
|
|
1712
|
+
*/
|
|
1713
|
+
compte?: string;
|
|
1714
|
+
/**
|
|
1715
|
+
* Date au format ISO 8601
|
|
1716
|
+
*/
|
|
1717
|
+
dateCreation?: string;
|
|
1718
|
+
/**
|
|
1719
|
+
* Date au format ISO 8601
|
|
1720
|
+
*/
|
|
1721
|
+
dateModification?: string;
|
|
1722
|
+
};
|
|
1723
|
+
|
|
1724
|
+
type AliasCreationRequest = {
|
|
1725
|
+
/**
|
|
1726
|
+
* Le client doit spécifier le type d'alias qu'il souhaite créer.
|
|
1727
|
+
* Les types disponibles sont:
|
|
1728
|
+
* - SHID: Adresse de paiement générée (disponible pour tous les types de clients: P, C, B, G)
|
|
1729
|
+
* - MCOD: Identifiant de compte marchand pour USSD (disponible pour les clients business: C, B, G)
|
|
1730
|
+
* - MBNO: Numéro de téléphone mobile (disponible pour les particuliers: P)
|
|
1731
|
+
*
|
|
1732
|
+
*/
|
|
1733
|
+
type: string;
|
|
1734
|
+
};
|
|
1735
|
+
|
|
1736
|
+
type AliasReponseListe = {
|
|
1737
|
+
data?: Array<AliasCreationReponse>;
|
|
1738
|
+
meta?: {
|
|
1739
|
+
/**
|
|
1740
|
+
* total d'éléments correspondants à la recherche
|
|
1741
|
+
*/
|
|
1742
|
+
total?: number;
|
|
1743
|
+
/**
|
|
1744
|
+
* nombre d'éléments retournés
|
|
1745
|
+
*/
|
|
1746
|
+
size?: number;
|
|
1747
|
+
/**
|
|
1748
|
+
* numéro ou identifiant de la page suivante
|
|
1749
|
+
*/
|
|
1750
|
+
page?: string;
|
|
1751
|
+
/**
|
|
1752
|
+
* numéro ou identifiant de la page suivante
|
|
1753
|
+
*/
|
|
1754
|
+
next?: string;
|
|
1755
|
+
/**
|
|
1756
|
+
* numéro ou identifiant de la page précédente
|
|
1757
|
+
*/
|
|
1758
|
+
prev?: string;
|
|
1759
|
+
};
|
|
1760
|
+
};
|
|
1761
|
+
|
|
1762
|
+
/**
|
|
1763
|
+
* - `INITIE` si la demande d'annulation est initiée
|
|
1764
|
+
* - `ENVOYE` si la demande d'annulation est envoyée
|
|
1765
|
+
* - `IRREVOCABLE` lorsque le retour de fonds est irrévocable
|
|
1766
|
+
* - `REJETE` lorsque la demande d'annulation est rejetée
|
|
1767
|
+
*
|
|
1768
|
+
*/
|
|
1769
|
+
declare enum AnnulationStatut {
|
|
1770
|
+
INITIE = "INITIE",
|
|
1771
|
+
ENVOYE = "ENVOYE",
|
|
1772
|
+
IRREVOCABLE = "IRREVOCABLE",
|
|
1773
|
+
REJETE = "REJETE"
|
|
1774
|
+
}
|
|
1775
|
+
|
|
1776
|
+
type Champs = {};
|
|
1777
|
+
|
|
1778
|
+
type CompteOperation = {
|
|
1779
|
+
/**
|
|
1780
|
+
* Identifiant de la transaction dans le SI du client
|
|
1781
|
+
*/
|
|
1782
|
+
txId: string;
|
|
1783
|
+
/**
|
|
1784
|
+
* Le montant du transfert à effectuer.
|
|
1785
|
+
*/
|
|
1786
|
+
montant: number;
|
|
1787
|
+
/**
|
|
1788
|
+
* Le motif du transfert
|
|
1789
|
+
*/
|
|
1790
|
+
motif?: string;
|
|
1791
|
+
/**
|
|
1792
|
+
* Le numéro de compte du payeur. Requis si `payeurAlias` n'est pas fourni.
|
|
1793
|
+
*/
|
|
1794
|
+
payeurNumero: string;
|
|
1795
|
+
/**
|
|
1796
|
+
* Le numéro de compte du payé. Requis si `payeAlias` n'est pas fourni.
|
|
1797
|
+
*/
|
|
1798
|
+
payeNumero: string;
|
|
1799
|
+
/**
|
|
1800
|
+
* - `INITIE` Le transfert est en cours de traitement
|
|
1801
|
+
* - `IRREVOCABLE` Le tranfert à été effectué avec succès
|
|
1802
|
+
* - `REJETE` Le tranfert à été rejeté
|
|
1803
|
+
*
|
|
1804
|
+
*/
|
|
1805
|
+
statut: CompteOperation.statut;
|
|
1806
|
+
/**
|
|
1807
|
+
* Raisons du rejet d'un tranfert':
|
|
1808
|
+
* - SOLDE_INSUFFISANT le solde du compte debiteur est insuffisant pour effectuer l'opération.
|
|
1809
|
+
* - COMPTE_BLOQUE le compte debiteur ou le compte crediteur est bloqué
|
|
1810
|
+
* - COMPTE_CLOTURE le compte debiteur ou le compte crediteur est cloturé
|
|
1811
|
+
*
|
|
1812
|
+
*/
|
|
1813
|
+
statutRaison?: CompteOperation.statutRaison;
|
|
1814
|
+
/**
|
|
1815
|
+
* Identifiant unique de bout en bout de la transaction
|
|
1816
|
+
*/
|
|
1817
|
+
end2endId?: string;
|
|
1818
|
+
/**
|
|
1819
|
+
* Date d'envoi du transfert de fonds: date et heure à laquelle le transfert à été initié
|
|
1820
|
+
*
|
|
1821
|
+
*/
|
|
1822
|
+
dateEnvoi: string;
|
|
1823
|
+
/**
|
|
1824
|
+
* Date d'irrévocabilité du transfert de fonds: date et heure à laquelle le transfert à été irrévocable
|
|
1825
|
+
*
|
|
1826
|
+
*/
|
|
1827
|
+
dateIrrevocabilite?: string;
|
|
1828
|
+
};
|
|
1829
|
+
declare namespace CompteOperation {
|
|
1830
|
+
/**
|
|
1831
|
+
* - `INITIE` Le transfert est en cours de traitement
|
|
1832
|
+
* - `IRREVOCABLE` Le tranfert à été effectué avec succès
|
|
1833
|
+
* - `REJETE` Le tranfert à été rejeté
|
|
1834
|
+
*
|
|
1835
|
+
*/
|
|
1836
|
+
enum statut {
|
|
1837
|
+
INITIE = "INITIE"
|
|
1838
|
+
}
|
|
1839
|
+
/**
|
|
1840
|
+
* Raisons du rejet d'un tranfert':
|
|
1841
|
+
* - SOLDE_INSUFFISANT le solde du compte debiteur est insuffisant pour effectuer l'opération.
|
|
1842
|
+
* - COMPTE_BLOQUE le compte debiteur ou le compte crediteur est bloqué
|
|
1843
|
+
* - COMPTE_CLOTURE le compte debiteur ou le compte crediteur est cloturé
|
|
1844
|
+
*
|
|
1845
|
+
*/
|
|
1846
|
+
enum statutRaison {
|
|
1847
|
+
SOLDE_INSUFFISANT = "SOLDE_INSUFFISANT"
|
|
1848
|
+
}
|
|
1849
|
+
}
|
|
1850
|
+
|
|
1851
|
+
type CompteOperationListe = {
|
|
1852
|
+
data?: Array<CompteOperation>;
|
|
1853
|
+
meta?: {
|
|
1854
|
+
/**
|
|
1855
|
+
* total d'éléments correspondants à la recherche
|
|
1856
|
+
*/
|
|
1857
|
+
length?: number;
|
|
1858
|
+
/**
|
|
1859
|
+
* numéro ou identifiant de la page suivante
|
|
1860
|
+
*/
|
|
1861
|
+
page?: string;
|
|
1862
|
+
/**
|
|
1863
|
+
* nombre d'éléments retournés
|
|
1864
|
+
*/
|
|
1865
|
+
limit?: number;
|
|
1866
|
+
};
|
|
1867
|
+
};
|
|
1868
|
+
|
|
1869
|
+
type CompteSolde = {
|
|
1870
|
+
/**
|
|
1871
|
+
* Le type du compte.
|
|
1872
|
+
* Types de comptes disponibles :
|
|
1873
|
+
* - **CACC** (Current Account) : Compte courant utilisé pour enregistrer les débits et crédits lorsqu'aucun compte spécifique n'a été désigné.
|
|
1874
|
+
* - **CARD** (Card Account) : Compte utilisé pour les paiements par carte de crédit.
|
|
1875
|
+
* - **CASH** (Cash Payment) : Compte utilisé pour le paiement en espèces.
|
|
1876
|
+
* - **CHAR** (Charges) : Compte utilisé pour les frais s'il diffère du compte de paiement.
|
|
1877
|
+
* - **CISH** (Cash Income) : Compte utilisé pour le paiement des revenus s'il diffère du compte courant en espèces.
|
|
1878
|
+
* - **COMM** (Commission) : Compte utilisé pour les commissions s'il diffère du compte de paiement.
|
|
1879
|
+
* - **CPAC** (Clearing Participant Settlement Account) : Compte utilisé pour enregistrer les écritures de règlement débit et crédit au nom d'un participant de compensation désigné.
|
|
1880
|
+
* - **LLSV** (Limited Liquidity Savings Account) : Compte utilisé pour l'épargne avec des conditions spéciales d'intérêt et de retrait.
|
|
1881
|
+
* - **LOAN** (Loan) : Compte utilisé pour les prêts.
|
|
1882
|
+
* - **MGLD** (Marginal Lending) : Compte utilisé pour une facilité de prêt marginal.
|
|
1883
|
+
* - **MOMA** (Money Market) : Compte utilisé pour les marchés monétaires s'il diffère du compte en espèces.
|
|
1884
|
+
* - **NREX** (Non Resident External) : Compte utilisé pour les non-résidents externes.
|
|
1885
|
+
* - **ODFT** (Overdraft) : Compte utilisé pour les découverts.
|
|
1886
|
+
* - **ONDP** (Over Night Deposit) : Compte utilisé pour les dépôts au jour le jour.
|
|
1887
|
+
* - **SACC** (Settlement Account) : Compte utilisé pour enregistrer les écritures débit et crédit résultant de transactions compensées et réglées via un système spécifique de compensation et de règlement.
|
|
1888
|
+
* - **SLRY** (Salary) : Comptes utilisés pour les paiements de salaires.
|
|
1889
|
+
* - **SVGS** (Savings) : Compte utilisé pour l'épargne.
|
|
1890
|
+
* - **TAXE** (Tax) : Compte utilisé pour les taxes s'il diffère du compte de paiement.
|
|
1891
|
+
* - **TRAN** (Transacting Account) : Compte de transaction, le type de compte bancaire le plus basique. La principale différence entre les comptes de transaction et les comptes chèques est qu'il n'y a généralement pas de chéquier ni de facilité de découvert.
|
|
1892
|
+
* - **TRAS** (Cash Trading) : Compte utilisé pour le trading s'il diffère du compte en espèces courant.
|
|
1893
|
+
* - **VACC** (Virtual Account) : Compte créé virtuellement pour faciliter la collecte et le rapprochement.
|
|
1894
|
+
* - **OTHR** (Other Account) : Type de compte non spécifié
|
|
1895
|
+
*
|
|
1896
|
+
*/
|
|
1897
|
+
type?: CompteSolde.type;
|
|
1898
|
+
/**
|
|
1899
|
+
* Le numéro de compte
|
|
1900
|
+
*/
|
|
1901
|
+
numero?: string;
|
|
1902
|
+
/**
|
|
1903
|
+
* La date d'ouverture du compte au format ISO8601 (YYYY-MM-DD)
|
|
1904
|
+
*/
|
|
1905
|
+
dateOuverture?: string;
|
|
1906
|
+
/**
|
|
1907
|
+
* Le solde du compte
|
|
1908
|
+
*/
|
|
1909
|
+
solde?: number;
|
|
1910
|
+
/**
|
|
1911
|
+
* Le statut actuel du compte.
|
|
1912
|
+
*
|
|
1913
|
+
* Statuts disponibles :
|
|
1914
|
+
*
|
|
1915
|
+
* - **OUVERT** : Le compte est actif et opérationnel. Toutes les opérations sont autorisées.
|
|
1916
|
+
* - **BLOQUE** : Le compte est temporairement bloqué. Aucune opération n'est autorisée.
|
|
1917
|
+
* - **CLOTURE** : Le compte est fermé définitivement. Aucune opération n'est possible.
|
|
1918
|
+
*
|
|
1919
|
+
*/
|
|
1920
|
+
statut?: CompteSolde.statut;
|
|
1921
|
+
/**
|
|
1922
|
+
* Indique si l'attribut preConfirmation est présent.
|
|
1923
|
+
* PreConfirmation est un attribut optionnel.
|
|
1924
|
+
* Par défaut, pour les clients business (entreprises et les gouvernements), PI marque l'irrévocabilité du transfert de fonds sans demander une confirmation au participant payé.
|
|
1925
|
+
* La valeur par défaut est false pour indiquer que le compte reçoit des transferts sans préconfirmation.
|
|
1926
|
+
*
|
|
1927
|
+
*/
|
|
1928
|
+
preConfirmation?: boolean;
|
|
1929
|
+
};
|
|
1930
|
+
declare namespace CompteSolde {
|
|
1931
|
+
/**
|
|
1932
|
+
* Le type du compte.
|
|
1933
|
+
* Types de comptes disponibles :
|
|
1934
|
+
* - **CACC** (Current Account) : Compte courant utilisé pour enregistrer les débits et crédits lorsqu'aucun compte spécifique n'a été désigné.
|
|
1935
|
+
* - **CARD** (Card Account) : Compte utilisé pour les paiements par carte de crédit.
|
|
1936
|
+
* - **CASH** (Cash Payment) : Compte utilisé pour le paiement en espèces.
|
|
1937
|
+
* - **CHAR** (Charges) : Compte utilisé pour les frais s'il diffère du compte de paiement.
|
|
1938
|
+
* - **CISH** (Cash Income) : Compte utilisé pour le paiement des revenus s'il diffère du compte courant en espèces.
|
|
1939
|
+
* - **COMM** (Commission) : Compte utilisé pour les commissions s'il diffère du compte de paiement.
|
|
1940
|
+
* - **CPAC** (Clearing Participant Settlement Account) : Compte utilisé pour enregistrer les écritures de règlement débit et crédit au nom d'un participant de compensation désigné.
|
|
1941
|
+
* - **LLSV** (Limited Liquidity Savings Account) : Compte utilisé pour l'épargne avec des conditions spéciales d'intérêt et de retrait.
|
|
1942
|
+
* - **LOAN** (Loan) : Compte utilisé pour les prêts.
|
|
1943
|
+
* - **MGLD** (Marginal Lending) : Compte utilisé pour une facilité de prêt marginal.
|
|
1944
|
+
* - **MOMA** (Money Market) : Compte utilisé pour les marchés monétaires s'il diffère du compte en espèces.
|
|
1945
|
+
* - **NREX** (Non Resident External) : Compte utilisé pour les non-résidents externes.
|
|
1946
|
+
* - **ODFT** (Overdraft) : Compte utilisé pour les découverts.
|
|
1947
|
+
* - **ONDP** (Over Night Deposit) : Compte utilisé pour les dépôts au jour le jour.
|
|
1948
|
+
* - **SACC** (Settlement Account) : Compte utilisé pour enregistrer les écritures débit et crédit résultant de transactions compensées et réglées via un système spécifique de compensation et de règlement.
|
|
1949
|
+
* - **SLRY** (Salary) : Comptes utilisés pour les paiements de salaires.
|
|
1950
|
+
* - **SVGS** (Savings) : Compte utilisé pour l'épargne.
|
|
1951
|
+
* - **TAXE** (Tax) : Compte utilisé pour les taxes s'il diffère du compte de paiement.
|
|
1952
|
+
* - **TRAN** (Transacting Account) : Compte de transaction, le type de compte bancaire le plus basique. La principale différence entre les comptes de transaction et les comptes chèques est qu'il n'y a généralement pas de chéquier ni de facilité de découvert.
|
|
1953
|
+
* - **TRAS** (Cash Trading) : Compte utilisé pour le trading s'il diffère du compte en espèces courant.
|
|
1954
|
+
* - **VACC** (Virtual Account) : Compte créé virtuellement pour faciliter la collecte et le rapprochement.
|
|
1955
|
+
* - **OTHR** (Other Account) : Type de compte non spécifié
|
|
1956
|
+
*
|
|
1957
|
+
*/
|
|
1958
|
+
enum type {
|
|
1959
|
+
CACC = "CACC",
|
|
1960
|
+
CARD = "CARD",
|
|
1961
|
+
CASH = "CASH",
|
|
1962
|
+
CHAR = "CHAR",
|
|
1963
|
+
CISH = "CISH",
|
|
1964
|
+
COMM = "COMM",
|
|
1965
|
+
CPAC = "CPAC",
|
|
1966
|
+
LLSV = "LLSV",
|
|
1967
|
+
LOAN = "LOAN",
|
|
1968
|
+
MGLD = "MGLD",
|
|
1969
|
+
MOMA = "MOMA",
|
|
1970
|
+
NREX = "NREX",
|
|
1971
|
+
ODFT = "ODFT",
|
|
1972
|
+
ONDP = "ONDP",
|
|
1973
|
+
OTHR = "OTHR",
|
|
1974
|
+
SACC = "SACC",
|
|
1975
|
+
SLRY = "SLRY",
|
|
1976
|
+
SVGS = "SVGS",
|
|
1977
|
+
TAXE = "TAXE",
|
|
1978
|
+
TRAN = "TRAN",
|
|
1979
|
+
TRAS = "TRAS",
|
|
1980
|
+
VACC = "VACC"
|
|
1981
|
+
}
|
|
1982
|
+
/**
|
|
1983
|
+
* Le statut actuel du compte.
|
|
1984
|
+
*
|
|
1985
|
+
* Statuts disponibles :
|
|
1986
|
+
*
|
|
1987
|
+
* - **OUVERT** : Le compte est actif et opérationnel. Toutes les opérations sont autorisées.
|
|
1988
|
+
* - **BLOQUE** : Le compte est temporairement bloqué. Aucune opération n'est autorisée.
|
|
1989
|
+
* - **CLOTURE** : Le compte est fermé définitivement. Aucune opération n'est possible.
|
|
1990
|
+
*
|
|
1991
|
+
*/
|
|
1992
|
+
enum statut {
|
|
1993
|
+
OUVERT = "OUVERT",
|
|
1994
|
+
BLOQUE = "BLOQUE",
|
|
1995
|
+
CLOTURE = "CLOTURE"
|
|
1996
|
+
}
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
type CompteTransfertIntraRequest = {
|
|
2000
|
+
txId: string;
|
|
2001
|
+
montant: number;
|
|
2002
|
+
motif?: string;
|
|
2003
|
+
payeurNumero?: string;
|
|
2004
|
+
payeNumero?: string;
|
|
2005
|
+
payeurAlias?: string;
|
|
2006
|
+
payeAlias?: string;
|
|
2007
|
+
};
|
|
2008
|
+
|
|
2009
|
+
type CompteTransfertIntraReponse = (CompteTransfertIntraRequest & {
|
|
2010
|
+
/**
|
|
2011
|
+
* - `INITIE` Le transfert est en cours de traitement
|
|
2012
|
+
* - `IRREVOCABLE` Le tranfert à été effectué avec succès
|
|
2013
|
+
*
|
|
2014
|
+
*/
|
|
2015
|
+
statut?: CompteTransfertIntraReponse.statut;
|
|
2016
|
+
/**
|
|
2017
|
+
* Identifiant unique de bout en bout de la transaction
|
|
2018
|
+
*/
|
|
2019
|
+
end2endId?: string;
|
|
2020
|
+
/**
|
|
2021
|
+
* Date d'envoi du transfert de fonds: date et heure à laquelle le transfert à été initié
|
|
2022
|
+
*
|
|
2023
|
+
*/
|
|
2024
|
+
dateEnvoi?: string;
|
|
2025
|
+
/**
|
|
2026
|
+
* Date d'irrévocabilité du transfert de fonds: date et heure à laquelle le transfert à été irrévocable
|
|
2027
|
+
*
|
|
2028
|
+
*/
|
|
2029
|
+
dateIrrevocabilite?: string;
|
|
2030
|
+
});
|
|
2031
|
+
declare namespace CompteTransfertIntraReponse {
|
|
2032
|
+
/**
|
|
2033
|
+
* - `INITIE` Le transfert est en cours de traitement
|
|
2034
|
+
* - `IRREVOCABLE` Le tranfert à été effectué avec succès
|
|
2035
|
+
*
|
|
2036
|
+
*/
|
|
2037
|
+
enum statut {
|
|
2038
|
+
INITIE = "INITIE"
|
|
2039
|
+
}
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
/**
|
|
2043
|
+
* Raisons de l'annulation ou du rejet de la demande de paiement:
|
|
2044
|
+
* - ERREUR_ALIAS le client s'est trompé sur l'alias
|
|
2045
|
+
* - ERREUR_MONTANT le client s'est trompé sur le montant
|
|
2046
|
+
* - ERREUR_TXID le client s'est trompé sur le txId
|
|
2047
|
+
* - PAYEUR_INCONNU les informations du client payeur retournées suite à la recherche d'alias ne sont pas ceux attendues par le client.
|
|
2048
|
+
*
|
|
2049
|
+
*/
|
|
2050
|
+
declare enum DemandePaiementConfirmationAnnulationRaison {
|
|
2051
|
+
ERREUR_ALIAS = "ERREUR_ALIAS",
|
|
2052
|
+
ERREUR_MONTANT = "ERREUR_MONTANT",
|
|
2053
|
+
ERREUR_TXID = "ERREUR_TXID",
|
|
2054
|
+
PAYEUR_INCONNU = "PAYEUR_INCONNU"
|
|
2055
|
+
}
|
|
2056
|
+
|
|
2057
|
+
/**
|
|
2058
|
+
* Le type de document justificatif associé à la transaction. Les types de documents disponibles sont :
|
|
2059
|
+
* - **QUOT** (Quotation) : Devis commercial détaillant les conditions d'offre.
|
|
2060
|
+
* - **PROF** (Proforma Invoice) : Facture pro forma, engagement préliminaire du vendeur (prix/conditions), sans enregistrement comptable réel.
|
|
2061
|
+
* - **CINV** (Commercial Invoice) : Facture commerciale standard pour la vente de biens ou services. Utilisée pour les paiements directs d'une facture émise par le vendeur.
|
|
2062
|
+
* - **CMCN** (Commercial Contract) : Contrat commercial entre les parties, stipulant les termes et conditions de la livraison de biens ou de services.
|
|
2063
|
+
* - **DISP** (Dispatch Advice) : Avis d'expédition ou bon de livraison.
|
|
2064
|
+
* - **PUOR** (Purchase Order) : Bon de commande émis par l'acheteur.
|
|
2065
|
+
* - **CONT** (Contract) : Document contractuel prouvant un accord entre vendeur et acheteur pour biens ou services.
|
|
2066
|
+
* - **HIRI** (Hire Invoice) : Facture pour location de ressources humaines (ex : intérim) ou biens/équipements.
|
|
2067
|
+
* - **INVS** (Invoice Signed) : Facture signée, validée électroniquement ou physiquement. Indique une approbation formelle avant paiement.
|
|
2068
|
+
* - **MSIN** (Metered Service Invoice) : Facture pour services mesurés (ex : gaz, électricité via compteur fixe). Inclut la consommation réelle.
|
|
2069
|
+
* - **SPRR** (Seller Presentment) : Document de présentation par le vendeur pour supporter l'acquisition (ex : preuve de livraison ou justificatif).
|
|
2070
|
+
* - **TISH** (Time Sheet) : Feuille de temps enregistrant les heures pour services/prestations ou livraison. Pour paiements basés sur le temps (ex : consulting, freelance).
|
|
2071
|
+
* - **USAR** (Usage Report) : Rapport d'utilisation indiquant le pattern de consommation (ex : SaaS, télécoms). Similaire à MSIN mais plus large (non forcément mesuré).
|
|
2072
|
+
* - **BOLD** (Bill Of Lading) : Document de transport maritime ou logistique (connaissement) prouvant l'expédition des marchandises. Spécifique au transport multimodal (ex : maritime, aérien).
|
|
2073
|
+
* - **SOAC** (Statement Of Account) : Relevé de compte émis par le fournisseur, listant les transactions enregistrées pour le débiteur (ex : factures, paiements, ajustements).
|
|
2074
|
+
* - **VCHR** (Voucher) : Document électronique de paiement (bon ou coupon) représentant une obligation ou un droit de paiement. Souvent utilisé pour des paiements préautorisés ou des remises spécifiques.
|
|
2075
|
+
*
|
|
2076
|
+
*/
|
|
2077
|
+
declare enum RefDocType {
|
|
2078
|
+
CINV = "CINV",
|
|
2079
|
+
CMCN = "CMCN",
|
|
2080
|
+
DISP = "DISP",
|
|
2081
|
+
PUOR = "PUOR",
|
|
2082
|
+
CONT = "CONT",
|
|
2083
|
+
HIRI = "HIRI",
|
|
2084
|
+
INVS = "INVS",
|
|
2085
|
+
MSIN = "MSIN",
|
|
2086
|
+
PROF = "PROF",
|
|
2087
|
+
QUOT = "QUOT",
|
|
2088
|
+
SPRR = "SPRR",
|
|
2089
|
+
TISH = "TISH",
|
|
2090
|
+
USAR = "USAR",
|
|
2091
|
+
BOLD = "BOLD",
|
|
2092
|
+
SOAC = "SOAC",
|
|
2093
|
+
VCHR = "VCHR"
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2096
|
+
type DemandePaiementRequestBase = {
|
|
2097
|
+
/**
|
|
2098
|
+
* Identifiant de la demande de paiement dans le SI du client
|
|
2099
|
+
*/
|
|
2100
|
+
txId: string;
|
|
2101
|
+
/**
|
|
2102
|
+
* Alias de compte du client payeur à qui est adressée la demande
|
|
2103
|
+
*/
|
|
2104
|
+
payeurAlias: string;
|
|
2105
|
+
/**
|
|
2106
|
+
* L'alias de compte dans lequel le client payé souhaite recevoir les paiements
|
|
2107
|
+
*/
|
|
2108
|
+
payeAlias: string;
|
|
2109
|
+
/**
|
|
2110
|
+
* L'URL du logo du business ou d'un produit du business qui sera affiché au client payeur
|
|
2111
|
+
*/
|
|
2112
|
+
logoUrl?: string;
|
|
2113
|
+
/**
|
|
2114
|
+
* Lorsque le PSP reçoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
|
|
2115
|
+
*
|
|
2116
|
+
* L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les résultats de la recherche d'alias pour confirmation:
|
|
2117
|
+
*
|
|
2118
|
+
* * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le résultat de la recherche d'alias au client et attendre une confirmation
|
|
2119
|
+
* * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
|
|
2120
|
+
*
|
|
2121
|
+
*/
|
|
2122
|
+
confirmation: boolean;
|
|
2123
|
+
/**
|
|
2124
|
+
* Le montant total du paiement à effectuer
|
|
2125
|
+
*/
|
|
2126
|
+
montant: number;
|
|
2127
|
+
/**
|
|
2128
|
+
* Le motif de la demande de paiement
|
|
2129
|
+
*/
|
|
2130
|
+
motif?: string;
|
|
2131
|
+
/**
|
|
2132
|
+
* Le numéro / la référence du document justificatif
|
|
2133
|
+
*/
|
|
2134
|
+
refDocNumero?: string;
|
|
2135
|
+
refDocType?: RefDocType;
|
|
2136
|
+
};
|
|
2137
|
+
|
|
2138
|
+
type DemandePaiementRequest = (({
|
|
2139
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2140
|
+
} & DemandePaiementRequestBase) | ({
|
|
2141
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2142
|
+
/**
|
|
2143
|
+
* Montant de l'achat
|
|
2144
|
+
*/
|
|
2145
|
+
montantAchat: number;
|
|
2146
|
+
/**
|
|
2147
|
+
* Montant du retrait d'espèces (Inclus le montant des frais)
|
|
2148
|
+
*/
|
|
2149
|
+
montantRetrait: number;
|
|
2150
|
+
/**
|
|
2151
|
+
* Frais de retrait
|
|
2152
|
+
*/
|
|
2153
|
+
montantFrais: number;
|
|
2154
|
+
} & DemandePaiementRequestBase) | ({
|
|
2155
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2156
|
+
/**
|
|
2157
|
+
* Montant du retrait d'espèces
|
|
2158
|
+
*/
|
|
2159
|
+
montantRetrait: number;
|
|
2160
|
+
/**
|
|
2161
|
+
* Frais de retrait
|
|
2162
|
+
*/
|
|
2163
|
+
montantFrais: number;
|
|
2164
|
+
} & DemandePaiementRequestBase) | ({
|
|
2165
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2166
|
+
/**
|
|
2167
|
+
* Indique que le paiement est différé (Acheter maintenant, payer plus tard)
|
|
2168
|
+
*/
|
|
2169
|
+
debitDiffere: boolean;
|
|
2170
|
+
/**
|
|
2171
|
+
* Remise appliquée sur la facture
|
|
2172
|
+
*/
|
|
2173
|
+
remise?: {
|
|
2174
|
+
montant?: number;
|
|
2175
|
+
taux?: number;
|
|
2176
|
+
};
|
|
2177
|
+
} & DemandePaiementRequestBase) | ({
|
|
2178
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2179
|
+
/**
|
|
2180
|
+
* Date limite de paiement (2 minutes après création)
|
|
2181
|
+
*/
|
|
2182
|
+
dateLimitePaiement: string;
|
|
2183
|
+
} & DemandePaiementRequestBase) | ({
|
|
2184
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2185
|
+
/**
|
|
2186
|
+
* Indique que le paiement est différé
|
|
2187
|
+
*/
|
|
2188
|
+
debitDiffere: boolean;
|
|
2189
|
+
/**
|
|
2190
|
+
* Remise appliquée
|
|
2191
|
+
*/
|
|
2192
|
+
remise: {
|
|
2193
|
+
/**
|
|
2194
|
+
* Montant de la remise
|
|
2195
|
+
*/
|
|
2196
|
+
montant?: number;
|
|
2197
|
+
/**
|
|
2198
|
+
* Taux de remise
|
|
2199
|
+
*/
|
|
2200
|
+
taux?: number;
|
|
2201
|
+
};
|
|
2202
|
+
} & DemandePaiementRequestBase) | ({
|
|
2203
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2204
|
+
/**
|
|
2205
|
+
* Date limite de paiement de la facture (ex "A payer avant")
|
|
2206
|
+
*/
|
|
2207
|
+
dateLimitePaiement: string;
|
|
2208
|
+
/**
|
|
2209
|
+
* Date limite de réponse
|
|
2210
|
+
*/
|
|
2211
|
+
dateLimiteReponse?: string;
|
|
2212
|
+
} & DemandePaiementRequestBase) | ({
|
|
2213
|
+
categorie: DemandePaiementRequest.categorie;
|
|
2214
|
+
/**
|
|
2215
|
+
* Date limite de paiement
|
|
2216
|
+
*/
|
|
2217
|
+
dateLimitePaiement: string;
|
|
2218
|
+
/**
|
|
2219
|
+
* Date limite de réponse
|
|
2220
|
+
*/
|
|
2221
|
+
dateLimiteReponse: string;
|
|
2222
|
+
/**
|
|
2223
|
+
* Remise appliquée sur la facture - la remise n'est pas appliquée après la date limite de paiement
|
|
2224
|
+
*/
|
|
2225
|
+
remise?: {
|
|
2226
|
+
montant?: number;
|
|
2227
|
+
taux?: number;
|
|
2228
|
+
};
|
|
2229
|
+
} & DemandePaiementRequestBase));
|
|
2230
|
+
declare namespace DemandePaiementRequest {
|
|
2231
|
+
enum categorie {
|
|
2232
|
+
_500 = "500"
|
|
2233
|
+
}
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
type DemandePaiementConfirmationReponse = (DemandePaiementRequest & {
|
|
2237
|
+
/**
|
|
2238
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
2239
|
+
* - `ANNULE` si la demande n'est pas envoye pour une raison
|
|
2240
|
+
*
|
|
2241
|
+
*/
|
|
2242
|
+
statut?: DemandePaiementConfirmationReponse.statut;
|
|
2243
|
+
statutRaison?: DemandePaiementConfirmationAnnulationRaison;
|
|
2244
|
+
/**
|
|
2245
|
+
* Le nom du payeur
|
|
2246
|
+
*/
|
|
2247
|
+
payeurNom?: string;
|
|
2248
|
+
/**
|
|
2249
|
+
* Le pays de residence du payeur
|
|
2250
|
+
*/
|
|
2251
|
+
payeurPays?: string;
|
|
2252
|
+
/**
|
|
2253
|
+
* Date d'envoie de la demande: date et heure à laquelle la demande de paiement est envoyée par le PSP
|
|
2254
|
+
*
|
|
2255
|
+
*/
|
|
2256
|
+
dateEnvoie?: string;
|
|
2257
|
+
/**
|
|
2258
|
+
* Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
|
|
2259
|
+
* Il s'agit de la date et heure à laquelle le client a confirmé la demande.
|
|
2260
|
+
*
|
|
2261
|
+
*/
|
|
2262
|
+
dateConfirmation?: string;
|
|
2263
|
+
});
|
|
2264
|
+
declare namespace DemandePaiementConfirmationReponse {
|
|
2265
|
+
/**
|
|
2266
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
2267
|
+
* - `ANNULE` si la demande n'est pas envoye pour une raison
|
|
2268
|
+
*
|
|
2269
|
+
*/
|
|
2270
|
+
enum statut {
|
|
2271
|
+
ENVOYE = "ENVOYE",
|
|
2272
|
+
ANNULE = "ANNULE"
|
|
2273
|
+
}
|
|
2274
|
+
}
|
|
2275
|
+
|
|
2276
|
+
/**
|
|
2277
|
+
* Confirmation de la demande de paiement
|
|
2278
|
+
*/
|
|
2279
|
+
type DemandePaiementConfirmationRequestAccepter = {
|
|
2280
|
+
/**
|
|
2281
|
+
* La décision à `true` indique la confirmation de la demande de paiement.
|
|
2282
|
+
*/
|
|
2283
|
+
decision: boolean;
|
|
2284
|
+
};
|
|
2285
|
+
|
|
2286
|
+
/**
|
|
2287
|
+
* Annulation de la demande de paiement
|
|
2288
|
+
*/
|
|
2289
|
+
type DemandePaiementConfirmationRequestRejeter = {
|
|
2290
|
+
/**
|
|
2291
|
+
* La décision à `false` indique l'annulation de la demande de paiement.
|
|
2292
|
+
*/
|
|
2293
|
+
decision: boolean;
|
|
2294
|
+
};
|
|
2295
|
+
|
|
2296
|
+
type DemandePaiementConfirmationRequest = (DemandePaiementConfirmationRequestAccepter | DemandePaiementConfirmationRequestRejeter);
|
|
2297
|
+
|
|
2298
|
+
/**
|
|
2299
|
+
*
|
|
2300
|
+
* **Raisons de rejet ou d'echec des demandes de paiement :**
|
|
2301
|
+
* - **BE23** (Alias invalid) : L'alias du payeur n'existe pas ou est invalide.
|
|
2302
|
+
* - **DU03** (Duplicate Transaction) : Le txId n'est pas unique
|
|
2303
|
+
*
|
|
2304
|
+
* - **AC04** (Closed Account Number) : Le compte du client payeur est clôturé.
|
|
2305
|
+
* - **AC06** (Blocked Account) : Le compte du client payeur est bloqué.
|
|
2306
|
+
* - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
|
|
2307
|
+
* - **AG03** (Transaction Not Supported) : Le client n'est pas autorisé à payer en mode débit différé.
|
|
2308
|
+
* - **AG10** (Agent Suspended) : Le participant payeur est suspendu.
|
|
2309
|
+
* - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
|
|
2310
|
+
* - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
|
|
2311
|
+
* - **AM02** (Not Allowed Amount) : Le montant spécifique de la transaction dépasse le montant maximum autorisé.
|
|
2312
|
+
* - **AM09** (Wrong Amount) : Le montant reçu ne correspond pas au montant convenu ou attendu.
|
|
2313
|
+
* - **AM14** (Amount Exceeds Agreed Limit) : Le montant de la transaction fait dépasser le plafond de débit différé du client.
|
|
2314
|
+
* - **APAR** (Already Paid RTP) : Le paiement demandé a déjà été effectué par le payeur.
|
|
2315
|
+
* - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
|
|
2316
|
+
* - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
|
|
2317
|
+
* - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
|
|
2318
|
+
* - **BE05** (Unrecognised Initiating Party) : La partie qui a initié le message n'est pas reconnue par le client final.
|
|
2319
|
+
* - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
|
|
2320
|
+
* - **RR07** (Remittance Information Invalid) : Le justificatif de la demande de paiement est invalide (par exemple, le numéro de facture est invalide).
|
|
2321
|
+
*
|
|
2322
|
+
*/
|
|
2323
|
+
declare enum DemandePaiementStatutRaison {
|
|
2324
|
+
BE23 = "BE23",
|
|
2325
|
+
DU03 = "DU03",
|
|
2326
|
+
AC04 = "AC04",
|
|
2327
|
+
AC06 = "AC06",
|
|
2328
|
+
AEXR = "AEXR",
|
|
2329
|
+
AG03 = "AG03",
|
|
2330
|
+
AG10 = "AG10",
|
|
2331
|
+
AG11 = "AG11",
|
|
2332
|
+
ALAC = "ALAC",
|
|
2333
|
+
AM02 = "AM02",
|
|
2334
|
+
AM09 = "AM09",
|
|
2335
|
+
AM14 = "AM14",
|
|
2336
|
+
APAR = "APAR",
|
|
2337
|
+
ARFR = "ARFR",
|
|
2338
|
+
ARJR = "ARJR",
|
|
2339
|
+
BE01 = "BE01",
|
|
2340
|
+
BE05 = "BE05",
|
|
2341
|
+
FR01 = "FR01",
|
|
2342
|
+
RR07 = "RR07"
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2345
|
+
type DemandePaiementConsultationReponse = {
|
|
2346
|
+
/**
|
|
2347
|
+
* Identifiant de la demande de paiement dans le SI du client
|
|
2348
|
+
*/
|
|
2349
|
+
txId?: string;
|
|
2350
|
+
/**
|
|
2351
|
+
* Categorie de la demande de paiement
|
|
2352
|
+
*/
|
|
2353
|
+
categorie?: DemandePaiementConsultationReponse.categorie;
|
|
2354
|
+
/**
|
|
2355
|
+
* L'alias de compte dans lequel le client payé souhaite recevoir les paiements
|
|
2356
|
+
*/
|
|
2357
|
+
payeAlias?: string;
|
|
2358
|
+
/**
|
|
2359
|
+
* L'URL du logo du business ou d'un produit du business qui sera affiché au client payeur
|
|
2360
|
+
*/
|
|
2361
|
+
logoUrl?: string;
|
|
2362
|
+
/**
|
|
2363
|
+
* Alias de compte du client payeur à qui est adressée la demande
|
|
2364
|
+
*/
|
|
2365
|
+
payeurAlias?: string;
|
|
2366
|
+
/**
|
|
2367
|
+
* Lorsque le PSP reçoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
|
|
2368
|
+
*
|
|
2369
|
+
* L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les résultats de la recherche d'alias pour confirmation:
|
|
2370
|
+
*
|
|
2371
|
+
* * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le résultat de la recherche d'alias au client et attendre une confirmation
|
|
2372
|
+
* * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
|
|
2373
|
+
*
|
|
2374
|
+
*/
|
|
2375
|
+
confirmation?: boolean;
|
|
2376
|
+
/**
|
|
2377
|
+
* Remise appliquée sur la demande de paiement
|
|
2378
|
+
*/
|
|
2379
|
+
remise?: {
|
|
2380
|
+
/**
|
|
2381
|
+
* Le montant de la remise
|
|
2382
|
+
*/
|
|
2383
|
+
montant?: number;
|
|
2384
|
+
/**
|
|
2385
|
+
* Le taux de la remise
|
|
2386
|
+
*/
|
|
2387
|
+
taux?: number;
|
|
2388
|
+
};
|
|
2389
|
+
/**
|
|
2390
|
+
* Indique si le client peut acheter maintenant et payer plus tard.
|
|
2391
|
+
*/
|
|
2392
|
+
debitDiffere?: boolean;
|
|
2393
|
+
/**
|
|
2394
|
+
* Le montant total du paiement à effectuer
|
|
2395
|
+
*/
|
|
2396
|
+
montant?: number;
|
|
2397
|
+
/**
|
|
2398
|
+
* Le montant de l'achat
|
|
2399
|
+
*/
|
|
2400
|
+
montantAchat?: number;
|
|
2401
|
+
/**
|
|
2402
|
+
* Le montant du retrait
|
|
2403
|
+
*/
|
|
2404
|
+
montantRetrait?: number;
|
|
2405
|
+
/**
|
|
2406
|
+
* Les frais de retrait
|
|
2407
|
+
*/
|
|
2408
|
+
montantFrais?: number;
|
|
2409
|
+
/**
|
|
2410
|
+
* Le motif de la demande de paiement
|
|
2411
|
+
*/
|
|
2412
|
+
motif?: string;
|
|
2413
|
+
/**
|
|
2414
|
+
* Le numéro / la référence du document justificatif
|
|
2415
|
+
*/
|
|
2416
|
+
refDocNumero?: string;
|
|
2417
|
+
refDocType?: RefDocType;
|
|
2418
|
+
/**
|
|
2419
|
+
* - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias,
|
|
2420
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
2421
|
+
* - `IRREVOCABLE` si le payeur a accepté la demande
|
|
2422
|
+
* - `REJETE` si le payeur rejète la demande
|
|
2423
|
+
*
|
|
2424
|
+
*/
|
|
2425
|
+
statut?: DemandePaiementConsultationReponse.statut;
|
|
2426
|
+
statutRaison?: DemandePaiementStatutRaison;
|
|
2427
|
+
/**
|
|
2428
|
+
* Le nom du payeur
|
|
2429
|
+
*/
|
|
2430
|
+
payeurNom?: string;
|
|
2431
|
+
/**
|
|
2432
|
+
* Le pays de residence du payeur
|
|
2433
|
+
*/
|
|
2434
|
+
payeurPays?: string;
|
|
2435
|
+
/**
|
|
2436
|
+
* Date limite de paiement
|
|
2437
|
+
*/
|
|
2438
|
+
dateLimitePaiement?: string;
|
|
2439
|
+
/**
|
|
2440
|
+
* Date limite de réponse
|
|
2441
|
+
*/
|
|
2442
|
+
dateLimiteReponse?: string;
|
|
2443
|
+
/**
|
|
2444
|
+
* Date de la demande de paiement
|
|
2445
|
+
*
|
|
2446
|
+
*/
|
|
2447
|
+
dateDemande?: string;
|
|
2448
|
+
/**
|
|
2449
|
+
* Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
|
|
2450
|
+
* Il s'agit de la date et heure à laquelle le client a confirmé la demande.
|
|
2451
|
+
*
|
|
2452
|
+
*/
|
|
2453
|
+
dateConfirmation?: string;
|
|
2454
|
+
/**
|
|
2455
|
+
* Date d'envoi de la demande: date et heure à laquelle la demande de paiement est envoyée par le PSP
|
|
2456
|
+
*
|
|
2457
|
+
*/
|
|
2458
|
+
dateEnvoi?: string;
|
|
2459
|
+
/**
|
|
2460
|
+
* Date à laquelle le payeur à repondu à la demande de paiement
|
|
2461
|
+
*
|
|
2462
|
+
*/
|
|
2463
|
+
dateReponse?: string;
|
|
2464
|
+
/**
|
|
2465
|
+
* Date à laquelle le paiement accepté est irrévocable
|
|
2466
|
+
*
|
|
2467
|
+
*/
|
|
2468
|
+
dateIrrevocabilite?: string;
|
|
2469
|
+
};
|
|
2470
|
+
declare namespace DemandePaiementConsultationReponse {
|
|
2471
|
+
/**
|
|
2472
|
+
* Categorie de la demande de paiement
|
|
2473
|
+
*/
|
|
2474
|
+
enum categorie {
|
|
2475
|
+
_631 = "631",
|
|
2476
|
+
_500 = "500",
|
|
2477
|
+
_521 = "521",
|
|
2478
|
+
_401 = "401"
|
|
2479
|
+
}
|
|
2480
|
+
/**
|
|
2481
|
+
* - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias,
|
|
2482
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
2483
|
+
* - `IRREVOCABLE` si le payeur a accepté la demande
|
|
2484
|
+
* - `REJETE` si le payeur rejète la demande
|
|
2485
|
+
*
|
|
2486
|
+
*/
|
|
2487
|
+
enum statut {
|
|
2488
|
+
INITIE = "INITIE",
|
|
2489
|
+
ENVOYE = "ENVOYE",
|
|
2490
|
+
IRREVOCABLE = "IRREVOCABLE",
|
|
2491
|
+
REJETE = "REJETE"
|
|
2492
|
+
}
|
|
2493
|
+
}
|
|
2494
|
+
|
|
2495
|
+
/**
|
|
2496
|
+
* Confirmation de la demande de paiement en masse
|
|
2497
|
+
*/
|
|
2498
|
+
type DemandePaiementEnMasseConfirmationRequestAccepter = {
|
|
2499
|
+
/**
|
|
2500
|
+
* La décision à `true` indique la confirmation de la demande de paiement en masse.
|
|
2501
|
+
*/
|
|
2502
|
+
decision: boolean;
|
|
2503
|
+
};
|
|
2504
|
+
|
|
2505
|
+
/**
|
|
2506
|
+
* Annulation de la demande de paiement en masse
|
|
2507
|
+
*/
|
|
2508
|
+
type DemandePaiementEnMasseConfirmationRequestRejeter = {
|
|
2509
|
+
/**
|
|
2510
|
+
* La décision à `false` indique l'annulation de la demande de paiement en masse.
|
|
2511
|
+
*/
|
|
2512
|
+
decision: boolean;
|
|
2513
|
+
};
|
|
2514
|
+
|
|
2515
|
+
type DemandePaiementEnMasseConfirmationRequest = (DemandePaiementEnMasseConfirmationRequestAccepter | DemandePaiementEnMasseConfirmationRequestRejeter);
|
|
2516
|
+
|
|
2517
|
+
type DemandePaiementEnMasseRequest = {
|
|
2518
|
+
/**
|
|
2519
|
+
* L'alias de compte dans lequel le client souhaite recevoir les paiements
|
|
2520
|
+
*
|
|
2521
|
+
*/
|
|
2522
|
+
payeAlias: string;
|
|
2523
|
+
/**
|
|
2524
|
+
* Indique si une confirmation du business est requise avant d'envoyer les demandes de paiement.
|
|
2525
|
+
*
|
|
2526
|
+
* - `true` : Le PSP effectue la recherche d'alias pour tous les payeurs, retourne leurs noms et pays, et attend la confirmation du business avant d'envoyer les demandes de paiement.
|
|
2527
|
+
* - `false` : Le PSP envoie directement les demandes de paiement sans attendre de confirmation.
|
|
2528
|
+
*
|
|
2529
|
+
* **Note :** Si `true`, le business doit confirmer via `PUT /demandes-paiements-groupes/{instructionId}/confirmations` dans un délai adaptatif (24h, 48h ou 72h selon le nombre de transactions).
|
|
2530
|
+
*
|
|
2531
|
+
*/
|
|
2532
|
+
confirmation?: boolean;
|
|
2533
|
+
/**
|
|
2534
|
+
* Identifiant de la demande de paiement en masse dans le SI du client
|
|
2535
|
+
*/
|
|
2536
|
+
instructionId: string;
|
|
2537
|
+
/**
|
|
2538
|
+
* Le motif commun à toutes les demandes de paiement du groupe.
|
|
2539
|
+
* Si toutes les demandes de paiement du groupe ont le même motif, ce champ peut être utilisé pour optimiser la taille du lot.
|
|
2540
|
+
* Dans le cas contraire, chaque demande de paiement doit avoir son propre motif.
|
|
2541
|
+
*
|
|
2542
|
+
*/
|
|
2543
|
+
motif?: string;
|
|
2544
|
+
transactions: Array<{
|
|
2545
|
+
/**
|
|
2546
|
+
* Identifiant de la transaction dans le SI du client
|
|
2547
|
+
*/
|
|
2548
|
+
txId: string;
|
|
2549
|
+
/**
|
|
2550
|
+
* L'alias du client payeur.
|
|
2551
|
+
*/
|
|
2552
|
+
payeurAlias: string;
|
|
2553
|
+
/**
|
|
2554
|
+
* Le montant à payer
|
|
2555
|
+
*/
|
|
2556
|
+
montant: number;
|
|
2557
|
+
/**
|
|
2558
|
+
* Remise appliquée sur la facture - la remise n'est pas appliquée après la date limite de paiement
|
|
2559
|
+
*/
|
|
2560
|
+
remise?: {
|
|
2561
|
+
montant?: number;
|
|
2562
|
+
taux?: number;
|
|
2563
|
+
};
|
|
2564
|
+
/**
|
|
2565
|
+
* La date limite à laquelle le payeur doit avoir effectué le paiement.
|
|
2566
|
+
*
|
|
2567
|
+
* Dans le cas d'une demande de paiement de facture, il s'agit en général de la date indiquée avec la mention "À payer avant".
|
|
2568
|
+
*
|
|
2569
|
+
*/
|
|
2570
|
+
dateLimitePaiement: string;
|
|
2571
|
+
/**
|
|
2572
|
+
* C'est la date limite avant laquelle une réponse doit être fournie par le payeur.
|
|
2573
|
+
* La demande de paiement expire à cette date. Le client payé ne peut pas envoyer
|
|
2574
|
+
*
|
|
2575
|
+
*/
|
|
2576
|
+
dateLimiteReponse?: string;
|
|
2577
|
+
/**
|
|
2578
|
+
* Le motif de la demande de paiement.
|
|
2579
|
+
* Si toutes les demandes de paiement du groupe ont le même motif, ce champ doit être omis, et le motif du groupe doit être utilisé.
|
|
2580
|
+
*
|
|
2581
|
+
*/
|
|
2582
|
+
motif?: string;
|
|
2583
|
+
/**
|
|
2584
|
+
* Le numéro / la référence du document justificatif
|
|
2585
|
+
*/
|
|
2586
|
+
refDocNumero?: string;
|
|
2587
|
+
refDocType?: RefDocType;
|
|
2588
|
+
}>;
|
|
2589
|
+
};
|
|
2590
|
+
|
|
2591
|
+
type DemandePaiementEnMasseStatutReponse = {
|
|
2592
|
+
/**
|
|
2593
|
+
* Identifiant de la demande de paiement en masse
|
|
2594
|
+
*/
|
|
2595
|
+
instructionId?: string;
|
|
2596
|
+
/**
|
|
2597
|
+
* Statut global de la demande de paiement en masse:
|
|
2598
|
+
* - `INITIE`: Créée avec confirmation demandée, en attente de confirmation
|
|
2599
|
+
* - `CONFIRME`: Confirmée par le business ( pour savoir si le traitement est terminé, vérifiez que `transactionsIrrevocables + transactionsRejetees = transactionsTotal`)
|
|
2600
|
+
* - `ANNULE`: Annulée par le business
|
|
2601
|
+
*
|
|
2602
|
+
* **Évolution selon le mode de création :**
|
|
2603
|
+
* - Si créée **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
|
|
2604
|
+
* - Si créée **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
|
|
2605
|
+
*
|
|
2606
|
+
*/
|
|
2607
|
+
statut?: DemandePaiementEnMasseStatutReponse.statut;
|
|
2608
|
+
/**
|
|
2609
|
+
* Date d'expiration de la confirmation (délai adaptatif selon nombre de transactions).
|
|
2610
|
+
* Présent uniquement si statut = INITIE.
|
|
2611
|
+
*
|
|
2612
|
+
* Délais :
|
|
2613
|
+
* - 1 à 500 transactions : 24 heures
|
|
2614
|
+
* - 501 à 1000 transactions : 48 heures
|
|
2615
|
+
* - Plus de 1000 transactions : 72 heures
|
|
2616
|
+
*
|
|
2617
|
+
*/
|
|
2618
|
+
dateExpiration?: string;
|
|
2619
|
+
/**
|
|
2620
|
+
* Nombre total de transactions dans la demande de paiement en masse
|
|
2621
|
+
*/
|
|
2622
|
+
transactionsTotal?: number;
|
|
2623
|
+
/**
|
|
2624
|
+
* Nombre de transactions à l'état `INITIE` (validées avec succès, prêtes à être envoyées).
|
|
2625
|
+
*
|
|
2626
|
+
* Si créée avec `confirmation: true`, ces transactions ont passé toutes les validations :
|
|
2627
|
+
* - txId unique (pas de duplication)
|
|
2628
|
+
* - Alias du payeur valide (recherche d'alias réussie)
|
|
2629
|
+
* - Nom et pays du payeur disponibles
|
|
2630
|
+
*
|
|
2631
|
+
* Ce sont ces transactions qui seront envoyées lors de la confirmation.
|
|
2632
|
+
*
|
|
2633
|
+
* **Vérification de fin de validation :** La validation est terminée quand `transactionsInitiees + transactionsRejetees = transactionsTotal`.
|
|
2634
|
+
*
|
|
2635
|
+
*/
|
|
2636
|
+
transactionsInitiees?: number;
|
|
2637
|
+
/**
|
|
2638
|
+
* Nombre de transactions à l'état `ENVOYE` (demandes envoyées au payeur)
|
|
2639
|
+
*/
|
|
2640
|
+
transactionsEnvoyees?: number;
|
|
2641
|
+
/**
|
|
2642
|
+
* Nombre de transactions à l'état `IRREVOCABLE` (demandes acceptées et payées par le payeur)
|
|
2643
|
+
*/
|
|
2644
|
+
transactionsIrrevocables?: number;
|
|
2645
|
+
/**
|
|
2646
|
+
* Nombre de transactions à l'état `REJETE` (échecs de validation ou refus du payeur).
|
|
2647
|
+
*
|
|
2648
|
+
* Comprend :
|
|
2649
|
+
* - Rejets de validation (avant envoi) : BE23 (alias invalide), DU03 (txId dupliqué)
|
|
2650
|
+
* - Rejets d'envoi (après confirmation) : Alias du payeur indisponible, etc.
|
|
2651
|
+
* - Refus du payeur (le payeur a rejeté la demande)
|
|
2652
|
+
*
|
|
2653
|
+
* **Note :** Les transactions rejetées à la validation ne sont jamais envoyées, même si le bulk est confirmé.
|
|
2654
|
+
*
|
|
2655
|
+
*/
|
|
2656
|
+
transactionsRejetees?: number;
|
|
2657
|
+
/**
|
|
2658
|
+
* Date de création de la demande de paiement en masse (date de la demande)
|
|
2659
|
+
*/
|
|
2660
|
+
dateDemande?: string;
|
|
2661
|
+
/**
|
|
2662
|
+
* Date de confirmation par le business (date d'acceptation de la demande).
|
|
2663
|
+
* Présent uniquement si statut = CONFIRME.
|
|
2664
|
+
*
|
|
2665
|
+
* - Si créée avec confirmation: Date du PUT /confirmations avec decision: true
|
|
2666
|
+
* - Si créée sans confirmation: Correspond à dateDemande (confirmation automatique)
|
|
2667
|
+
*
|
|
2668
|
+
*/
|
|
2669
|
+
dateConfirmation?: string;
|
|
2670
|
+
};
|
|
2671
|
+
declare namespace DemandePaiementEnMasseStatutReponse {
|
|
2672
|
+
/**
|
|
2673
|
+
* Statut global de la demande de paiement en masse:
|
|
2674
|
+
* - `INITIE`: Créée avec confirmation demandée, en attente de confirmation
|
|
2675
|
+
* - `CONFIRME`: Confirmée par le business ( pour savoir si le traitement est terminé, vérifiez que `transactionsIrrevocables + transactionsRejetees = transactionsTotal`)
|
|
2676
|
+
* - `ANNULE`: Annulée par le business
|
|
2677
|
+
*
|
|
2678
|
+
* **Évolution selon le mode de création :**
|
|
2679
|
+
* - Si créée **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
|
|
2680
|
+
* - Si créée **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
|
|
2681
|
+
*
|
|
2682
|
+
*/
|
|
2683
|
+
enum statut {
|
|
2684
|
+
INITIE = "INITIE",
|
|
2685
|
+
CONFIRME = "CONFIRME",
|
|
2686
|
+
ANNULE = "ANNULE"
|
|
2687
|
+
}
|
|
2688
|
+
}
|
|
2689
|
+
|
|
2690
|
+
type DemandePaiementListeItem = {
|
|
2691
|
+
/**
|
|
2692
|
+
* Identifiant de la demande de paiement dans le SI du client
|
|
2693
|
+
*/
|
|
2694
|
+
txId?: string;
|
|
2695
|
+
/**
|
|
2696
|
+
* Categorie de la demande de paiement
|
|
2697
|
+
*/
|
|
2698
|
+
categorie?: DemandePaiementListeItem.categorie;
|
|
2699
|
+
/**
|
|
2700
|
+
* L'alias de compte dans lequel le client payé souhaite recevoir les paiements
|
|
2701
|
+
*/
|
|
2702
|
+
payeAlias?: string;
|
|
2703
|
+
/**
|
|
2704
|
+
* L'URL du logo du business ou d'un produit du business qui sera affiché au client payeur
|
|
2705
|
+
*/
|
|
2706
|
+
logoUrl?: string;
|
|
2707
|
+
/**
|
|
2708
|
+
* Alias de compte du client payeur à qui est adressée la demande
|
|
2709
|
+
*/
|
|
2710
|
+
payeurAlias?: string;
|
|
2711
|
+
/**
|
|
2712
|
+
* Lorsque le PSP reçoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
|
|
2713
|
+
*
|
|
2714
|
+
* L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les résultats de la recherche d'alias pour confirmation:
|
|
2715
|
+
*
|
|
2716
|
+
* * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le résultat de la recherche d'alias au client et attendre une confirmation
|
|
2717
|
+
* * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
|
|
2718
|
+
*
|
|
2719
|
+
*/
|
|
2720
|
+
confirmation?: boolean;
|
|
2721
|
+
/**
|
|
2722
|
+
* Remise appliquée sur la demande de paiement
|
|
2723
|
+
*/
|
|
2724
|
+
remise?: {
|
|
2725
|
+
/**
|
|
2726
|
+
* Le montant de la remise
|
|
2727
|
+
*/
|
|
2728
|
+
montant?: number;
|
|
2729
|
+
/**
|
|
2730
|
+
* Le taux de la remise
|
|
2731
|
+
*/
|
|
2732
|
+
taux?: number;
|
|
2733
|
+
};
|
|
2734
|
+
/**
|
|
2735
|
+
* Indique si le client peut acheter maintenant et payer plus tard.
|
|
2736
|
+
*/
|
|
2737
|
+
debitDiffere?: boolean;
|
|
2738
|
+
/**
|
|
2739
|
+
* Le montant total du paiement à effectuer
|
|
2740
|
+
*/
|
|
2741
|
+
montant?: number;
|
|
2742
|
+
/**
|
|
2743
|
+
* Le montant de l'achat
|
|
2744
|
+
*/
|
|
2745
|
+
montantAchat?: number;
|
|
2746
|
+
/**
|
|
2747
|
+
* Le montant du retrait
|
|
2748
|
+
*/
|
|
2749
|
+
montantRetrait?: number;
|
|
2750
|
+
/**
|
|
2751
|
+
* Les frais de retrait
|
|
2752
|
+
*/
|
|
2753
|
+
montantFrais?: number;
|
|
2754
|
+
/**
|
|
2755
|
+
* Le motif de la demande de paiement
|
|
2756
|
+
*/
|
|
2757
|
+
motif?: string;
|
|
2758
|
+
/**
|
|
2759
|
+
* Le numéro / la référence du document justificatif
|
|
2760
|
+
*/
|
|
2761
|
+
refDocNumero?: string;
|
|
2762
|
+
refDocType?: RefDocType;
|
|
2763
|
+
/**
|
|
2764
|
+
* - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
|
|
2765
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
2766
|
+
* - `IRREVOCABLE` si le payeur a accepté la demande
|
|
2767
|
+
* - `REJETE` si le payeur rejette la demande
|
|
2768
|
+
*
|
|
2769
|
+
*/
|
|
2770
|
+
statut?: DemandePaiementListeItem.statut;
|
|
2771
|
+
statutRaison?: DemandePaiementStatutRaison;
|
|
2772
|
+
/**
|
|
2773
|
+
* Identifiant unique de bout en bout de la transaction
|
|
2774
|
+
*/
|
|
2775
|
+
end2endId?: string;
|
|
2776
|
+
/**
|
|
2777
|
+
* Le nom du payeur
|
|
2778
|
+
*/
|
|
2779
|
+
payeurNom?: string;
|
|
2780
|
+
/**
|
|
2781
|
+
* Le pays de residence du payeur
|
|
2782
|
+
*/
|
|
2783
|
+
payeurPays?: string;
|
|
2784
|
+
/**
|
|
2785
|
+
* Le nom du payé (Retourné dans le cas d'un RTP reçu)
|
|
2786
|
+
*/
|
|
2787
|
+
payeNom?: string;
|
|
2788
|
+
/**
|
|
2789
|
+
* Le pays de residence du payé (Retourné dans le cas d'un RTP reçu)
|
|
2790
|
+
*/
|
|
2791
|
+
payePays?: string;
|
|
2792
|
+
/**
|
|
2793
|
+
* Date limite de paiement
|
|
2794
|
+
*/
|
|
2795
|
+
dateLimitePaiement?: string;
|
|
2796
|
+
/**
|
|
2797
|
+
* Date limite de réponse
|
|
2798
|
+
*/
|
|
2799
|
+
dateLimiteReponse?: string;
|
|
2800
|
+
/**
|
|
2801
|
+
* Date de la demande de paiement
|
|
2802
|
+
*
|
|
2803
|
+
*/
|
|
2804
|
+
dateDemande?: string;
|
|
2805
|
+
/**
|
|
2806
|
+
* Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
|
|
2807
|
+
* Il s'agit de la date et heure à laquelle le client a confirmé la demande.
|
|
2808
|
+
*
|
|
2809
|
+
*/
|
|
2810
|
+
dateConfirmation?: string;
|
|
2811
|
+
/**
|
|
2812
|
+
* Date d'envoi de la demande: date et heure à laquelle la demande de paiement est envoyée par le PSP
|
|
2813
|
+
*
|
|
2814
|
+
*/
|
|
2815
|
+
dateEnvoi?: string;
|
|
2816
|
+
/**
|
|
2817
|
+
* Date à laquelle le payeur à repondu à la demande de paiement
|
|
2818
|
+
*
|
|
2819
|
+
*/
|
|
2820
|
+
dateReponse?: string;
|
|
2821
|
+
/**
|
|
2822
|
+
* Date à laquelle le paiement accepté est irrévocable
|
|
2823
|
+
*
|
|
2824
|
+
*/
|
|
2825
|
+
dateIrrevocabilite?: string;
|
|
2826
|
+
};
|
|
2827
|
+
declare namespace DemandePaiementListeItem {
|
|
2828
|
+
/**
|
|
2829
|
+
* Categorie de la demande de paiement
|
|
2830
|
+
*/
|
|
2831
|
+
enum categorie {
|
|
2832
|
+
_631 = "631",
|
|
2833
|
+
_500 = "500",
|
|
2834
|
+
_521 = "521",
|
|
2835
|
+
_401 = "401"
|
|
2836
|
+
}
|
|
2837
|
+
/**
|
|
2838
|
+
* - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
|
|
2839
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
2840
|
+
* - `IRREVOCABLE` si le payeur a accepté la demande
|
|
2841
|
+
* - `REJETE` si le payeur rejette la demande
|
|
2842
|
+
*
|
|
2843
|
+
*/
|
|
2844
|
+
enum statut {
|
|
2845
|
+
INITIE = "INITIE",
|
|
2846
|
+
ENVOYE = "ENVOYE",
|
|
2847
|
+
IRREVOCABLE = "IRREVOCABLE",
|
|
2848
|
+
REJETE = "REJETE"
|
|
2849
|
+
}
|
|
2850
|
+
}
|
|
2851
|
+
|
|
2852
|
+
type DemandePaiementListe = {
|
|
2853
|
+
data: Array<DemandePaiementListeItem>;
|
|
2854
|
+
meta: {
|
|
2855
|
+
/**
|
|
2856
|
+
* Nombre total de demandes de paiement correspondant aux critères
|
|
2857
|
+
*/
|
|
2858
|
+
total?: number;
|
|
2859
|
+
/**
|
|
2860
|
+
* Nombre d'éléments par page
|
|
2861
|
+
*/
|
|
2862
|
+
size?: number;
|
|
2863
|
+
/**
|
|
2864
|
+
* Identifiant de la page actuelle
|
|
2865
|
+
*/
|
|
2866
|
+
page?: string;
|
|
2867
|
+
/**
|
|
2868
|
+
* Identifiant de la page suivante
|
|
2869
|
+
*/
|
|
2870
|
+
next?: string;
|
|
2871
|
+
/**
|
|
2872
|
+
* Identifiant de la page précédente
|
|
2873
|
+
*/
|
|
2874
|
+
prev?: string;
|
|
2875
|
+
};
|
|
2876
|
+
};
|
|
2877
|
+
|
|
2878
|
+
/**
|
|
2879
|
+
* Catégorie de la demande de paiement
|
|
2880
|
+
* - `500` Demande de Paiement marchand sur site
|
|
2881
|
+
* - `521` Demande de Paiement e-commerce immédiat
|
|
2882
|
+
* - `401` Autres demandes de paiement de facture
|
|
2883
|
+
*
|
|
2884
|
+
*/
|
|
2885
|
+
declare enum DemandePaiementRequestCategorie {
|
|
2886
|
+
_500 = "500",
|
|
2887
|
+
_521 = "521",
|
|
2888
|
+
_401 = "401"
|
|
2889
|
+
}
|
|
2890
|
+
|
|
2891
|
+
/**
|
|
2892
|
+
* - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
|
|
2893
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
2894
|
+
* - `IRREVOCABLE` si le payeur a accepté la demande
|
|
2895
|
+
* - `REJETE` si le payeur rejette la demande
|
|
2896
|
+
*
|
|
2897
|
+
*/
|
|
2898
|
+
declare enum DemandePaiementStatut {
|
|
2899
|
+
INITIE = "INITIE",
|
|
2900
|
+
ENVOYE = "ENVOYE",
|
|
2901
|
+
IRREVOCABLE = "IRREVOCABLE",
|
|
2902
|
+
REJETE = "REJETE"
|
|
2903
|
+
}
|
|
2904
|
+
|
|
2905
|
+
type DemandePaiementReponse = {
|
|
2906
|
+
/**
|
|
2907
|
+
* Identifiant de la demande de paiement dans le SI du client
|
|
2908
|
+
*/
|
|
2909
|
+
txId?: string;
|
|
2910
|
+
/**
|
|
2911
|
+
* Alias de compte du client payeur à qui est adressé la demande
|
|
2912
|
+
*/
|
|
2913
|
+
payeurAlias?: string;
|
|
2914
|
+
/**
|
|
2915
|
+
* L'alias de compte dans lequel le client payé souhaite recevoir les paiements
|
|
2916
|
+
*/
|
|
2917
|
+
payeAlias?: string;
|
|
2918
|
+
/**
|
|
2919
|
+
* Lorsque le PSP recoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payeur.
|
|
2920
|
+
*
|
|
2921
|
+
* L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les resultats de la recherche d'alias pour confirmation:
|
|
2922
|
+
*
|
|
2923
|
+
* * La valeur `true` de la confirmation indique au PSP qu'il doit retourner le resultat de la recherche d'alias au client et attendre une confirmation
|
|
2924
|
+
* * La valeur `false` indique qu'une confirmation n'est pas requise pour la demande, de ce fait le PSP transmet directement la demande à PI
|
|
2925
|
+
*
|
|
2926
|
+
*/
|
|
2927
|
+
confirmation?: boolean;
|
|
2928
|
+
categorie?: DemandePaiementRequestCategorie;
|
|
2929
|
+
/**
|
|
2930
|
+
* La date limite à laquelle le payeur doit avoir effectuer le paiement.
|
|
2931
|
+
* Dans le cas d'une demande de paiement de facture, il s'agit en général de la date indiquée avec la mention "A payer avant".
|
|
2932
|
+
*
|
|
2933
|
+
*/
|
|
2934
|
+
dateLimitePaiement?: string;
|
|
2935
|
+
/**
|
|
2936
|
+
* C'est la date limite avant laquelle une réponse doit être fournie par le payeur.
|
|
2937
|
+
* La demande de paiement expire à cette date. Le client payé ne peut ni accepter ni refuser après cette date.
|
|
2938
|
+
* Par défaut, la date limite de réponse est la date de la demande + 92 jours (3 mois).
|
|
2939
|
+
*
|
|
2940
|
+
*/
|
|
2941
|
+
dateLimiteReponse?: string;
|
|
2942
|
+
/**
|
|
2943
|
+
* Le montant du paiement à effectué
|
|
2944
|
+
*/
|
|
2945
|
+
montant?: number;
|
|
2946
|
+
/**
|
|
2947
|
+
* Le montant de l'achat dans le cadre d'une demande de paiement PICO
|
|
2948
|
+
*/
|
|
2949
|
+
montantAchat?: number;
|
|
2950
|
+
/**
|
|
2951
|
+
* Le montant du retrait dans le cadre d'une demande de paiement PICO ou PICASH
|
|
2952
|
+
*/
|
|
2953
|
+
montantRetrait?: number;
|
|
2954
|
+
/**
|
|
2955
|
+
* Les frais de retrait dans le cadre d'une demande de paiement PICO
|
|
2956
|
+
*/
|
|
2957
|
+
montantFrais?: number;
|
|
2958
|
+
/**
|
|
2959
|
+
* Remise appliquée pour un paiement immédiat dés réception de la demande
|
|
2960
|
+
*
|
|
2961
|
+
*/
|
|
2962
|
+
remise?: {
|
|
2963
|
+
/**
|
|
2964
|
+
* Le montant de la remise
|
|
2965
|
+
*/
|
|
2966
|
+
montant?: number;
|
|
2967
|
+
/**
|
|
2968
|
+
* Le taux de la remise
|
|
2969
|
+
*/
|
|
2970
|
+
taux?: number;
|
|
2971
|
+
};
|
|
2972
|
+
/**
|
|
2973
|
+
* Indique si le payeur peut acheter maintenant et payer plus tard.
|
|
2974
|
+
*
|
|
2975
|
+
* La valeur est true pour un paiement immédiat avec débit différé (Acheter maintenant, payer plus tard).
|
|
2976
|
+
* Dans le cas du débit différé, le participant du client payeur paye le montant demandé prenant en compte la remise.
|
|
2977
|
+
*
|
|
2978
|
+
*/
|
|
2979
|
+
debitDiffere?: boolean;
|
|
2980
|
+
/**
|
|
2981
|
+
* Le motif de la demande de paiement
|
|
2982
|
+
*/
|
|
2983
|
+
motif?: string;
|
|
2984
|
+
/**
|
|
2985
|
+
* Le numéro / la reference du document justificatif
|
|
2986
|
+
*/
|
|
2987
|
+
refDocNumero?: string;
|
|
2988
|
+
refDocType?: RefDocType;
|
|
2989
|
+
statut?: DemandePaiementStatut;
|
|
2990
|
+
statutRaison?: DemandePaiementStatutRaison;
|
|
2991
|
+
/**
|
|
2992
|
+
* Le nom du payeur.
|
|
2993
|
+
*
|
|
2994
|
+
* **Présence selon le statut :**
|
|
2995
|
+
* - `INITIE` (avec confirmation) : Présent ✅
|
|
2996
|
+
* - `ENVOYE` (sans confirmation) : Présent ✅
|
|
2997
|
+
* - `REJETE` avec BE23 ou DU03 : Absent ❌
|
|
2998
|
+
*
|
|
2999
|
+
*/
|
|
3000
|
+
payeurNom?: string;
|
|
3001
|
+
/**
|
|
3002
|
+
* Le pays de résidence du payeur.
|
|
3003
|
+
*
|
|
3004
|
+
* **Présence selon le statut :**
|
|
3005
|
+
* - `INITIE` (avec confirmation) : Présent ✅
|
|
3006
|
+
* - `ENVOYE` (sans confirmation) : Présent ✅
|
|
3007
|
+
* - `REJETE` avec BE23 ou DU03 : Absent ❌
|
|
3008
|
+
*
|
|
3009
|
+
*/
|
|
3010
|
+
payeurPays?: string;
|
|
3011
|
+
/**
|
|
3012
|
+
* Identifiant unique de bout en bout de la transaction
|
|
3013
|
+
*/
|
|
3014
|
+
end2endId?: string;
|
|
3015
|
+
/**
|
|
3016
|
+
* Date d'envoi de la demande de paiement par le business
|
|
3017
|
+
*/
|
|
3018
|
+
dateDemande?: string;
|
|
3019
|
+
/**
|
|
3020
|
+
* Date d'envoi de la demande de paiement par le participant
|
|
3021
|
+
*/
|
|
3022
|
+
dateEnvoi?: string;
|
|
3023
|
+
/**
|
|
3024
|
+
* Date de confirmation de la demande si le client avait requis la confirmation de la demande de paiement.
|
|
3025
|
+
* Il s'agit de la date et heure à laquelle le client a confirmé la demande.
|
|
3026
|
+
*
|
|
3027
|
+
*/
|
|
3028
|
+
dateConfirmation?: string;
|
|
3029
|
+
};
|
|
3030
|
+
|
|
3031
|
+
type DemandePaiementReponseRequest = ({
|
|
3032
|
+
/**
|
|
3033
|
+
* La décision à `true` indique l'acception de la demande de paiement.
|
|
3034
|
+
*/
|
|
3035
|
+
decision: boolean;
|
|
3036
|
+
} | {
|
|
3037
|
+
/**
|
|
3038
|
+
* La décision à `false` indique le rejet de la demande de paiement.
|
|
3039
|
+
*/
|
|
3040
|
+
decision: boolean;
|
|
3041
|
+
raison: DemandePaiementReponseRequest.raison;
|
|
3042
|
+
});
|
|
3043
|
+
declare namespace DemandePaiementReponseRequest {
|
|
3044
|
+
enum raison {
|
|
3045
|
+
BE05 = "BE05",
|
|
3046
|
+
AM09 = "AM09",
|
|
3047
|
+
APAR = "APAR",
|
|
3048
|
+
RR07 = "RR07",
|
|
3049
|
+
FR01 = "FR01"
|
|
3050
|
+
}
|
|
3051
|
+
}
|
|
3052
|
+
|
|
3053
|
+
type ListeMeta = {
|
|
3054
|
+
/**
|
|
3055
|
+
* total d'éléments correspondants à la recherche
|
|
3056
|
+
*/
|
|
3057
|
+
length?: number;
|
|
3058
|
+
/**
|
|
3059
|
+
* numéro ou identifiant de la page suivante
|
|
3060
|
+
*/
|
|
3061
|
+
page?: number;
|
|
3062
|
+
/**
|
|
3063
|
+
* nombre d'éléments retournés
|
|
3064
|
+
*/
|
|
3065
|
+
limit?: number;
|
|
3066
|
+
};
|
|
3067
|
+
|
|
3068
|
+
/**
|
|
3069
|
+
*
|
|
3070
|
+
* **Motifs d'annulation d'un paiement:**
|
|
3071
|
+
* - **AC03** Erreur sur le destinataire
|
|
3072
|
+
* - **AM09** Erreur sur le montant
|
|
3073
|
+
* - **SVNR** Service non rendu
|
|
3074
|
+
* - **DUPL** Transaction déjà payée
|
|
3075
|
+
* - **FRAD** Suspicion de fraude
|
|
3076
|
+
*
|
|
3077
|
+
*/
|
|
3078
|
+
declare enum PaiementAnnulationMotif {
|
|
3079
|
+
AC03 = "AC03",
|
|
3080
|
+
AM09 = "AM09",
|
|
3081
|
+
SVNR = "SVNR",
|
|
3082
|
+
DUPL = "DUPL",
|
|
3083
|
+
FRAD = "FRAD"
|
|
3084
|
+
}
|
|
3085
|
+
|
|
3086
|
+
/**
|
|
3087
|
+
*
|
|
3088
|
+
* **Raisons de rejet ou d'echec des demandes d'annulation :**
|
|
3089
|
+
* - **CUST** (Customer Decision) : Lorsque la demande d'annulation (camt.056) est rejetée par le client payé.
|
|
3090
|
+
* - **AC04** (Closed Account Number) : Le numéro de compte spécifié a été clôturé dans les livres du participant payé
|
|
3091
|
+
* - **ARDT** (Already Returned) : La transaction a déjà été annulée
|
|
3092
|
+
* - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
|
|
3093
|
+
* - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
|
|
3094
|
+
* - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
|
|
3095
|
+
* - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
|
|
3096
|
+
*
|
|
3097
|
+
*/
|
|
3098
|
+
declare enum PaiementAnnulationStatutRaison {
|
|
3099
|
+
CUST = "CUST",
|
|
3100
|
+
AC04 = "AC04",
|
|
3101
|
+
ARDT = "ARDT",
|
|
3102
|
+
AG10 = "AG10",
|
|
3103
|
+
AG11 = "AG11",
|
|
3104
|
+
FR01 = "FR01",
|
|
3105
|
+
RR04 = "RR04"
|
|
3106
|
+
}
|
|
3107
|
+
|
|
3108
|
+
type PaiementRequest = {
|
|
3109
|
+
/**
|
|
3110
|
+
* Identifiant de la transaction dans le SI du client
|
|
3111
|
+
*/
|
|
3112
|
+
txId: string;
|
|
3113
|
+
/**
|
|
3114
|
+
* Le client business a la possibilité de préciser le compte qui sera débité pour le paiement.
|
|
3115
|
+
*
|
|
3116
|
+
*/
|
|
3117
|
+
payeurAlias: string;
|
|
3118
|
+
/**
|
|
3119
|
+
* L'alias du client payé, bénéficiaire de l'ordre de paiement
|
|
3120
|
+
*/
|
|
3121
|
+
payeAlias: string;
|
|
3122
|
+
/**
|
|
3123
|
+
* Le montant du transfert à effectuer
|
|
3124
|
+
*/
|
|
3125
|
+
montant: number;
|
|
3126
|
+
/**
|
|
3127
|
+
* Le numéro / la référence du document justificatif
|
|
3128
|
+
*/
|
|
3129
|
+
refDocNumero?: string;
|
|
3130
|
+
refDocType?: RefDocType;
|
|
3131
|
+
/**
|
|
3132
|
+
* Le motif du paiement
|
|
3133
|
+
*/
|
|
3134
|
+
motif?: string;
|
|
3135
|
+
/**
|
|
3136
|
+
* Indique si le paiement executé est un paiement programmé
|
|
3137
|
+
*/
|
|
3138
|
+
programme?: boolean;
|
|
3139
|
+
};
|
|
3140
|
+
|
|
3141
|
+
/**
|
|
3142
|
+
* - `INITIE` si la confirmation du client est attendue suite à la recherche d'alias
|
|
3143
|
+
* - `ENVOYE` si les validations sont concluantes et que le PSP a envoyé la demande
|
|
3144
|
+
* - `IRREVOCABLE` si le payeur a accepté la demande
|
|
3145
|
+
* - `REJETE` si le payeur rejette la demande
|
|
3146
|
+
*
|
|
3147
|
+
*/
|
|
3148
|
+
declare enum PaiementStatut {
|
|
3149
|
+
INITIE = "INITIE",
|
|
3150
|
+
ENVOYE = "ENVOYE",
|
|
3151
|
+
IRREVOCABLE = "IRREVOCABLE",
|
|
3152
|
+
REJETE = "REJETE"
|
|
3153
|
+
}
|
|
3154
|
+
|
|
3155
|
+
/**
|
|
3156
|
+
*
|
|
3157
|
+
* **Raisons de rejet ou d'echec des paiements :**
|
|
3158
|
+
* - **BE23** (Alias invalid) : L'alias du payeur n'existe pas ou est invalide.
|
|
3159
|
+
* - **DU03** (Duplicate Transaction) : Le txId n'est pas unique
|
|
3160
|
+
*
|
|
3161
|
+
* - **AB03** (Aborted Settlement Timeout) : Message en timeout lors du règlement.
|
|
3162
|
+
* - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
|
|
3163
|
+
* - **AB08** (Offline Creditor Agent) : Le système du participant payé n'est pas accessible.
|
|
3164
|
+
* - **AB09** (Error Creditor Agent) : Transaction rejetée à cause d'une erreur chez le participant payé.
|
|
3165
|
+
* - **AC03** (Invalid Creditor Account Number) : Le numéro de compte du payé est invalide.
|
|
3166
|
+
* - **AC06** (Blocked Account) : Le compte spécifié est bloqué.
|
|
3167
|
+
* - **AC07** (Closed Creditor Account Number) : Le compte du payé est clôturé.
|
|
3168
|
+
* - **AG01** (Transaction Forbidden) : Transaction interdite sur ce type de compte.
|
|
3169
|
+
* - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
|
|
3170
|
+
* - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
|
|
3171
|
+
* - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
|
|
3172
|
+
* - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
|
|
3173
|
+
* - **AM02** (Not Allowed Amount) : Le montant de la transaction est supérieur au maximum autorisé.
|
|
3174
|
+
* - **AM04** (Insufficient Funds) : Le solde de garantie du participant payeur est insuffisant.
|
|
3175
|
+
* - **AM09** (Wrong Amount) : Le montant du transfert est différent du montant attendu.
|
|
3176
|
+
* - **AM21** (Limit Exceeded) : Le montant de la transaction dépasse les limites convenues entre le participant et le client.
|
|
3177
|
+
* - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
|
|
3178
|
+
* - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
|
|
3179
|
+
* - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
|
|
3180
|
+
* - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
|
|
3181
|
+
* - **IRNR** (Initial RTP Never Received) : La demande de paiement n'a jamais été reçue.
|
|
3182
|
+
* - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
|
|
3183
|
+
*
|
|
3184
|
+
*/
|
|
3185
|
+
declare enum PaiementStatutRaison {
|
|
3186
|
+
BE23 = "BE23",
|
|
3187
|
+
DU03 = "DU03",
|
|
3188
|
+
AB03 = "AB03",
|
|
3189
|
+
AB04 = "AB04",
|
|
3190
|
+
AB08 = "AB08",
|
|
3191
|
+
AB09 = "AB09",
|
|
3192
|
+
AC03 = "AC03",
|
|
3193
|
+
AC06 = "AC06",
|
|
3194
|
+
AC07 = "AC07",
|
|
3195
|
+
AG01 = "AG01",
|
|
3196
|
+
AG10 = "AG10",
|
|
3197
|
+
AG11 = "AG11",
|
|
3198
|
+
AEXR = "AEXR",
|
|
3199
|
+
ALAC = "ALAC",
|
|
3200
|
+
AM02 = "AM02",
|
|
3201
|
+
AM04 = "AM04",
|
|
3202
|
+
AM09 = "AM09",
|
|
3203
|
+
AM21 = "AM21",
|
|
3204
|
+
ARFR = "ARFR",
|
|
3205
|
+
ARJR = "ARJR",
|
|
3206
|
+
BE01 = "BE01",
|
|
3207
|
+
FR01 = "FR01",
|
|
3208
|
+
IRNR = "IRNR",
|
|
3209
|
+
RR04 = "RR04"
|
|
3210
|
+
}
|
|
3211
|
+
|
|
3212
|
+
/**
|
|
3213
|
+
* - `INITIE` si l'envoi du retour de fonds est initié
|
|
3214
|
+
* - `ENVOYE` si le participant a envoyé le retour de fonds
|
|
3215
|
+
* - `IRREVOCABLE` lorsque le retour de fonds est irrévocable
|
|
3216
|
+
* - `REJETE` Lorsque le retour de fonds est rejeté
|
|
3217
|
+
*
|
|
3218
|
+
*/
|
|
3219
|
+
declare enum RetourStatut {
|
|
3220
|
+
INITIE = "INITIE",
|
|
3221
|
+
ENVOYE = "ENVOYE",
|
|
3222
|
+
IRREVOCABLE = "IRREVOCABLE",
|
|
3223
|
+
REJETE = "REJETE"
|
|
3224
|
+
}
|
|
3225
|
+
|
|
3226
|
+
/**
|
|
3227
|
+
*
|
|
3228
|
+
* **Raisons de rejet ou d'echec des retours de fonds :**
|
|
3229
|
+
* - **AB03** (Aborted Settlement Timeout) : Message en timeout lors du règlement.
|
|
3230
|
+
* - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
|
|
3231
|
+
* - **AC06** (Blocked Account) : Le compte spécifié est bloqué.
|
|
3232
|
+
* - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
|
|
3233
|
+
* - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
|
|
3234
|
+
* - **AM04** (Insufficient Funds) : Le solde de garantie du participant payé est insuffisant.
|
|
3235
|
+
* - **AM09** (Wrong Amount) : Le montant du transfert est différent du montant attendu.
|
|
3236
|
+
* - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
|
|
3237
|
+
* - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
|
|
3238
|
+
*
|
|
3239
|
+
*/
|
|
3240
|
+
declare enum RetourStatutRaison {
|
|
3241
|
+
AB03 = "AB03",
|
|
3242
|
+
AB04 = "AB04",
|
|
3243
|
+
AC06 = "AC06",
|
|
3244
|
+
AG10 = "AG10",
|
|
3245
|
+
AG11 = "AG11",
|
|
3246
|
+
AM04 = "AM04",
|
|
3247
|
+
AM09 = "AM09",
|
|
3248
|
+
FR01 = "FR01",
|
|
3249
|
+
RR04 = "RR04"
|
|
3250
|
+
}
|
|
3251
|
+
|
|
3252
|
+
type Paiement = (PaiementRequest & {
|
|
3253
|
+
/**
|
|
3254
|
+
* Lorsque le PSP recoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payé.
|
|
3255
|
+
*
|
|
3256
|
+
* L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les resultats de la recherche d'alias pour confirmation:
|
|
3257
|
+
*
|
|
3258
|
+
* - La valeur `true` de la validation indique au PSP qu'il doit retourner le resultat de la recherche d'alias au client et attendre une validation avant d'effectuer le paiement.
|
|
3259
|
+
* - La valeur `false` indique qu'une validation n'est pas requise pour la demande, de ce fait, le PSP transmet la demande à PI sans attendre la validation du client business.
|
|
3260
|
+
*
|
|
3261
|
+
*/
|
|
3262
|
+
confirmation?: boolean;
|
|
3263
|
+
/**
|
|
3264
|
+
* Le nom du payé (Retourné dans le cas d'un paiement envoyé)
|
|
3265
|
+
*/
|
|
3266
|
+
payeNom?: string;
|
|
3267
|
+
/**
|
|
3268
|
+
* Le pays de residence du payé (Retourné dans le cas d'un paiement envoyé)
|
|
3269
|
+
*/
|
|
3270
|
+
payePays?: string;
|
|
3271
|
+
/**
|
|
3272
|
+
* Le nom du payeur (Retourné dans le cas d'un paiement reçu)
|
|
3273
|
+
*/
|
|
3274
|
+
payeurNom?: string;
|
|
3275
|
+
/**
|
|
3276
|
+
* Le pays de residence du payeur (Retourné dans le cas d'un paiement reçu)
|
|
3277
|
+
*/
|
|
3278
|
+
payeurPays?: string;
|
|
3279
|
+
/**
|
|
3280
|
+
* Le numéro de compte du payeur
|
|
3281
|
+
*/
|
|
3282
|
+
payeurCompte?: string;
|
|
3283
|
+
/**
|
|
3284
|
+
* Le numéro de compte du payé
|
|
3285
|
+
*/
|
|
3286
|
+
payeCompte?: string;
|
|
3287
|
+
/**
|
|
3288
|
+
* La catégorie du paiement / Canal de paiement
|
|
3289
|
+
* - `631` Demande de paiement provenant d'un particulier
|
|
3290
|
+
* - `000` Paiement par QR Code Statique
|
|
3291
|
+
* - `400` Paiement par QR Code Dynamique
|
|
3292
|
+
* - `733` Ordre de paiement via l'API Business
|
|
3293
|
+
* - `300` Via le canal USSD
|
|
3294
|
+
* - `999` Ordre de transfert bancaire
|
|
3295
|
+
* - `500` Demande de Paiement sur site
|
|
3296
|
+
* - `521` Demande de Paiement e-commerce
|
|
3297
|
+
* - `401` Autres demandes de paiement de facture
|
|
3298
|
+
*
|
|
3299
|
+
*/
|
|
3300
|
+
categorie?: Paiement.categorie;
|
|
3301
|
+
statut?: PaiementStatut;
|
|
3302
|
+
statutRaison?: PaiementStatutRaison;
|
|
3303
|
+
/**
|
|
3304
|
+
* Identifiant unique de bout en bout de la transaction
|
|
3305
|
+
*/
|
|
3306
|
+
end2endId?: string;
|
|
3307
|
+
/**
|
|
3308
|
+
* Identifiant du paiement en masse dans le SI du client
|
|
3309
|
+
*/
|
|
3310
|
+
instructionId?: string;
|
|
3311
|
+
/**
|
|
3312
|
+
* Les frais appliqués par le participant (Optionnel - dépend du modèle de facturation utilisé par le participant)
|
|
3313
|
+
*/
|
|
3314
|
+
montantFrais?: number;
|
|
3315
|
+
/**
|
|
3316
|
+
* Date de création du paiement: date et heure à laquelle le paiement a été initié par le client business.
|
|
3317
|
+
*
|
|
3318
|
+
*/
|
|
3319
|
+
dateDemande?: string;
|
|
3320
|
+
/**
|
|
3321
|
+
* Date de confirmation de la demande si le client payé avait requis la confirmation du paiement.
|
|
3322
|
+
* Il s'agit de la date et heure à laquelle le client a confirmé la transaction.
|
|
3323
|
+
*
|
|
3324
|
+
* Pour un paiement reçu, cette date correspond à la date de confirmation du paiement par le payeur.
|
|
3325
|
+
*
|
|
3326
|
+
*/
|
|
3327
|
+
dateConfirmation?: string;
|
|
3328
|
+
/**
|
|
3329
|
+
* Date d'envoi de la demande: date et heure à laquelle le paiement est envoyé par le participant (PSP)
|
|
3330
|
+
*
|
|
3331
|
+
*/
|
|
3332
|
+
dateEnvoi?: string;
|
|
3333
|
+
/**
|
|
3334
|
+
* Date à laquelle le paiement est irrévocable
|
|
3335
|
+
*
|
|
3336
|
+
*/
|
|
3337
|
+
dateIrrevocabilite?: string;
|
|
3338
|
+
/**
|
|
3339
|
+
* Date à laquelle la réponse du paiement a été reçue
|
|
3340
|
+
*
|
|
3341
|
+
*/
|
|
3342
|
+
dateReponse?: string;
|
|
3343
|
+
retourStatut?: RetourStatut;
|
|
3344
|
+
retourStatutRaison?: RetourStatutRaison;
|
|
3345
|
+
/**
|
|
3346
|
+
* Date de création du paiement: date et heure à laquelle le retour de fonds a été initié par le client business.
|
|
3347
|
+
*
|
|
3348
|
+
*/
|
|
3349
|
+
retourDateDemande?: string;
|
|
3350
|
+
/**
|
|
3351
|
+
* Date à laquelle le retour de fonds est irrévocable
|
|
3352
|
+
*
|
|
3353
|
+
*/
|
|
3354
|
+
retourDateIrrevocabilite?: string;
|
|
3355
|
+
/**
|
|
3356
|
+
* Date à laquelle la réponse au retour de fonds a été reçue
|
|
3357
|
+
*
|
|
3358
|
+
*/
|
|
3359
|
+
retourDateReponse?: string;
|
|
3360
|
+
annulationStatut?: AnnulationStatut;
|
|
3361
|
+
annulationMotif?: PaiementAnnulationMotif;
|
|
3362
|
+
annulationStatutRaison?: PaiementAnnulationStatutRaison;
|
|
3363
|
+
/**
|
|
3364
|
+
* Date de reception de la demande d'annulation par le participant
|
|
3365
|
+
*
|
|
3366
|
+
*/
|
|
3367
|
+
annulationDateDemande?: string;
|
|
3368
|
+
/**
|
|
3369
|
+
* Date à laquelle la réponse à la demande d'annulation a été reçue (Date de rejet de la demande)
|
|
3370
|
+
*
|
|
3371
|
+
*/
|
|
3372
|
+
annulationDateReponse?: string;
|
|
3373
|
+
});
|
|
3374
|
+
declare namespace Paiement {
|
|
3375
|
+
/**
|
|
3376
|
+
* La catégorie du paiement / Canal de paiement
|
|
3377
|
+
* - `631` Demande de paiement provenant d'un particulier
|
|
3378
|
+
* - `000` Paiement par QR Code Statique
|
|
3379
|
+
* - `400` Paiement par QR Code Dynamique
|
|
3380
|
+
* - `733` Ordre de paiement via l'API Business
|
|
3381
|
+
* - `300` Via le canal USSD
|
|
3382
|
+
* - `999` Ordre de transfert bancaire
|
|
3383
|
+
* - `500` Demande de Paiement sur site
|
|
3384
|
+
* - `521` Demande de Paiement e-commerce
|
|
3385
|
+
* - `401` Autres demandes de paiement de facture
|
|
3386
|
+
*
|
|
3387
|
+
*/
|
|
3388
|
+
enum categorie {
|
|
3389
|
+
_631 = "631",
|
|
3390
|
+
_000 = "000",
|
|
3391
|
+
_400 = "400",
|
|
3392
|
+
_733 = "733",
|
|
3393
|
+
_300 = "300",
|
|
3394
|
+
_999 = "999",
|
|
3395
|
+
_500 = "500",
|
|
3396
|
+
_521 = "521",
|
|
3397
|
+
_401 = "401"
|
|
3398
|
+
}
|
|
3399
|
+
}
|
|
3400
|
+
|
|
3401
|
+
/**
|
|
3402
|
+
* Acceptation de la demande d'annulation
|
|
3403
|
+
*/
|
|
3404
|
+
type PaiementAnnulationReponseRequestAccepter = {
|
|
3405
|
+
/**
|
|
3406
|
+
* La décision à `true` indique l'acceptation de la demande d'annulation.
|
|
3407
|
+
*/
|
|
3408
|
+
decision: boolean;
|
|
3409
|
+
};
|
|
3410
|
+
|
|
3411
|
+
/**
|
|
3412
|
+
* Refus de la demande d'annulation
|
|
3413
|
+
*/
|
|
3414
|
+
type PaiementAnnulationReponseRequestRejeter = {
|
|
3415
|
+
/**
|
|
3416
|
+
* La décision à `false` indique le refus de la demande d'annulation.
|
|
3417
|
+
*/
|
|
3418
|
+
decision: boolean;
|
|
3419
|
+
};
|
|
3420
|
+
|
|
3421
|
+
/**
|
|
3422
|
+
* Réponse à une demande d'annulation de paiement.
|
|
3423
|
+
*
|
|
3424
|
+
* Le business peut accepter ou refuser la demande d'annulation :
|
|
3425
|
+
* - `decision: true` : Accepte la demande d'annulation
|
|
3426
|
+
* - `decision: false` : Refuse la demande d'annulation
|
|
3427
|
+
*
|
|
3428
|
+
*/
|
|
3429
|
+
type PaiementAnnulationReponseRequest = (PaiementAnnulationReponseRequestAccepter | PaiementAnnulationReponseRequestRejeter);
|
|
3430
|
+
|
|
3431
|
+
type PaiementAnnulationRequest = {
|
|
3432
|
+
raison: PaiementAnnulationMotif;
|
|
3433
|
+
};
|
|
3434
|
+
|
|
3435
|
+
/**
|
|
3436
|
+
* Confirmation du paiement en masse
|
|
3437
|
+
*/
|
|
3438
|
+
type PaiementEnMasseConfirmationRequestAccepter = {
|
|
3439
|
+
/**
|
|
3440
|
+
* La décision à `true` indique la confirmation du paiement en masse.
|
|
3441
|
+
*/
|
|
3442
|
+
decision: boolean;
|
|
3443
|
+
};
|
|
3444
|
+
|
|
3445
|
+
/**
|
|
3446
|
+
* Annulation du paiement en masse
|
|
3447
|
+
*/
|
|
3448
|
+
type PaiementEnMasseConfirmationRequestRejeter = {
|
|
3449
|
+
/**
|
|
3450
|
+
* La décision à `false` indique l'annulation du paiement en masse.
|
|
3451
|
+
*/
|
|
3452
|
+
decision: boolean;
|
|
3453
|
+
};
|
|
3454
|
+
|
|
3455
|
+
type PaiementEnMasseConfirmationRequest = (PaiementEnMasseConfirmationRequestAccepter | PaiementEnMasseConfirmationRequestRejeter);
|
|
3456
|
+
|
|
3457
|
+
type PaiementEnMasseReponseStatut = {
|
|
3458
|
+
/**
|
|
3459
|
+
* Identifiant du paiement en masse
|
|
3460
|
+
*/
|
|
3461
|
+
instructionId?: string;
|
|
3462
|
+
/**
|
|
3463
|
+
* Statut global du paiement en masse:
|
|
3464
|
+
* - `INITIE`: Créé avec confirmation demandée, en attente de confirmation
|
|
3465
|
+
* - `CONFIRME`: Confirmé et en cours de traitement (ou traitement terminé)
|
|
3466
|
+
* - `ANNULE`: Annulé par le business avant confirmation
|
|
3467
|
+
*
|
|
3468
|
+
* **Évolution selon le mode de création :**
|
|
3469
|
+
* - Si créé **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
|
|
3470
|
+
* - Si créé **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
|
|
3471
|
+
*
|
|
3472
|
+
*/
|
|
3473
|
+
statut?: PaiementEnMasseReponseStatut.statut;
|
|
3474
|
+
/**
|
|
3475
|
+
* Date d'expiration de la confirmation (délai adaptatif selon nombre de transactions).
|
|
3476
|
+
* Présent uniquement si statut = INITIE.
|
|
3477
|
+
*
|
|
3478
|
+
* Délais :
|
|
3479
|
+
* - 1 à 500 transactions : 24 heures
|
|
3480
|
+
* - 501 à 1000 transactions : 48 heures
|
|
3481
|
+
* - Plus de 1000 transactions : 72 heures
|
|
3482
|
+
*
|
|
3483
|
+
*/
|
|
3484
|
+
dateExpiration?: string;
|
|
3485
|
+
/**
|
|
3486
|
+
* Nombre total de transactions dans le paiement en masse
|
|
3487
|
+
*/
|
|
3488
|
+
transactionsTotal?: number;
|
|
3489
|
+
/**
|
|
3490
|
+
* Nombre de transactions à l'état `INITIE` (validées avec succès, prêtes à être envoyées).
|
|
3491
|
+
*
|
|
3492
|
+
* Si créé avec `confirmation: true`, ces transactions ont passé toutes les validations :
|
|
3493
|
+
* - txId unique (pas de duplication)
|
|
3494
|
+
* - Alias valide (recherche d'alias réussie)
|
|
3495
|
+
* - Nom et pays du bénéficiaire disponibles
|
|
3496
|
+
*
|
|
3497
|
+
* Ce sont ces transactions qui seront envoyées lors de la confirmation.
|
|
3498
|
+
*
|
|
3499
|
+
* **Vérification de fin de validation :** La validation est terminée quand `transactionsInitiees + transactionsRejetees = transactionsTotal`.
|
|
3500
|
+
*
|
|
3501
|
+
*/
|
|
3502
|
+
transactionsInitiees?: number;
|
|
3503
|
+
/**
|
|
3504
|
+
* Nombre de transactions à l'état `ENVOYE` (en cours d'envoi vers le système bancaire)
|
|
3505
|
+
*/
|
|
3506
|
+
transactionsEnvoyees?: number;
|
|
3507
|
+
/**
|
|
3508
|
+
* Nombre de transactions à l'état `IRREVOCABLE` (paiements réussis et finalisés)
|
|
3509
|
+
*/
|
|
3510
|
+
transactionsIrrevocables?: number;
|
|
3511
|
+
/**
|
|
3512
|
+
* Nombre de transactions à l'état `REJETE` (échecs de validation ou d'envoi).
|
|
3513
|
+
*
|
|
3514
|
+
* Comprend :
|
|
3515
|
+
* - Rejets de validation (avant envoi) : BE23 (alias invalide), DU03 (txId dupliqué)
|
|
3516
|
+
* - Rejets d'envoi (après confirmation) : AM04 (solde insuffisant), AGNT (PSP indisponible), etc.
|
|
3517
|
+
*
|
|
3518
|
+
* **Note :** Les transactions rejetées à la validation ne sont jamais envoyées, même si le bulk est confirmé.
|
|
3519
|
+
*
|
|
3520
|
+
*/
|
|
3521
|
+
transactionsRejetees?: number;
|
|
3522
|
+
/**
|
|
3523
|
+
* Date de création du paiement en masse (date de la demande)
|
|
3524
|
+
*/
|
|
3525
|
+
dateDemande?: string;
|
|
3526
|
+
/**
|
|
3527
|
+
* Date de confirmation par le business (date d'acceptation de la demande).
|
|
3528
|
+
* Présent uniquement si statut = CONFIRME.
|
|
3529
|
+
*
|
|
3530
|
+
* - Si créé avec confirmation: Date du PUT /confirmations avec decision: true
|
|
3531
|
+
* - Si créé sans confirmation: Correspond à dateDemande (confirmation automatique)
|
|
3532
|
+
*
|
|
3533
|
+
*/
|
|
3534
|
+
dateConfirmation?: string;
|
|
3535
|
+
};
|
|
3536
|
+
declare namespace PaiementEnMasseReponseStatut {
|
|
3537
|
+
/**
|
|
3538
|
+
* Statut global du paiement en masse:
|
|
3539
|
+
* - `INITIE`: Créé avec confirmation demandée, en attente de confirmation
|
|
3540
|
+
* - `CONFIRME`: Confirmé et en cours de traitement (ou traitement terminé)
|
|
3541
|
+
* - `ANNULE`: Annulé par le business avant confirmation
|
|
3542
|
+
*
|
|
3543
|
+
* **Évolution selon le mode de création :**
|
|
3544
|
+
* - Si créé **avec confirmation** (`confirmation: true`) : `INITIE` → `CONFIRME` (après PUT /confirmations) ou `ANNULE`
|
|
3545
|
+
* - Si créé **sans confirmation** (`confirmation: false`) : Directement `CONFIRME` (aucune action requise du business)
|
|
3546
|
+
*
|
|
3547
|
+
*/
|
|
3548
|
+
enum statut {
|
|
3549
|
+
INITIE = "INITIE",
|
|
3550
|
+
CONFIRME = "CONFIRME",
|
|
3551
|
+
ANNULE = "ANNULE"
|
|
3552
|
+
}
|
|
3553
|
+
}
|
|
3554
|
+
|
|
3555
|
+
type PaiementEnMasseRequest = {
|
|
3556
|
+
/**
|
|
3557
|
+
* Identifiant du paiement en masse dans le SI du client
|
|
3558
|
+
*/
|
|
3559
|
+
instructionId: string;
|
|
3560
|
+
/**
|
|
3561
|
+
* L'alias du compte du client business qui sera débité pour le paiement.
|
|
3562
|
+
*
|
|
3563
|
+
*/
|
|
3564
|
+
payeurAlias: string;
|
|
3565
|
+
/**
|
|
3566
|
+
* Indique si une confirmation du business est requise avant d'exécuter les paiements.
|
|
3567
|
+
*
|
|
3568
|
+
* - `true` : Le PSP effectue la recherche d'alias pour tous les bénéficiaires, retourne leurs noms et pays, et attend la confirmation du business avant d'exécuter les paiements.
|
|
3569
|
+
* - `false` : Le PSP exécute directement les paiements sans attendre de confirmation.
|
|
3570
|
+
*
|
|
3571
|
+
* **Note :** Si `true`, le business doit confirmer via `PUT /paiements-groupes/{instructionId}/confirmations` dans un délai adaptatif (24h, 48h ou 72h selon le nombre de transactions).
|
|
3572
|
+
*
|
|
3573
|
+
*/
|
|
3574
|
+
confirmation?: boolean;
|
|
3575
|
+
/**
|
|
3576
|
+
* Le motif commun à tous les paiements du groupe.
|
|
3577
|
+
* Si tous les paiements du groupe ont le même motif, ce champ peut être utilisé pour optimiser la taille du lot.
|
|
3578
|
+
* Dans le cas contraire, chaque transaction doit avoir son propre motif.
|
|
3579
|
+
*
|
|
3580
|
+
*/
|
|
3581
|
+
motif?: string;
|
|
3582
|
+
transactions: Array<{
|
|
3583
|
+
/**
|
|
3584
|
+
* Identifiant de la transaction dans le SI du client
|
|
3585
|
+
*/
|
|
3586
|
+
txId: string;
|
|
3587
|
+
/**
|
|
3588
|
+
* L'alias du client payé, bénéficiaire de l'ordre de paiement
|
|
3589
|
+
*/
|
|
3590
|
+
payeAlias: string;
|
|
3591
|
+
/**
|
|
3592
|
+
* Le montant du transfert de fonds à effectuer
|
|
3593
|
+
*/
|
|
3594
|
+
montant: number;
|
|
3595
|
+
/**
|
|
3596
|
+
* Le motif du paiement.
|
|
3597
|
+
* Si tous les paiements du groupe ont le même motif, ce champ doit être omis, et le motif du groupe doit être utilisé.
|
|
3598
|
+
*
|
|
3599
|
+
*/
|
|
3600
|
+
motif?: string;
|
|
3601
|
+
/**
|
|
3602
|
+
* Le numéro / la référence du document justificatif
|
|
3603
|
+
*/
|
|
3604
|
+
refDocNumero?: string;
|
|
3605
|
+
refDocType?: RefDocType;
|
|
3606
|
+
}>;
|
|
3607
|
+
};
|
|
3608
|
+
|
|
3609
|
+
type PaiementImmediatRequest = (PaiementRequest & {
|
|
3610
|
+
/**
|
|
3611
|
+
* Lorsque le PSP recoit la demande, il effectue une recherche d'alias en vue d'obtenir les informations de compte du client payé.
|
|
3612
|
+
*
|
|
3613
|
+
* L'attribut `confirmation` permet au client d'indiquer à son PSP si celui-ci doit lui retourner les resultats de la recherche d'alias pour confirmation:
|
|
3614
|
+
*
|
|
3615
|
+
* - La valeur `true` de la validation indique au PSP qu'il doit retourner le resultat de la recherche d'alias au client et attendre une validation avant d'effectuer le paiement.
|
|
3616
|
+
* - La valeur `false` indique qu'une validation n'est pas requise pour la demande, de ce fait, le PSP transmet la demande à PI sans attendre la validation du client business.
|
|
3617
|
+
*
|
|
3618
|
+
*/
|
|
3619
|
+
confirmation: boolean;
|
|
3620
|
+
});
|
|
3621
|
+
|
|
3622
|
+
type PaiementImmediatConfirmationReponse = (PaiementImmediatRequest & {
|
|
3623
|
+
statut?: PaiementImmediatConfirmationReponse.statut;
|
|
3624
|
+
/**
|
|
3625
|
+
* Identifiant unique de bout en bout de la transaction
|
|
3626
|
+
*/
|
|
3627
|
+
end2endId?: string;
|
|
3628
|
+
/**
|
|
3629
|
+
* Le nom du payé
|
|
3630
|
+
*/
|
|
3631
|
+
payeNom?: string;
|
|
3632
|
+
/**
|
|
3633
|
+
* Le pays de residence du payé
|
|
3634
|
+
*/
|
|
3635
|
+
payePays?: string;
|
|
3636
|
+
/**
|
|
3637
|
+
* Date de création du paiement
|
|
3638
|
+
*/
|
|
3639
|
+
dateDemande?: string;
|
|
3640
|
+
/**
|
|
3641
|
+
* Date de confirmation de la demande si le client payé avait requis la confirmation du paiement.
|
|
3642
|
+
* Il s'agit de la date et heure à laquelle le business a confirmé l'envoi du paiement.
|
|
3643
|
+
*
|
|
3644
|
+
*/
|
|
3645
|
+
dateConfirmation?: string;
|
|
3646
|
+
});
|
|
3647
|
+
declare namespace PaiementImmediatConfirmationReponse {
|
|
3648
|
+
enum statut {
|
|
3649
|
+
ENVOYE = "ENVOYE"
|
|
3650
|
+
}
|
|
3651
|
+
}
|
|
3652
|
+
|
|
3653
|
+
/**
|
|
3654
|
+
* Confirmation du paiement immédiat
|
|
3655
|
+
*/
|
|
3656
|
+
type PaiementImmediatConfirmationRequestAccepter = {
|
|
3657
|
+
/**
|
|
3658
|
+
* La décision à `true` indique la confirmation du paiement.
|
|
3659
|
+
*/
|
|
3660
|
+
decision: boolean;
|
|
3661
|
+
};
|
|
3662
|
+
|
|
3663
|
+
/**
|
|
3664
|
+
* Annulation du paiement
|
|
3665
|
+
*/
|
|
3666
|
+
type PaiementImmediatConfirmationRequestRejeter = {
|
|
3667
|
+
/**
|
|
3668
|
+
* La décision à `false` indique l'annulation du paiement.
|
|
3669
|
+
*/
|
|
3670
|
+
decision: boolean;
|
|
3671
|
+
};
|
|
3672
|
+
|
|
3673
|
+
type PaiementImmediatConfirmationRequest = (PaiementImmediatConfirmationRequestAccepter | PaiementImmediatConfirmationRequestRejeter);
|
|
3674
|
+
|
|
3675
|
+
type PaiementImmediatReponse = ((PaiementRequest & {
|
|
3676
|
+
statut: PaiementImmediatReponse.statut;
|
|
3677
|
+
confirmation: boolean;
|
|
3678
|
+
/**
|
|
3679
|
+
* Le nom du payé
|
|
3680
|
+
*/
|
|
3681
|
+
payeNom: string;
|
|
3682
|
+
/**
|
|
3683
|
+
* Le pays de residence du payé
|
|
3684
|
+
*/
|
|
3685
|
+
payePays: string;
|
|
3686
|
+
/**
|
|
3687
|
+
* Identifiant unique de bout en bout de la transaction
|
|
3688
|
+
*/
|
|
3689
|
+
end2endId: string;
|
|
3690
|
+
/**
|
|
3691
|
+
* Date de création du paiement: date et heure à laquelle le paiement a été initié par le client business.
|
|
3692
|
+
*
|
|
3693
|
+
*/
|
|
3694
|
+
dateDemande: string;
|
|
3695
|
+
/**
|
|
3696
|
+
* Les frais appliqués par le participant (Optionnel - dépend du modèle de facturation utilisé par le participant)
|
|
3697
|
+
*/
|
|
3698
|
+
montantFrais?: number;
|
|
3699
|
+
}) | (PaiementRequest & {
|
|
3700
|
+
statut: PaiementImmediatReponse.statut;
|
|
3701
|
+
confirmation: boolean;
|
|
3702
|
+
/**
|
|
3703
|
+
* Le nom du bénéficiaire
|
|
3704
|
+
*/
|
|
3705
|
+
payeNom: string;
|
|
3706
|
+
/**
|
|
3707
|
+
* Le pays de résidence du bénéficiaire
|
|
3708
|
+
*/
|
|
3709
|
+
payePays: string;
|
|
3710
|
+
/**
|
|
3711
|
+
* Identifiant unique de bout en bout de la transaction
|
|
3712
|
+
*/
|
|
3713
|
+
end2endId: string;
|
|
3714
|
+
/**
|
|
3715
|
+
* Date de création du paiement: date et heure à laquelle le paiement a été initié par le client business.
|
|
3716
|
+
*
|
|
3717
|
+
*/
|
|
3718
|
+
dateDemande: string;
|
|
3719
|
+
/**
|
|
3720
|
+
* Date d'acceptation de la demande: date et heure à laquelle l'ordre de transfert du client business est reçu par le participant.
|
|
3721
|
+
*
|
|
3722
|
+
* Dans le cas d'un paiement sans confirmation, elle correspond également à `dateDemande`.
|
|
3723
|
+
*
|
|
3724
|
+
*/
|
|
3725
|
+
dateConfirmation: string;
|
|
3726
|
+
/**
|
|
3727
|
+
* Date d'envoi du paiement
|
|
3728
|
+
*/
|
|
3729
|
+
dateEnvoi?: string;
|
|
3730
|
+
/**
|
|
3731
|
+
* Les frais appliqués par le participant (Optionnel - dépend du modèle de facturation utilisé par le participant)
|
|
3732
|
+
*/
|
|
3733
|
+
montantFrais?: number;
|
|
3734
|
+
}) | (PaiementRequest & {
|
|
3735
|
+
statut: PaiementImmediatReponse.statut;
|
|
3736
|
+
statutRaison: PaiementStatutRaison;
|
|
3737
|
+
/**
|
|
3738
|
+
* Le nom du bénéficiaire (présent seulement si la recherche d'alias a réussi).
|
|
3739
|
+
*
|
|
3740
|
+
* Absent si statutRaison = BE23 (alias invalide).
|
|
3741
|
+
* Présent si statutRaison = DU03 (txId dupliqué) ou autres codes.
|
|
3742
|
+
*
|
|
3743
|
+
*/
|
|
3744
|
+
payeNom?: string;
|
|
3745
|
+
/**
|
|
3746
|
+
* Le pays de résidence du bénéficiaire (présent seulement si la recherche d'alias a réussi).
|
|
3747
|
+
*
|
|
3748
|
+
* Absent si statutRaison = BE23 (alias invalide).
|
|
3749
|
+
* Présent si statutRaison = DU03 (txId dupliqué) ou autres codes.
|
|
3750
|
+
*
|
|
3751
|
+
*/
|
|
3752
|
+
payePays?: string;
|
|
3753
|
+
/**
|
|
3754
|
+
* Identifiant unique de bout en bout de la transaction
|
|
3755
|
+
*/
|
|
3756
|
+
end2endId: string;
|
|
3757
|
+
/**
|
|
3758
|
+
* Date de création du paiement
|
|
3759
|
+
*/
|
|
3760
|
+
dateDemande: string;
|
|
3761
|
+
/**
|
|
3762
|
+
* Date à laquelle le paiement a été rejeté
|
|
3763
|
+
*/
|
|
3764
|
+
dateReponse?: string;
|
|
3765
|
+
}));
|
|
3766
|
+
declare namespace PaiementImmediatReponse {
|
|
3767
|
+
enum statut {
|
|
3768
|
+
INITIE = "INITIE"
|
|
3769
|
+
}
|
|
3770
|
+
}
|
|
3771
|
+
|
|
3772
|
+
type PaiementListe = {
|
|
3773
|
+
data?: Array<Paiement>;
|
|
3774
|
+
meta?: ListeMeta;
|
|
3775
|
+
};
|
|
3776
|
+
|
|
3777
|
+
type Problem7807 = {
|
|
3778
|
+
/**
|
|
3779
|
+
* Référence URI qui identifie le type de problème
|
|
3780
|
+
*/
|
|
3781
|
+
type?: string;
|
|
3782
|
+
/**
|
|
3783
|
+
* Un bref résumé du problème
|
|
3784
|
+
*/
|
|
3785
|
+
title?: string;
|
|
3786
|
+
/**
|
|
3787
|
+
* Le code d'état HTTP pour cette occurrence du problème
|
|
3788
|
+
*/
|
|
3789
|
+
status?: number;
|
|
3790
|
+
/**
|
|
3791
|
+
* Explication spécifique à cette occurrence du problème
|
|
3792
|
+
*/
|
|
3793
|
+
detail?: string;
|
|
3794
|
+
/**
|
|
3795
|
+
* Liste des paramètres invalides
|
|
3796
|
+
*/
|
|
3797
|
+
'invalid-params'?: Array<{
|
|
3798
|
+
/**
|
|
3799
|
+
* Nom du paramètre invalide
|
|
3800
|
+
*/
|
|
3801
|
+
name?: string;
|
|
3802
|
+
/**
|
|
3803
|
+
* Raison de l'invalidité du paramètre
|
|
3804
|
+
*/
|
|
3805
|
+
reason?: string;
|
|
3806
|
+
}>;
|
|
3807
|
+
};
|
|
3808
|
+
|
|
3809
|
+
declare enum WebhooksEvents {
|
|
3810
|
+
PAIEMENT_RECU = "PAIEMENT_RECU",
|
|
3811
|
+
PAIEMENT_ENVOYE = "PAIEMENT_ENVOYE",
|
|
3812
|
+
PAIEMENT_REJETE = "PAIEMENT_REJETE",
|
|
3813
|
+
RTP_RECU = "RTP_RECU",
|
|
3814
|
+
RTP_REJETE = "RTP_REJETE",
|
|
3815
|
+
ANNULATION_DEMANDE = "ANNULATION_DEMANDE",
|
|
3816
|
+
ANNULATION_REJETE = "ANNULATION_REJETE",
|
|
3817
|
+
RETOUR_ENVOYE = "RETOUR_ENVOYE",
|
|
3818
|
+
RETOUR_REJETE = "RETOUR_REJETE",
|
|
3819
|
+
RETOUR_RECU = "RETOUR_RECU"
|
|
3820
|
+
}
|
|
3821
|
+
|
|
3822
|
+
type WebhookCreationRequest = {
|
|
3823
|
+
callbackUrl: string;
|
|
3824
|
+
/**
|
|
3825
|
+
* l'alias auquel est rattaché le point de rappel pour recevoir des notifications liées à un alias de compte
|
|
3826
|
+
*
|
|
3827
|
+
*/
|
|
3828
|
+
alias?: string;
|
|
3829
|
+
/**
|
|
3830
|
+
* les évènements dont les notifications seront envoyés sur le point de terminaison
|
|
3831
|
+
*
|
|
3832
|
+
*/
|
|
3833
|
+
events?: Array<WebhooksEvents>;
|
|
3834
|
+
};
|
|
3835
|
+
|
|
3836
|
+
type WebhookCreationResponse = (WebhookCreationRequest & {
|
|
3837
|
+
id?: string;
|
|
3838
|
+
/**
|
|
3839
|
+
* Date et heure d'enregistrement du webhook. Conforme à la RFC ISO 8601
|
|
3840
|
+
*/
|
|
3841
|
+
dateCreation?: string;
|
|
3842
|
+
/**
|
|
3843
|
+
* Le secret doit être enregistré de façon sécurisée . Il n'est envoyé qu'à la création du webhook.
|
|
3844
|
+
*/
|
|
3845
|
+
secret?: string;
|
|
3846
|
+
});
|
|
3847
|
+
|
|
3848
|
+
type WebhookData = ({
|
|
3849
|
+
id?: string;
|
|
3850
|
+
/**
|
|
3851
|
+
* Date et heure d'enregistrement du webhook. Conforme à la RFC ISO 8601
|
|
3852
|
+
*/
|
|
3853
|
+
dateCreation?: string;
|
|
3854
|
+
} & WebhookCreationRequest);
|
|
3855
|
+
|
|
3856
|
+
type WebhookEvent = {
|
|
3857
|
+
evCode: WebhooksEvents;
|
|
3858
|
+
/**
|
|
3859
|
+
* Date et heure de l'événement.
|
|
3860
|
+
* POur un transfert irrévocable par exemple c'est la date d'irrévocabilité
|
|
3861
|
+
*
|
|
3862
|
+
*/
|
|
3863
|
+
evDate: string;
|
|
3864
|
+
/**
|
|
3865
|
+
* Identifiant de la transaction dans le SI du client
|
|
3866
|
+
*/
|
|
3867
|
+
txId: string;
|
|
3868
|
+
/**
|
|
3869
|
+
* Identifiant de l'ordre de transfert ou de la demande de paiement
|
|
3870
|
+
*/
|
|
3871
|
+
end2endId: string;
|
|
3872
|
+
/**
|
|
3873
|
+
* Identifiant de l'instruction de paiement (Pour les paiements en masse)
|
|
3874
|
+
*/
|
|
3875
|
+
instructionId?: string;
|
|
3876
|
+
/**
|
|
3877
|
+
* Le montant du paiement ou demande de paiement ou demande retour
|
|
3878
|
+
*/
|
|
3879
|
+
montant: number;
|
|
3880
|
+
/**
|
|
3881
|
+
* Le nom du client payeur ou payé en fonction du type d'événement
|
|
3882
|
+
*/
|
|
3883
|
+
client?: string;
|
|
3884
|
+
/**
|
|
3885
|
+
* Alias de compte du client business sur lequel porte l'événement
|
|
3886
|
+
*/
|
|
3887
|
+
alias?: string;
|
|
3888
|
+
/**
|
|
3889
|
+
* Le motif d'un paiement reçu ou envoyé est un texte libre renseigné par le client payeur.
|
|
3890
|
+
*
|
|
3891
|
+
* Le motif d'une demande de paiement reçue est un texte libre renseigné par le client payé.
|
|
3892
|
+
*
|
|
3893
|
+
* En dehors de ces cas, le motif est l'un des codes suivants en fonction du type d'événement :
|
|
3894
|
+
*
|
|
3895
|
+
* **Motifs de rejet des demandes de paiement :**
|
|
3896
|
+
*
|
|
3897
|
+
* - **AC04** (Closed Account Number) : Le compte du client payeur est clôturé.
|
|
3898
|
+
* - **AC06** (Blocked Account) : Le compte du client payeur est bloqué.
|
|
3899
|
+
* - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
|
|
3900
|
+
* - **AG03** (Transaction Not Supported) : Le client n'est pas autorisé à payer en mode débit différé.
|
|
3901
|
+
* - **AG10** (Agent Suspended) : Le participant payeur est suspendu.
|
|
3902
|
+
* - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
|
|
3903
|
+
* - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
|
|
3904
|
+
* - **AM02** (Not Allowed Amount) : Le montant spécifique de la transaction dépasse le montant maximum autorisé.
|
|
3905
|
+
* - **AM09** (Wrong Amount) : Le montant reçu ne correspond pas au montant convenu ou attendu.
|
|
3906
|
+
* - **AM14** (Amount Exceeds Agreed Limit) : Le montant de la transaction fait dépasser le plafond de débit différé du client.
|
|
3907
|
+
* - **APAR** (Already Paid RTP) : Le paiement demandé a déjà été effectué par le payeur.
|
|
3908
|
+
* - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
|
|
3909
|
+
* - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
|
|
3910
|
+
* - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
|
|
3911
|
+
* - **BE05** (Unrecognised Initiating Party) : La partie qui a initié le message n'est pas reconnue par le client final.
|
|
3912
|
+
* - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
|
|
3913
|
+
* - **RR07** (Remittance Information Invalid) : Le justificatif de la demande de paiement est invalide (par exemple, le numéro de facture est invalide).
|
|
3914
|
+
*
|
|
3915
|
+
* **Motifs de rejet des paiements :**
|
|
3916
|
+
*
|
|
3917
|
+
* - **AB03** (Aborted Settlement Timeout) : Message en timeout lors du règlement.
|
|
3918
|
+
* - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
|
|
3919
|
+
* - **AB08** (Offline Creditor Agent) : Le système du participant payé n'est pas accessible.
|
|
3920
|
+
* - **AB09** (Error Creditor Agent) : Transaction rejetée à cause d'une erreur chez le participant payé.
|
|
3921
|
+
* - **AC03** (Invalid Creditor Account Number) : Le numéro de compte du payé est invalide.
|
|
3922
|
+
* - **AC06** (Blocked Account) : Le compte spécifié est bloqué.
|
|
3923
|
+
* - **AC07** (Closed Creditor Account Number) : Le compte du payé est clôturé.
|
|
3924
|
+
* - **AG01** (Transaction Forbidden) : Transaction interdite sur ce type de compte.
|
|
3925
|
+
* - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
|
|
3926
|
+
* - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
|
|
3927
|
+
* - **AEXR** (Already Expired RTP) : La demande de paiement a déjà expiré.
|
|
3928
|
+
* - **ALAC** (Already Accepted RTP) : La demande de paiement a déjà été acceptée.
|
|
3929
|
+
* - **AM02** (Not Allowed Amount) : Le montant de la transaction est supérieur au maximum autorisé.
|
|
3930
|
+
* - **AM04** (Insufficient Funds) : Le solde de garantie du participant payeur est insuffisant.
|
|
3931
|
+
* - **AM09** (Wrong Amount) : Le montant du transfert est différent du montant attendu.
|
|
3932
|
+
* - **AM21** (Limit Exceeded) : Le montant de la transaction dépasse les limites convenues entre le participant et le client.
|
|
3933
|
+
* - **ARFR** (Already Refused RTP) : La demande de paiement a déjà été refusée.
|
|
3934
|
+
* - **ARJR** (Already Rejected RTP) : La demande de paiement a déjà été rejetée.
|
|
3935
|
+
* - **BE01** (Inconsistent With End Customer) : L'identification du client final n'est pas liée au numéro de compte associé.
|
|
3936
|
+
* - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
|
|
3937
|
+
* - **IRNR** (Initial RTP Never Received) : La demande de paiement n'a jamais été reçue.
|
|
3938
|
+
* - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
|
|
3939
|
+
*
|
|
3940
|
+
* **Motifs d'une demandes d'annulation :**
|
|
3941
|
+
*
|
|
3942
|
+
* - **DUPL** (Duplicate Payment) : Déjà payé.
|
|
3943
|
+
* - **AM09** (Wrong Amount) : Erreur sur le montant.
|
|
3944
|
+
* - **AC03** (Invalid Creditor Account Number) : Erreur sur le destinataire.
|
|
3945
|
+
* - **SVNR** (Service Not Rendered) : Le paiement est annulé car le produit n'a pas été livré ou le service n'a pas été rendu.
|
|
3946
|
+
* - **FRAD** (Fraudulent Origin) : Annulation demandée à la suite d'une transaction dont l'origine est frauduleuse.
|
|
3947
|
+
*
|
|
3948
|
+
* **Motifs de rejet d'une demande d'annulation :**
|
|
3949
|
+
*
|
|
3950
|
+
* - **ARDT** (Already Returned) : La transaction est déjà retournée.
|
|
3951
|
+
* - **CUST** (Customer Decision) : Le client payé rejette la demande d'annulation.
|
|
3952
|
+
* - **AC04** (Closed Account Number) : Le numéro de compte spécifié a été clôturé dans les livres du participant payé.
|
|
3953
|
+
*
|
|
3954
|
+
* **Motifs d'un retour de fonds reçu ou envoyé :**
|
|
3955
|
+
*
|
|
3956
|
+
* - **AC06** (Blocked Account) : Le compte du payé est bloqué.
|
|
3957
|
+
* - **AC07** (Closed Creditor Account Number) : Le compte du payé est clôturé.
|
|
3958
|
+
* - **MD06** (Refund Request By End Customer) : Retour de fonds initié par le client payé.
|
|
3959
|
+
* - **CUST** (Requested By Customer) : Retour de fonds demandé suite à une demande d'annulation envoyée par le payeur.
|
|
3960
|
+
* - **FR01** (Fraud) : Retourné à la suite d'une fraude.
|
|
3961
|
+
* - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
|
|
3962
|
+
*
|
|
3963
|
+
*
|
|
3964
|
+
* **Motifs de rejet d'un retour de fonds :**
|
|
3965
|
+
*
|
|
3966
|
+
* - **AB03** (Aborted Settlement Timeout) : Timeout.
|
|
3967
|
+
* - **AB04** (Aborted Settlement Fatal Error) : Transaction rejetée à cause d'une erreur fatale.
|
|
3968
|
+
* - **AG10** (Agent Suspended) : Le participant payeur est désactivé.
|
|
3969
|
+
* - **AG11** (Creditor Agent Suspended) : Le participant payé est désactivé.
|
|
3970
|
+
* - **AM04** (Insufficient Funds) : Le solde de garantie du participant payé est insuffisant.
|
|
3971
|
+
* - **AC04** (Closed Account Number) : Le compte du payeur est clôturé.
|
|
3972
|
+
* - **AC06** (Blocked Account) : Le compte du payeur est bloqué.
|
|
3973
|
+
* - **AG01** (Transaction Forbidden) : Transaction interdite sur ce type de compte.
|
|
3974
|
+
* - **AM21** (Limit Exceeded) : Le montant de la transaction dépasse les limites convenues entre le participant et le client.
|
|
3975
|
+
* - **RR04** (Regulatory Reason) : Raison règlementaire, notamment lorsque le bénéficiaire figure dans une liste d'interdiction.
|
|
3976
|
+
* - **FR01** (Fraud) : Rejeté pour suspicion de fraude.
|
|
3977
|
+
*
|
|
3978
|
+
*/
|
|
3979
|
+
motif?: string;
|
|
3980
|
+
/**
|
|
3981
|
+
* Le type de document justificatif associé à la transaction. Les types de documents disponibles sont :
|
|
3982
|
+
* - **QUOT** (Quotation) : Devis commercial détaillant les conditions d'offre.
|
|
3983
|
+
* - **PROF** (Proforma Invoice) : Facture pro forma, engagement préliminaire du vendeur (prix/conditions), sans enregistrement comptable réel.
|
|
3984
|
+
* - **CINV** (Commercial Invoice) : Facture commerciale standard pour la vente de biens ou services. Utilisée pour les paiements directs d'une facture émise par le vendeur.
|
|
3985
|
+
* - **CMCN** (Commercial Contract) : Contrat commercial entre les parties, stipulant les termes et conditions de la livraison de biens ou de services.
|
|
3986
|
+
* - **DISP** (Dispatch Advice) : Avis d'expédition ou bon de livraison.
|
|
3987
|
+
* - **PUOR** (Purchase Order) : Bon de commande émis par l'acheteur.
|
|
3988
|
+
* - **CONT** (Contract) : Document contractuel prouvant un accord entre vendeur et acheteur pour biens ou services.
|
|
3989
|
+
* - **HIRI** (Hire Invoice) : Facture pour location de ressources humaines (ex : intérim) ou biens/équipements.
|
|
3990
|
+
* - **INVS** (Invoice Signed) : Facture signée, validée électroniquement ou physiquement. Indique une approbation formelle avant paiement.
|
|
3991
|
+
* - **MSIN** (Metered Service Invoice) : Facture pour services mesurés (ex : gaz, électricité via compteur fixe). Inclut la consommation réelle.
|
|
3992
|
+
* - **SPRR** (Seller Presentment) : Document de présentation par le vendeur pour supporter l'acquisition (ex : preuve de livraison ou justificatif).
|
|
3993
|
+
* - **TISH** (Time Sheet) : Feuille de temps enregistrant les heures pour services/prestations ou livraison. Pour paiements basés sur le temps (ex : consulting, freelance).
|
|
3994
|
+
* - **USAR** (Usage Report) : Rapport d'utilisation indiquant le pattern de consommation (ex : SaaS, télécoms). Similaire à MSIN mais plus large (non forcément mesuré).
|
|
3995
|
+
* - **BOLD** (Bill Of Lading) : Document de transport maritime ou logistique (connaissement) prouvant l'expédition des marchandises. Spécifique au transport multimodal (ex : maritime, aérien).
|
|
3996
|
+
* - **SOAC** (Statement Of Account) : Relevé de compte émis par le fournisseur, listant les transactions enregistrées pour le débiteur (ex : factures, paiements, ajustements).
|
|
3997
|
+
* - **VCHR** (Voucher) : Document électronique de paiement (bon ou coupon) représentant une obligation ou un droit de paiement. Souvent utilisé pour des paiements préautorisés ou des remises spécifiques.
|
|
3998
|
+
*
|
|
3999
|
+
*/
|
|
4000
|
+
refDocType?: WebhookEvent.refDocType;
|
|
4001
|
+
/**
|
|
4002
|
+
* Le numéro du document justificatif
|
|
4003
|
+
*/
|
|
4004
|
+
refDocNumero?: string;
|
|
4005
|
+
};
|
|
4006
|
+
declare namespace WebhookEvent {
|
|
4007
|
+
/**
|
|
4008
|
+
* Le type de document justificatif associé à la transaction. Les types de documents disponibles sont :
|
|
4009
|
+
* - **QUOT** (Quotation) : Devis commercial détaillant les conditions d'offre.
|
|
4010
|
+
* - **PROF** (Proforma Invoice) : Facture pro forma, engagement préliminaire du vendeur (prix/conditions), sans enregistrement comptable réel.
|
|
4011
|
+
* - **CINV** (Commercial Invoice) : Facture commerciale standard pour la vente de biens ou services. Utilisée pour les paiements directs d'une facture émise par le vendeur.
|
|
4012
|
+
* - **CMCN** (Commercial Contract) : Contrat commercial entre les parties, stipulant les termes et conditions de la livraison de biens ou de services.
|
|
4013
|
+
* - **DISP** (Dispatch Advice) : Avis d'expédition ou bon de livraison.
|
|
4014
|
+
* - **PUOR** (Purchase Order) : Bon de commande émis par l'acheteur.
|
|
4015
|
+
* - **CONT** (Contract) : Document contractuel prouvant un accord entre vendeur et acheteur pour biens ou services.
|
|
4016
|
+
* - **HIRI** (Hire Invoice) : Facture pour location de ressources humaines (ex : intérim) ou biens/équipements.
|
|
4017
|
+
* - **INVS** (Invoice Signed) : Facture signée, validée électroniquement ou physiquement. Indique une approbation formelle avant paiement.
|
|
4018
|
+
* - **MSIN** (Metered Service Invoice) : Facture pour services mesurés (ex : gaz, électricité via compteur fixe). Inclut la consommation réelle.
|
|
4019
|
+
* - **SPRR** (Seller Presentment) : Document de présentation par le vendeur pour supporter l'acquisition (ex : preuve de livraison ou justificatif).
|
|
4020
|
+
* - **TISH** (Time Sheet) : Feuille de temps enregistrant les heures pour services/prestations ou livraison. Pour paiements basés sur le temps (ex : consulting, freelance).
|
|
4021
|
+
* - **USAR** (Usage Report) : Rapport d'utilisation indiquant le pattern de consommation (ex : SaaS, télécoms). Similaire à MSIN mais plus large (non forcément mesuré).
|
|
4022
|
+
* - **BOLD** (Bill Of Lading) : Document de transport maritime ou logistique (connaissement) prouvant l'expédition des marchandises. Spécifique au transport multimodal (ex : maritime, aérien).
|
|
4023
|
+
* - **SOAC** (Statement Of Account) : Relevé de compte émis par le fournisseur, listant les transactions enregistrées pour le débiteur (ex : factures, paiements, ajustements).
|
|
4024
|
+
* - **VCHR** (Voucher) : Document électronique de paiement (bon ou coupon) représentant une obligation ou un droit de paiement. Souvent utilisé pour des paiements préautorisés ou des remises spécifiques.
|
|
4025
|
+
*
|
|
4026
|
+
*/
|
|
4027
|
+
enum refDocType {
|
|
4028
|
+
CINV = "CINV",
|
|
4029
|
+
CMCN = "CMCN",
|
|
4030
|
+
DISP = "DISP",
|
|
4031
|
+
PUOR = "PUOR",
|
|
4032
|
+
CONT = "CONT",
|
|
4033
|
+
HIRI = "HIRI",
|
|
4034
|
+
INVS = "INVS",
|
|
4035
|
+
MSIN = "MSIN",
|
|
4036
|
+
PROF = "PROF",
|
|
4037
|
+
QUOT = "QUOT",
|
|
4038
|
+
SPRR = "SPRR",
|
|
4039
|
+
TISH = "TISH",
|
|
4040
|
+
USAR = "USAR",
|
|
4041
|
+
BOLD = "BOLD",
|
|
4042
|
+
SOAC = "SOAC",
|
|
4043
|
+
VCHR = "VCHR"
|
|
4044
|
+
}
|
|
4045
|
+
}
|
|
4046
|
+
|
|
4047
|
+
type WebhookEventsList = {
|
|
4048
|
+
/**
|
|
4049
|
+
* Liste des événements notifiés
|
|
4050
|
+
*/
|
|
4051
|
+
data: Array<WebhookEvent>;
|
|
4052
|
+
meta: {
|
|
4053
|
+
/**
|
|
4054
|
+
* Nombre total d'événements dans cette notification
|
|
4055
|
+
*/
|
|
4056
|
+
total: number;
|
|
4057
|
+
};
|
|
4058
|
+
};
|
|
4059
|
+
|
|
4060
|
+
type WebhookList = {
|
|
4061
|
+
/**
|
|
4062
|
+
* Liste des webhooks configurés
|
|
4063
|
+
*/
|
|
4064
|
+
data: Array<WebhookCreationResponse>;
|
|
4065
|
+
meta: {
|
|
4066
|
+
/**
|
|
4067
|
+
* Nombre total de webhooks configurés
|
|
4068
|
+
*/
|
|
4069
|
+
total: number;
|
|
4070
|
+
};
|
|
4071
|
+
};
|
|
4072
|
+
|
|
4073
|
+
type WebhookModificationRequest = {
|
|
4074
|
+
callbackUrl?: string;
|
|
4075
|
+
alias?: string;
|
|
4076
|
+
};
|
|
4077
|
+
|
|
4078
|
+
declare class AliasService {
|
|
4079
|
+
/**
|
|
4080
|
+
* Créer un alias
|
|
4081
|
+
* Le répertoire des alias de compte permet de créer les types d'alias suivants :
|
|
4082
|
+
* - Une adresse de paiement, codifiée par SHID: cet alias est obtenu par génération d'une clé aléatoire unique sur 36 positions par le système.
|
|
4083
|
+
* - Un identifiant de compte marchand, codifié par MCOD: ce type d'alias est prévu pour supporter les paiements par code USSD.
|
|
4084
|
+
* - Un numéro de téléphone mobile, codifié par MBNO.
|
|
4085
|
+
*
|
|
4086
|
+
* Les types d'alias qu'on peut créer dépendent du type de client.
|
|
4087
|
+
* Les clients de type P (particuliers, personnes physiques) peuvent créer des alias de types MBNO et SHID.
|
|
4088
|
+
* Les clients de types C, B, et G (commerçants ou entreprises individuelles, entreprises, entités gouvernementales) peuvent créer des alias de types SHID et MCOD.
|
|
4089
|
+
*
|
|
4090
|
+
* Un client business peut créer plusieurs alias pour un compte donné.
|
|
4091
|
+
* Une limite de 20 alias par compte est fixée par défaut. Cette limite peut être augmentée selon les besoins du client.
|
|
4092
|
+
*
|
|
4093
|
+
* @returns AliasCreationReponse Opération effectuée avec succès
|
|
4094
|
+
* @throws ApiError
|
|
4095
|
+
*/
|
|
4096
|
+
static aliasCreer({ numero, requestBody, }: {
|
|
4097
|
+
/**
|
|
4098
|
+
* Le numéro de compte sur lequel porte la demande
|
|
4099
|
+
*/
|
|
4100
|
+
numero: string;
|
|
4101
|
+
/**
|
|
4102
|
+
* Données pour la création d'alias.
|
|
4103
|
+
*/
|
|
4104
|
+
requestBody: AliasCreationRequest;
|
|
4105
|
+
}): CancelablePromise<AliasCreationReponse>;
|
|
4106
|
+
/**
|
|
4107
|
+
* Lister les alias
|
|
4108
|
+
* Ce point de terminaison permet de consulter la liste des alias d'un compte.
|
|
4109
|
+
*
|
|
4110
|
+
* @returns AliasReponseListe Succès de l'opération
|
|
4111
|
+
* @throws ApiError
|
|
4112
|
+
*/
|
|
4113
|
+
static aliasLister({ numero, }: {
|
|
4114
|
+
/**
|
|
4115
|
+
* Le numéro de compte sur lequel porte la demande
|
|
4116
|
+
*/
|
|
4117
|
+
numero: string;
|
|
4118
|
+
}): CancelablePromise<AliasReponseListe>;
|
|
4119
|
+
/**
|
|
4120
|
+
* Supprimer un alias
|
|
4121
|
+
* Le client peut supprimer à tout moment un alias de compte.
|
|
4122
|
+
*
|
|
4123
|
+
* @returns void
|
|
4124
|
+
* @throws ApiError
|
|
4125
|
+
*/
|
|
4126
|
+
static aliasSupprimer({ numero, cle, }: {
|
|
4127
|
+
/**
|
|
4128
|
+
* Le numéro de compte
|
|
4129
|
+
*/
|
|
4130
|
+
numero: string;
|
|
4131
|
+
/**
|
|
4132
|
+
* La cle de l'alias
|
|
4133
|
+
*/
|
|
4134
|
+
cle: string;
|
|
4135
|
+
}): CancelablePromise<void>;
|
|
4136
|
+
}
|
|
4137
|
+
|
|
4138
|
+
declare class ComptesService {
|
|
4139
|
+
/**
|
|
4140
|
+
* Détails d'un compte
|
|
4141
|
+
* Cet endpoint permet au client de consulter à tout moment les informations détaillées relatives à un compte spécifique.
|
|
4142
|
+
*
|
|
4143
|
+
* Les informations retournées incluent :
|
|
4144
|
+
* - Le type de compte (compte courant, épargne, etc.)
|
|
4145
|
+
* - Le numéro du compte
|
|
4146
|
+
* - La date d'ouverture du compte
|
|
4147
|
+
* - Le solde actuel du compte
|
|
4148
|
+
* - Le statut du compte (ouvert, bloqué ou clôturé)
|
|
4149
|
+
* - L'indicateur de pré-confirmation pour les opérations
|
|
4150
|
+
*
|
|
4151
|
+
* Cette consultation permet au client business de surveiller l'état de ses comptes en temps réel et de prendre des décisions éclairées concernant ses opérations financières.
|
|
4152
|
+
*
|
|
4153
|
+
* @returns CompteSolde Succès de l'opération
|
|
4154
|
+
* @throws ApiError
|
|
4155
|
+
*/
|
|
4156
|
+
static compteSoldeConsulter({ numero, }: {
|
|
4157
|
+
/**
|
|
4158
|
+
* Le numéro de compte sur lequel porte la demande
|
|
4159
|
+
*/
|
|
4160
|
+
numero: string;
|
|
4161
|
+
}): CancelablePromise<CompteSolde>;
|
|
4162
|
+
/**
|
|
4163
|
+
* Transfert intra-comptes
|
|
4164
|
+
* Le transfert intra-comptes est un transfert de fonds entre deux comptes détenus par la même entité juridique et domiciliés au sein de la même institution financière. Le compte source (débiteur/payeur) et le compte destination (créditeur/bénéficiaire) appartiennent donc au même client.
|
|
4165
|
+
*
|
|
4166
|
+
* @returns CompteTransfertIntraReponse Transfert initié avec succès.
|
|
4167
|
+
* @throws ApiError
|
|
4168
|
+
*/
|
|
4169
|
+
static compteTransfertIntraCreer({ requestBody, }: {
|
|
4170
|
+
/**
|
|
4171
|
+
* Données à fournir pour effectuer un transfert intra-comptes.
|
|
4172
|
+
*
|
|
4173
|
+
* Le client business peut effectuer un transfert intra-comptes en utilisant les numéros de compte ou les alias de compte.
|
|
4174
|
+
* La création d'alias n'étant possible que sur certains types de comptes, le participant doit supporter les deux modes de transfert.
|
|
4175
|
+
*
|
|
4176
|
+
*/
|
|
4177
|
+
requestBody: CompteTransfertIntraRequest;
|
|
4178
|
+
}): CancelablePromise<CompteTransfertIntraReponse>;
|
|
4179
|
+
/**
|
|
4180
|
+
* Lister les transferts intra-comptes
|
|
4181
|
+
* @returns CompteOperationListe Succès de l'opération
|
|
4182
|
+
* @throws ApiError
|
|
4183
|
+
*/
|
|
4184
|
+
static compteTransfertIntraLister({ statut, comptePayeur, comptePaye, dateEnvoi, dateIrrevocabilite, motif, page, size, sort, fields, }: {
|
|
4185
|
+
statut?: string;
|
|
4186
|
+
comptePayeur?: string;
|
|
4187
|
+
comptePaye?: string;
|
|
4188
|
+
dateEnvoi?: string;
|
|
4189
|
+
dateIrrevocabilite?: string;
|
|
4190
|
+
motif?: string;
|
|
4191
|
+
page?: string;
|
|
4192
|
+
size?: string;
|
|
4193
|
+
sort?: string;
|
|
4194
|
+
fields?: any;
|
|
4195
|
+
}): CancelablePromise<CompteOperationListe>;
|
|
4196
|
+
}
|
|
4197
|
+
|
|
4198
|
+
declare class DemandeAnnulationService {
|
|
4199
|
+
/**
|
|
4200
|
+
* Demander l'annulation d'un paiement
|
|
4201
|
+
* Ce point de terminaison permet de demander l'annulation d'un paiement envoyé.
|
|
4202
|
+
*
|
|
4203
|
+
* À l'acceptation de la demande d'annulation, le payé effectue un retour de fonds et le business recevra une notification `RETOUR_RECU` s'il a souscrit au service de webhook.
|
|
4204
|
+
*
|
|
4205
|
+
* Si le payé refuse la demande d'annulation, le business recevra une notification `ANNULATION_REJETE`.
|
|
4206
|
+
*
|
|
4207
|
+
* **Note importante sur l'idempotence :**
|
|
4208
|
+
*
|
|
4209
|
+
* Cet endpoint utilise **POST (pas PUT)** car chaque appel envoie une **nouvelle demande d'annulation** au PSP bénéficiaire.
|
|
4210
|
+
*
|
|
4211
|
+
* **Comportement :**
|
|
4212
|
+
* - Premier appel → Nouvelle demande d'annulation envoyée
|
|
4213
|
+
* - Deuxième appel → **Nouvelle demande d'annulation envoyée** (pas idempotent)
|
|
4214
|
+
* - Troisième appel → **Nouvelle demande d'annulation envoyée**
|
|
4215
|
+
*
|
|
4216
|
+
* **Cas d'usage :**
|
|
4217
|
+
* - La première demande a été refusée, vous réessayez
|
|
4218
|
+
* - Vous voulez relancer une demande en attente
|
|
4219
|
+
* - Vous avez de nouvelles informations justifiant l'annulation
|
|
4220
|
+
*
|
|
4221
|
+
* @returns Paiement Demande d'annulation envoyée
|
|
4222
|
+
* @throws ApiError
|
|
4223
|
+
*/
|
|
4224
|
+
static demandeAnnulationEnvoyer({ end2EndId, requestBody, }: {
|
|
4225
|
+
/**
|
|
4226
|
+
* L'identifiant unique de bout en bout de la transaction
|
|
4227
|
+
*/
|
|
4228
|
+
end2EndId: string;
|
|
4229
|
+
requestBody: PaiementAnnulationRequest;
|
|
4230
|
+
}): CancelablePromise<Paiement>;
|
|
4231
|
+
/**
|
|
4232
|
+
* Répondre à une demande d'annulation
|
|
4233
|
+
* Ce point de terminaison permet au business de répondre à une demande d'annulation de paiement.
|
|
4234
|
+
*
|
|
4235
|
+
* Le business peut accepter ou refuser la demande d'annulation :
|
|
4236
|
+
* - `decision: true` : Accepte la demande d'annulation (le business effectuera un retour de fonds)
|
|
4237
|
+
* - `decision: false` : Refuse la demande d'annulation
|
|
4238
|
+
*
|
|
4239
|
+
* **Idempotence** : Cet endpoint est idempotent.
|
|
4240
|
+
* - Premier appel avec `decision: true` → Accepte la demande, retourne `200 OK {statut: "ACCEPTEE"}`
|
|
4241
|
+
* - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel - idempotent
|
|
4242
|
+
* - Premier appel avec `decision: false` → Refuse la demande, retourne `200 OK {statut: "REJETEE"}`
|
|
4243
|
+
* - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "REJETEE"}` (idempotent)
|
|
4244
|
+
* - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà refusée)
|
|
4245
|
+
* - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà acceptée)
|
|
4246
|
+
*
|
|
4247
|
+
* @returns Paiement Réponse à la demande d'annulation enregistrée.
|
|
4248
|
+
*
|
|
4249
|
+
* La réponse retourne l'objet `Paiement` complet avec les champs mis à jour selon la décision :
|
|
4250
|
+
*
|
|
4251
|
+
* **En cas d'acceptation (`decision: true`)** :
|
|
4252
|
+
* - `annulationStatut` : Mis à jour pour indiquer l'acceptation
|
|
4253
|
+
* - `annulationDateReponse` : Date et heure de la réponse à la demande d'annulation
|
|
4254
|
+
* - Un retour de fonds est automatiquement initié par le participant, donc les champs suivants sont également renseignés :
|
|
4255
|
+
* - `retourStatut` : Statut du retour de fonds (ex: `INITIE`, `ENVOYE`, `IRREVOCABLE`)
|
|
4256
|
+
* - `retourStatutRaison` : Raison du statut du retour de fonds
|
|
4257
|
+
* - `retourDateDemande` : Date de création du retour de fonds
|
|
4258
|
+
* - `retourDateIrrevocabilite` : Date à laquelle le retour de fonds est irrévocable (si applicable)
|
|
4259
|
+
*
|
|
4260
|
+
* **En cas de rejet (`decision: false`)** :
|
|
4261
|
+
* - `annulationStatut` : Mis à jour pour indiquer le rejet (ex: `REJETE`)
|
|
4262
|
+
* - `annulationDateReponse` : Date et heure de la réponse à la demande d'annulation
|
|
4263
|
+
* - Les champs `retour*` ne sont **pas** renseignés car aucun retour de fonds n'est effectué
|
|
4264
|
+
*
|
|
4265
|
+
* @throws ApiError
|
|
4266
|
+
*/
|
|
4267
|
+
static demandeAnnulationRepondre({ end2EndId, requestBody, }: {
|
|
4268
|
+
/**
|
|
4269
|
+
* L'identifiant unique de bout en bout de la transaction
|
|
4270
|
+
*/
|
|
4271
|
+
end2EndId: string;
|
|
4272
|
+
/**
|
|
4273
|
+
* La réponse du business à la demande d'annulation
|
|
4274
|
+
*/
|
|
4275
|
+
requestBody: PaiementAnnulationReponseRequest;
|
|
4276
|
+
}): CancelablePromise<Paiement>;
|
|
4277
|
+
}
|
|
4278
|
+
|
|
4279
|
+
declare class DemandesDePaiementService {
|
|
4280
|
+
/**
|
|
4281
|
+
* Envoyer une demande
|
|
4282
|
+
* Ce point de terminaison permet d'envoyer une demande de paiement.
|
|
4283
|
+
*
|
|
4284
|
+
* 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 payeur), puis attendra une confirmation explicite avant d'envoyer la demande de paiement au payeur via l'endpoint `PUT /demandes-paiements/{txId}/confirmations`.
|
|
4285
|
+
*
|
|
4286
|
+
* Si le champ `confirmation` n'est pas défini ou est à `false`, le système envoie directement la demande de paiement au payeur.
|
|
4287
|
+
*
|
|
4288
|
+
* **Timeout de confirmation** : Si le business demande une validation en deux étapes , il dispose de **24 heures** pour confirmer ou annuler. Passé ce délai, la demande expire automatiquement.
|
|
4289
|
+
*
|
|
4290
|
+
* @returns DemandePaiementReponse Demande de paiement traitée. Le champ `statut` indique le résultat :
|
|
4291
|
+
* - `INITIE` : En attente de confirmation (si `confirmation: true`)
|
|
4292
|
+
* - `ENVOYE` : Demande envoyée au payeur avec succès (si `confirmation: false`)
|
|
4293
|
+
* - `REJETE` : Demande rejetée. Le champ `statutRaison` contient le code d'erreur :
|
|
4294
|
+
* - `DU03` : txId dupliqué (déjà utilisé)
|
|
4295
|
+
* - `BE23` : Alias payeur invalide
|
|
4296
|
+
* - Autres codes ISO 20022
|
|
4297
|
+
*
|
|
4298
|
+
* @throws ApiError
|
|
4299
|
+
*/
|
|
4300
|
+
static demandePaiementCreer({ requestBody, }: {
|
|
4301
|
+
/**
|
|
4302
|
+
* Données pour envoyer une demande de paiement.
|
|
4303
|
+
*/
|
|
4304
|
+
requestBody: DemandePaiementRequest;
|
|
4305
|
+
}): CancelablePromise<DemandePaiementReponse>;
|
|
4306
|
+
/**
|
|
4307
|
+
* Lister les demandes
|
|
4308
|
+
* Ce point de terminaison permet de lister les demandes de paiements effectuées par le client.
|
|
4309
|
+
* @returns DemandePaiementListe Succès de l'opération
|
|
4310
|
+
* @throws ApiError
|
|
4311
|
+
*/
|
|
4312
|
+
static demandePaiementLister({ payeAlias, payeCompte, dateEnvoi, dateLimitePaiement, statut, categorie, payeurAlias, payeurCompte, montantAchat, montantRetrait, debitDiffere, remise, motif, refDocType, instructionId, page, size, sort, fields, }: {
|
|
4313
|
+
payeAlias?: string;
|
|
4314
|
+
payeCompte?: string;
|
|
4315
|
+
dateEnvoi?: string;
|
|
4316
|
+
dateLimitePaiement?: string;
|
|
4317
|
+
statut?: 'INITIE' | 'ENVOYE' | 'IRREVOCABLE' | 'REJETE';
|
|
4318
|
+
categorie?: '631' | '500' | '521' | '401';
|
|
4319
|
+
payeurAlias?: string;
|
|
4320
|
+
payeurCompte?: string;
|
|
4321
|
+
montantAchat?: number;
|
|
4322
|
+
montantRetrait?: number;
|
|
4323
|
+
debitDiffere?: boolean;
|
|
4324
|
+
remise?: boolean;
|
|
4325
|
+
motif?: string;
|
|
4326
|
+
refDocType?: string;
|
|
4327
|
+
instructionId?: string;
|
|
4328
|
+
page?: string;
|
|
4329
|
+
size?: number;
|
|
4330
|
+
sort?: string;
|
|
4331
|
+
fields?: any;
|
|
4332
|
+
}): CancelablePromise<DemandePaiementListe>;
|
|
4333
|
+
/**
|
|
4334
|
+
* Consulter une demande
|
|
4335
|
+
* Cet point de terminaison permet de consulter les details d'une demande de paiement.
|
|
4336
|
+
*
|
|
4337
|
+
* @returns DemandePaiementConsultationReponse Opération effectuée avec succès
|
|
4338
|
+
* @throws ApiError
|
|
4339
|
+
*/
|
|
4340
|
+
static demandePaiementRecuperer({ txId, }: {
|
|
4341
|
+
/**
|
|
4342
|
+
* L'identifiant de la transaction dans le SI du client business
|
|
4343
|
+
*/
|
|
4344
|
+
txId: string;
|
|
4345
|
+
}): CancelablePromise<DemandePaiementConsultationReponse>;
|
|
4346
|
+
/**
|
|
4347
|
+
* Confirmer la demande
|
|
4348
|
+
* Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'une demande de paiement.
|
|
4349
|
+
*
|
|
4350
|
+
* Le client business confirme oui ou non si le PSP peut envoyer la demande au payeur après vérification des informations d'identification (nom et pays du payeur).
|
|
4351
|
+
*
|
|
4352
|
+
* **Idempotence** : Cet endpoint est idempotent.
|
|
4353
|
+
* - Premier appel avec `decision: true` → Envoie la demande, retourne `200 OK {statut: "ENVOYE"}`
|
|
4354
|
+
* - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
|
|
4355
|
+
* - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
|
|
4356
|
+
* - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
|
|
4357
|
+
* - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
|
|
4358
|
+
* - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
|
|
4359
|
+
*
|
|
4360
|
+
* **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.
|
|
4361
|
+
*
|
|
4362
|
+
* **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
|
|
4363
|
+
*
|
|
4364
|
+
* @returns DemandePaiementConfirmationReponse Opération effectuée avec succès
|
|
4365
|
+
* @throws ApiError
|
|
4366
|
+
*/
|
|
4367
|
+
static demandePaiementConfirmer({ txId, requestBody, }: {
|
|
4368
|
+
/**
|
|
4369
|
+
* L'identifiant de la transaction dans le SI du payé
|
|
4370
|
+
*/
|
|
4371
|
+
txId: string;
|
|
4372
|
+
/**
|
|
4373
|
+
* Le client envoie oui ou non s'il confirme l'envoi de la demande
|
|
4374
|
+
*/
|
|
4375
|
+
requestBody: DemandePaiementConfirmationRequest;
|
|
4376
|
+
}): CancelablePromise<DemandePaiementConfirmationReponse>;
|
|
4377
|
+
/**
|
|
4378
|
+
* Accepter ou rejeter la demande
|
|
4379
|
+
* Ce point de terminaison permet au client d'accepter ou de rejeter une demande de paiement reçue.
|
|
4380
|
+
* @returns any Opération effectuée avec succès
|
|
4381
|
+
* @throws ApiError
|
|
4382
|
+
*/
|
|
4383
|
+
static demandePaiementRepondre({ txId, requestBody, }: {
|
|
4384
|
+
/**
|
|
4385
|
+
* L'identifiant de la transaction dans le SI du client
|
|
4386
|
+
*/
|
|
4387
|
+
txId: string;
|
|
4388
|
+
/**
|
|
4389
|
+
* Réponse à la demande de paiement.
|
|
4390
|
+
*/
|
|
4391
|
+
requestBody: DemandePaiementReponseRequest;
|
|
4392
|
+
}): CancelablePromise<any>;
|
|
4393
|
+
}
|
|
4394
|
+
|
|
4395
|
+
declare class DemandesDePaiementEnMasseService {
|
|
4396
|
+
/**
|
|
4397
|
+
* Envoyer une demande de paiement en masse
|
|
4398
|
+
* Ce point de terminaison permet au client business d'envoyer plusieurs demandes de paiement à la fois.
|
|
4399
|
+
*
|
|
4400
|
+
* La catégorie des demandes de paiement en masse est toujours `401` (Autres demandes de paiement de facture).
|
|
4401
|
+
*
|
|
4402
|
+
* **Traitement asynchrone :** La création retourne immédiatement `202 Accepted`. Le traitement des transactions se fait de manière asynchrone.
|
|
4403
|
+
*
|
|
4404
|
+
* **Sans confirmation (`confirmation: false` ou non spécifié) :**
|
|
4405
|
+
* - Les transactions sont créées et validées (unicité des txId)
|
|
4406
|
+
* - Les demandes de paiement sont envoyées directement aux payeurs
|
|
4407
|
+
* - Les transactions avec txId dupliqué sont automatiquement rejetées avec le code `DU03`
|
|
4408
|
+
* - Les transactions avec alias de payeur invalide sont automatiquement rejetées avec le code `BE23`
|
|
4409
|
+
*
|
|
4410
|
+
* **Avec confirmation (`confirmation: true`) :**
|
|
4411
|
+
* - Les transactions sont créées et validées (unicité des txId + recherche d'alias des payeurs)
|
|
4412
|
+
* - Les transactions avec alias de payeur invalide sont rejetées avec le code `BE23`
|
|
4413
|
+
* - Les transactions avec txId dupliqué sont rejetées avec le code `DU03`
|
|
4414
|
+
* - Les transactions valides passent à l'état `INITIE` avec les noms et pays des payeurs
|
|
4415
|
+
* - Le business dispose d'un **délai adaptatif** pour confirmer ou annuler via `PUT /demandes-paiements-groupes/{instructionId}/confirmations` :
|
|
4416
|
+
* - **1 à 500 transactions** : 24 heures
|
|
4417
|
+
* - **501 à 1000 transactions** : 48 heures
|
|
4418
|
+
* - **Plus de 1000 transactions** : 72 heures
|
|
4419
|
+
* - Lors de la confirmation, seules les transactions `INITIE` sont envoyées (les transactions `REJETE` sont automatiquement exclues)
|
|
4420
|
+
* - Passé le délai, la demande expire automatiquement
|
|
4421
|
+
*
|
|
4422
|
+
* **Consultation des détails :**
|
|
4423
|
+
* - Statut global du bulk : `GET /demandes-paiements-groupes/{instructionId}`
|
|
4424
|
+
* - Liste de toutes les transactions : `GET /demandes-paiements?instructionId={instructionId}`
|
|
4425
|
+
* - Seulement les rejetées (validation) : `GET /demandes-paiements?instructionId={instructionId}&statut=REJETE`
|
|
4426
|
+
* - Seulement les valides (avec noms/pays des payeurs) : `GET /demandes-paiements?instructionId={instructionId}&statut=INITIE`
|
|
4427
|
+
*
|
|
4428
|
+
* **Convention de nommage des instructionId (important) :**
|
|
4429
|
+
*
|
|
4430
|
+
* L'`instructionId` doit être **unique** pour chaque création de bulk. Pour faciliter le suivi métier, nous recommandons la convention suivante :
|
|
4431
|
+
*
|
|
4432
|
+
* ```
|
|
4433
|
+
* <IDENTIFIANT_METIER>-<NUMERO_TENTATIVE>
|
|
4434
|
+
* ```
|
|
4435
|
+
*
|
|
4436
|
+
* **Exemples :**
|
|
4437
|
+
* - Première tentative : `FACTURES-2025-01-1` (factures de janvier 2025, tentative 1)
|
|
4438
|
+
* - Deuxième tentative : `FACTURES-2025-01-2` (corrections après échecs)
|
|
4439
|
+
* - Troisième tentative : `FACTURES-2025-01-3` (nouvelles corrections)
|
|
4440
|
+
*
|
|
4441
|
+
* **Avantages :**
|
|
4442
|
+
* - ✅ Chaque bulk a un statut indépendant (INITIE, CONFIRME, ANNULE)
|
|
4443
|
+
* - ✅ Traçabilité claire des tentatives successives
|
|
4444
|
+
* - ✅ Possibilité de filtrer par identifiant métier : `GET /demandes-paiements?instructionId[beginsWith]=FACTURES-2025-01`
|
|
4445
|
+
* - ✅ Respect de l'unicité de l'instructionId
|
|
4446
|
+
*
|
|
4447
|
+
* @returns string La demande a été acceptée et est en cours de traitement.
|
|
4448
|
+
*
|
|
4449
|
+
* Consultez le statut via `GET /demandes-paiements-groupes/{instructionId}`.
|
|
4450
|
+
*
|
|
4451
|
+
* @throws ApiError
|
|
4452
|
+
*/
|
|
4453
|
+
static demandePaiementGroupeCreer({ requestBody, }: {
|
|
4454
|
+
requestBody: DemandePaiementEnMasseRequest;
|
|
4455
|
+
}): CancelablePromise<string>;
|
|
4456
|
+
/**
|
|
4457
|
+
* Détails d'une demande de paiement en masse
|
|
4458
|
+
* Ce point de terminaison permet de consulter les détails d'une demande de paiement en masse.
|
|
4459
|
+
*
|
|
4460
|
+
* **Statut du bulk :**
|
|
4461
|
+
* - `INITIE` : Créée avec confirmation demandée, en attente de confirmation
|
|
4462
|
+
* - `CONFIRME` : Confirmée par le business (si confirmation demandée) ou en cours de traitement (si sans confirmation)
|
|
4463
|
+
* - `ANNULE` : Annulée par le business avant confirmation (seulement si confirmation demandée)
|
|
4464
|
+
*
|
|
4465
|
+
* **Note :**
|
|
4466
|
+
* - Si créée **avec confirmation** (`confirmation: true`) : Le statut évolue de `INITIE` → `CONFIRME` ou `ANNULE`
|
|
4467
|
+
* - Si créée **sans confirmation** (`confirmation: false`) : Le statut est directement `CONFIRME` (aucune action requise du business)
|
|
4468
|
+
*
|
|
4469
|
+
* **Vérification de fin de validation (important pour confirmation) :**
|
|
4470
|
+
*
|
|
4471
|
+
* Lorsque `confirmation: true`, la validation des transactions se fait de manière asynchrone.
|
|
4472
|
+
* Pour savoir si la validation est terminée et que vous pouvez confirmer, vérifiez que :
|
|
4473
|
+
*
|
|
4474
|
+
* ```
|
|
4475
|
+
* transactionsInitiees + transactionsRejetees = transactionsTotal
|
|
4476
|
+
* ```
|
|
4477
|
+
*
|
|
4478
|
+
* - Si égalité → Validation terminée, vous pouvez confirmer ✅
|
|
4479
|
+
* - Si inégalité → Validation en cours, attendez encore (consultez à nouveau plus tard) ⏳
|
|
4480
|
+
*
|
|
4481
|
+
* Le détail de chaque transaction se consulte via `GET /demandes-paiements?txId={txId}`.
|
|
4482
|
+
*
|
|
4483
|
+
* **Consultation des transactions individuelles :**
|
|
4484
|
+
* Pour obtenir la liste détaillée des transactions (avec noms des payeurs, codes d'erreur, etc.), utilisez :
|
|
4485
|
+
* - Toutes les transactions : `GET /demandes-paiements?instructionId={instructionId}`
|
|
4486
|
+
* - Seulement les rejetées : `GET /demandes-paiements?instructionId={instructionId}&statut=REJETE`
|
|
4487
|
+
* - Seulement les réussies : `GET /demandes-paiements?instructionId={instructionId}&statut=IRREVOCABLE`
|
|
4488
|
+
*
|
|
4489
|
+
* @returns DemandePaiementEnMasseStatutReponse Opération effectuée avec succès
|
|
4490
|
+
* @throws ApiError
|
|
4491
|
+
*/
|
|
4492
|
+
static demandePaiementGroupeConsulter({ instructionId, }: {
|
|
4493
|
+
/**
|
|
4494
|
+
* L'identifiant de la demande de paiement en masse dans le SI du client
|
|
4495
|
+
*/
|
|
4496
|
+
instructionId: string;
|
|
4497
|
+
}): CancelablePromise<DemandePaiementEnMasseStatutReponse>;
|
|
4498
|
+
/**
|
|
4499
|
+
* Confirmer la demande de paiement en masse
|
|
4500
|
+
* Ce point de terminaison permet de confirmer ou d'annuler une demande de paiement en masse créée avec `confirmation: true`.
|
|
4501
|
+
*
|
|
4502
|
+
* **Processus de vérification :**
|
|
4503
|
+
* 1. Après la création (`POST /demandes-paiements-groupes`), le participant valide toutes les transactions (unicité des txId + recherche d'alias des payeurs)
|
|
4504
|
+
* 2. Les transactions invalides sont automatiquement rejetées (`statut: REJETE`) avec codes `BE23` (alias invalide) ou `DU03` (txId dupliqué)
|
|
4505
|
+
* 3. Les transactions valides passent à l'état `INITIE` avec les noms et pays des payeurs
|
|
4506
|
+
* 4. Le business consulte via `GET /demandes-paiements-groupes/{instructionId}` pour vérifier la progression de la validation
|
|
4507
|
+
* 5. **La validation (unicité des txId + recherche d'alias) est terminée quand** : `transactionsInitiees + transactionsRejetees = transactionsTotal`
|
|
4508
|
+
* 6. Le business peut alors confirmer ou annuler l'envoi des demandes de paiement
|
|
4509
|
+
*
|
|
4510
|
+
* **Important :** La confirmation n'est possible que lorsque la validation de toutes les transactions est terminée.
|
|
4511
|
+
* Si le business tente de confirmer pendant que la validation est en cours, une erreur 403 sera retournée avec la progression actuelle.
|
|
4512
|
+
*
|
|
4513
|
+
* **Comportement de la confirmation :**
|
|
4514
|
+
* - `decision: true` → Le système envoie **automatiquement SEULEMENT** les demandes de paiement pour les transactions avec `statut: INITIE`
|
|
4515
|
+
* - Les transactions `REJETE` (erreurs de validation) sont **automatiquement exclues** (pas besoin de les lister)
|
|
4516
|
+
* - Le statut du bulk passe de `INITIE` à `CONFIRME`
|
|
4517
|
+
*
|
|
4518
|
+
* **Idempotence** : Cet endpoint est idempotent.
|
|
4519
|
+
* - Premier appel avec `decision: true` → Envoie les demandes, retourne `200 OK {statut: "CONFIRME"}`
|
|
4520
|
+
* - Appels suivants avec `decision: true` → Retourne `200 OK {statut: "CONFIRME"}` (idempotent, ne relance pas)
|
|
4521
|
+
* - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
|
|
4522
|
+
* - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
|
|
4523
|
+
* - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
|
|
4524
|
+
* - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
|
|
4525
|
+
*
|
|
4526
|
+
* **Timeout adaptatif** : Le délai pour confirmer dépend automatiquement du nombre de transactions :
|
|
4527
|
+
* - **1 à 500 transactions** : 24 heures
|
|
4528
|
+
* - **501 à 1000 transactions** : 48 heures
|
|
4529
|
+
* - **Plus de 1000 transactions** : 72 heures
|
|
4530
|
+
*
|
|
4531
|
+
* Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée. Le délai exact est indiqué dans le champ `dateExpiration` retourné par `GET /demandes-paiements-groupes/{instructionId}`.
|
|
4532
|
+
*
|
|
4533
|
+
* **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
|
|
4534
|
+
*
|
|
4535
|
+
* @returns DemandePaiementEnMasseStatutReponse Confirmation enregistrée avec succès.
|
|
4536
|
+
* - Si `decision: true`, le statut passe à `CONFIRME` et les demandes de paiement sont envoyées
|
|
4537
|
+
* - Si `decision: false`, le statut passe à `ANNULE`
|
|
4538
|
+
*
|
|
4539
|
+
* @throws ApiError
|
|
4540
|
+
*/
|
|
4541
|
+
static demandePaiementGroupeConfirmer({ instructionId, requestBody, }: {
|
|
4542
|
+
/**
|
|
4543
|
+
* L'identifiant de la demande de paiement en masse dans le SI du client
|
|
4544
|
+
*/
|
|
4545
|
+
instructionId: string;
|
|
4546
|
+
/**
|
|
4547
|
+
* Le client envoie oui ou non s'il confirme l'envoi de la demande de paiement en masse.
|
|
4548
|
+
*/
|
|
4549
|
+
requestBody: DemandePaiementEnMasseConfirmationRequest;
|
|
4550
|
+
}): CancelablePromise<DemandePaiementEnMasseStatutReponse>;
|
|
4551
|
+
}
|
|
4552
|
+
|
|
4553
|
+
declare class NotificationService {
|
|
4554
|
+
/**
|
|
4555
|
+
* Créer un lien de rappel.
|
|
4556
|
+
* Cet endpoint permet au client de configurer des webhooks (liens de rappel) pour recevoir des notifications en temps réel.
|
|
4557
|
+
*
|
|
4558
|
+
* Le client dispose d'une grande flexibilité dans la configuration de ses webhooks et peut choisir parmi plusieurs stratégies :
|
|
4559
|
+
*
|
|
4560
|
+
* **1. Callback URL général**
|
|
4561
|
+
* - Un seul point de rappel pour toutes les notifications
|
|
4562
|
+
* - Tous les événements de tous les comptes/alias sont envoyés à la même URL
|
|
4563
|
+
* - Configuration simple, idéale pour centraliser toutes les notifications
|
|
4564
|
+
*
|
|
4565
|
+
* **2. Callback URL par alias**
|
|
4566
|
+
* - Un point de rappel distinct pour chaque alias de compte
|
|
4567
|
+
* - Permet de router les notifications vers des systèmes différents selon le compte concerné
|
|
4568
|
+
* - Utile pour isoler les flux de notifications par compte ou par service
|
|
4569
|
+
*
|
|
4570
|
+
* **3. Callback URL par événement**
|
|
4571
|
+
* - Un point de rappel spécifique pour chaque type d'événement (PAIEMENT_RECU, RTP_RECU, etc.)
|
|
4572
|
+
* - Permet de traiter différemment chaque catégorie d'événement
|
|
4573
|
+
* - Facilite la séparation des traitements métier (paiements vs demandes vs retours)
|
|
4574
|
+
*
|
|
4575
|
+
* **4. Callback URL par événement et alias**
|
|
4576
|
+
* - Granularité maximale : un point de rappel pour chaque combinaison événement/alias
|
|
4577
|
+
* - Configuration la plus fine pour des besoins très spécifiques
|
|
4578
|
+
* - Permet de router précisément chaque notification vers le système approprié
|
|
4579
|
+
*
|
|
4580
|
+
* Cette flexibilité permet aux clients d'adapter la configuration des webhooks à leur architecture technique et à leurs besoins métier.
|
|
4581
|
+
*
|
|
4582
|
+
* @returns WebhookCreationResponse Webhook créé avec succès
|
|
4583
|
+
* @throws ApiError
|
|
4584
|
+
*/
|
|
4585
|
+
static webhookCreer({ requestBody, }: {
|
|
4586
|
+
requestBody: WebhookCreationRequest;
|
|
4587
|
+
}): CancelablePromise<WebhookCreationResponse>;
|
|
4588
|
+
/**
|
|
4589
|
+
* Lister les webhooks
|
|
4590
|
+
* Endpoint pour lister les webhooks
|
|
4591
|
+
*
|
|
4592
|
+
* @returns WebhookList Liste des webhooks configurés
|
|
4593
|
+
* @throws ApiError
|
|
4594
|
+
*/
|
|
4595
|
+
static webhookLister(): CancelablePromise<WebhookList>;
|
|
4596
|
+
/**
|
|
4597
|
+
* Modifier un Webhook
|
|
4598
|
+
* Endpoint pour la modification d'un webhook.
|
|
4599
|
+
*
|
|
4600
|
+
* @returns any Le Webhook a été modifié avec succès
|
|
4601
|
+
* @throws ApiError
|
|
4602
|
+
*/
|
|
4603
|
+
static webhookModifier({ id, requestBody, }: {
|
|
4604
|
+
id: string;
|
|
4605
|
+
requestBody: WebhookModificationRequest;
|
|
4606
|
+
}): CancelablePromise<any>;
|
|
4607
|
+
/**
|
|
4608
|
+
* Supprimer un Webhook
|
|
4609
|
+
* Endpoint pour la suppression d'un webhook.
|
|
4610
|
+
*
|
|
4611
|
+
* @returns void
|
|
4612
|
+
* @throws ApiError
|
|
4613
|
+
*/
|
|
4614
|
+
static webhookSupprimer({ id, }: {
|
|
4615
|
+
id: string;
|
|
4616
|
+
}): CancelablePromise<void>;
|
|
4617
|
+
/**
|
|
4618
|
+
* Recuperer un webhook
|
|
4619
|
+
* Endpoint pour la consultation des informations d'un Webhook
|
|
4620
|
+
* @returns WebhookData Details du webhook
|
|
4621
|
+
* @throws ApiError
|
|
4622
|
+
*/
|
|
4623
|
+
static webhookConsulter({ id, }: {
|
|
4624
|
+
id: string;
|
|
4625
|
+
}): CancelablePromise<WebhookData>;
|
|
4626
|
+
}
|
|
4627
|
+
|
|
4628
|
+
declare class PaiementEnMasseService {
|
|
4629
|
+
/**
|
|
4630
|
+
* Envoyer un paiement en masse
|
|
4631
|
+
* Ce point de terminaison permet au client d'envoyer des paiements en masse.
|
|
4632
|
+
*
|
|
4633
|
+
* **Traitement asynchrone :** La création d'un paiement en masse retourne immédiatement `202 Accepted`. Le traitement des transactions se fait de manière asynchrone.
|
|
4634
|
+
*
|
|
4635
|
+
* **Sans confirmation (`confirmation: false` ou non spécifié) :**
|
|
4636
|
+
* - Les transactions sont créées et validées (unicité des txId)
|
|
4637
|
+
* - Les paiements sont exécutés directement
|
|
4638
|
+
* - Les transactions invalides (txId dupliqué) sont automatiquement rejetées avec le code `DU03`
|
|
4639
|
+
* - Le business peut suivre la progression via `GET /paiements-groupes/{instructionId}` et `GET /paiements?instructionId={instructionId}`
|
|
4640
|
+
*
|
|
4641
|
+
* **Avec confirmation (`confirmation: true`) :**
|
|
4642
|
+
* - Les transactions sont créées et validées (unicité des txId + recherche d'alias)
|
|
4643
|
+
* - Les transactions avec alias invalide sont automatiquement rejetées avec le code `BE23`
|
|
4644
|
+
* - Les transactions avec txId dupliqué sont rejetées avec le code `DU03`
|
|
4645
|
+
* - Les transactions valides passent à l'état `INITIE` et peuvent être consultées via `GET /paiements?instructionId={instructionId}&statut=INITIE`
|
|
4646
|
+
* - Le business dispose d'un **délai adaptatif** pour confirmer ou annuler via `PUT /paiements-groupes/{instructionId}/confirmations` :
|
|
4647
|
+
* - **1 à 500 transactions** : 24 heures
|
|
4648
|
+
* - **501 à 1000 transactions** : 48 heures
|
|
4649
|
+
* - **Plus de 1000 transactions** : 72 heures
|
|
4650
|
+
* - Lors de la confirmation, seules les transactions `INITIE` sont envoyées (les transactions `REJETE` sont automatiquement exclues)
|
|
4651
|
+
* - Passé le délai, la demande expire automatiquement
|
|
4652
|
+
*
|
|
4653
|
+
* **Consultation des détails :**
|
|
4654
|
+
* - Statut global du bulk : `GET /paiements-groupes/{instructionId}`
|
|
4655
|
+
* - Liste de toutes les transactions : `GET /paiements?instructionId={instructionId}`
|
|
4656
|
+
* - Seulement les rejetées (validation) : `GET /paiements?instructionId={instructionId}&statut=REJETE`
|
|
4657
|
+
* - Seulement les valides (avec noms/pays) : `GET /paiements?instructionId={instructionId}&statut=INITIE`
|
|
4658
|
+
*
|
|
4659
|
+
* **Convention de nommage des instructionId (important) :**
|
|
4660
|
+
*
|
|
4661
|
+
* L'`instructionId` doit être **unique** pour chaque création de bulk. Pour faciliter le suivi métier, nous recommandons la convention suivante :
|
|
4662
|
+
*
|
|
4663
|
+
* ```
|
|
4664
|
+
* <IDENTIFIANT_METIER>-<NUMERO_TENTATIVE>
|
|
4665
|
+
* ```
|
|
4666
|
+
*
|
|
4667
|
+
* **Exemples :**
|
|
4668
|
+
* - Première tentative : `SALAIRES-2025-01-1` (salaires de janvier 2025, tentative 1)
|
|
4669
|
+
* - Deuxième tentative : `SALAIRES-2025-01-2` (corrections après échecs)
|
|
4670
|
+
* - Troisième tentative : `SALAIRES-2025-01-3` (nouvelles corrections)
|
|
4671
|
+
*
|
|
4672
|
+
* **Avantages :**
|
|
4673
|
+
* - ✅ Chaque bulk a un statut indépendant (INITIE, CONFIRME, ANNULE)
|
|
4674
|
+
* - ✅ Traçabilité claire des tentatives successives
|
|
4675
|
+
* - ✅ Possibilité de filtrer par identifiant métier : `GET /paiements?instructionId[beginsWith]=SALAIRES-2025-01`
|
|
4676
|
+
* - ✅ Respect de l'unicité de l'instructionId
|
|
4677
|
+
*
|
|
4678
|
+
* @returns string La demande a été acceptée et est en cours de traitement.
|
|
4679
|
+
*
|
|
4680
|
+
* Consultez le statut via `GET /paiements-groupes/{instructionId}`.
|
|
4681
|
+
*
|
|
4682
|
+
* @throws ApiError
|
|
4683
|
+
*/
|
|
4684
|
+
static paiementGroupeCreer({ requestBody, }: {
|
|
4685
|
+
requestBody: PaiementEnMasseRequest;
|
|
4686
|
+
}): CancelablePromise<string>;
|
|
4687
|
+
/**
|
|
4688
|
+
* Détails d'un paiement en masse
|
|
4689
|
+
* Ce point de terminaison permet de consulter les détails d'un paiement en masse.
|
|
4690
|
+
*
|
|
4691
|
+
* **Statut du bulk :**
|
|
4692
|
+
* - `INITIE` : Créé avec confirmation demandée, en attente de confirmation
|
|
4693
|
+
* - `CONFIRME` : Confirmé par le business (si confirmation demandée) ou en cours de traitement (si sans confirmation)
|
|
4694
|
+
* - `ANNULE` : Annulé par le business avant confirmation (seulement si confirmation demandée)
|
|
4695
|
+
*
|
|
4696
|
+
* **Note :**
|
|
4697
|
+
* - Si créé **avec confirmation** (`confirmation: true`) : Le statut évolue de `INITIE` → `CONFIRME` ou `ANNULE`
|
|
4698
|
+
* - Si créé **sans confirmation** (`confirmation: false`) : Le statut est directement `CONFIRME` (aucune action requise du business)
|
|
4699
|
+
*
|
|
4700
|
+
* **Vérification de fin de validation (important pour confirmation) :**
|
|
4701
|
+
*
|
|
4702
|
+
* Lorsque `confirmation: true`, la validation des transactions se fait de manière asynchrone.
|
|
4703
|
+
* Pour savoir si la validation est terminée et si vous pouvez confirmer, vérifiez que :
|
|
4704
|
+
*
|
|
4705
|
+
* ```
|
|
4706
|
+
* transactionsInitiees + transactionsRejetees = transactionsTotal
|
|
4707
|
+
* ```
|
|
4708
|
+
*
|
|
4709
|
+
* - Si égalité → Validation terminée, vous pouvez confirmer ✅
|
|
4710
|
+
* - Si inégalité → Validation en cours, attendez encore (consultez à nouveau dans quelques secondes) ⏳
|
|
4711
|
+
*
|
|
4712
|
+
* La progression détaillée de chaque transaction se consulte via `GET /paiements?txId={txId}`.
|
|
4713
|
+
*
|
|
4714
|
+
* **Consultation des transactions individuelles :**
|
|
4715
|
+
* Pour obtenir la liste détaillée des transactions (avec noms des bénéficiaires, codes d'erreur, etc.), utilisez :
|
|
4716
|
+
* - Toutes les transactions : `GET /paiements?instructionId={instructionId}`
|
|
4717
|
+
* - Seulement les rejetées : `GET /paiements?instructionId={instructionId}&statut=REJETE`
|
|
4718
|
+
* - Seulement les réussies : `GET /paiements?instructionId={instructionId}&statut=IRREVOCABLE`
|
|
4719
|
+
*
|
|
4720
|
+
* @returns PaiementEnMasseReponseStatut Opération effectuée avec succès
|
|
4721
|
+
* @throws ApiError
|
|
4722
|
+
*/
|
|
4723
|
+
static paiementGroupeConsulter({ instructionId, }: {
|
|
4724
|
+
/**
|
|
4725
|
+
* L'identifiant du paiement en masse dans le SI du client
|
|
4726
|
+
*/
|
|
4727
|
+
instructionId: string;
|
|
4728
|
+
}): CancelablePromise<PaiementEnMasseReponseStatut>;
|
|
4729
|
+
/**
|
|
4730
|
+
* Confirmer le paiement en masse
|
|
4731
|
+
* Ce point de terminaison permet de confirmer ou d'annuler un paiement en masse créé avec `confirmation: true`.
|
|
4732
|
+
*
|
|
4733
|
+
* **Processus de vérification :**
|
|
4734
|
+
* 1. Après la création (`POST /paiements-groupes`), le participant valide asynchronement toutes les transactions (unicité des txId + recherche d'alias)
|
|
4735
|
+
* 2. Les transactions invalides sont automatiquement rejetées (`statut: REJETE`) avec codes `BE23` (alias invalide) ou `DU03` (txId dupliqué)
|
|
4736
|
+
* 3. Les transactions valides passent à l'état `INITIE` avec les noms et pays des bénéficiaires
|
|
4737
|
+
* 4. Le business consulte via `GET /paiements-groupes/{instructionId}` pour vérifier la progression de la validation
|
|
4738
|
+
* 5. **La validation est terminée quand** : `transactionsInitiees + transactionsRejetees = transactionsTotal`
|
|
4739
|
+
* 6. Le business peut alors confirmer ou annuler
|
|
4740
|
+
*
|
|
4741
|
+
* **Important :** La confirmation n'est possible que lorsque la validation de toutes les transactions est terminée.
|
|
4742
|
+
* Si le business tente de confirmer pendant que la validation est en cours, une erreur 403 sera retournée avec la progression actuelle.
|
|
4743
|
+
*
|
|
4744
|
+
* **Comportement de la confirmation :**
|
|
4745
|
+
* - `decision: true` → Le système envoie **automatiquement SEULEMENT** les transactions avec `statut: INITIE`
|
|
4746
|
+
* - Les transactions `REJETE` (erreurs de validation) sont **automatiquement exclues** (pas besoin de les lister)
|
|
4747
|
+
* - Le statut du bulk passe de `INITIE` à `CONFIRME`
|
|
4748
|
+
*
|
|
4749
|
+
* **Idempotence** : Cet endpoint est idempotent.
|
|
4750
|
+
* - Premier appel avec `decision: true` → Lance les paiements, retourne `200 OK {statut: "CONFIRME"}`
|
|
4751
|
+
* - Appels suivants avec `decision: true` → Retourne `200 OK {statut: "CONFIRME"}` (idempotent, ne relance pas)
|
|
4752
|
+
* - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
|
|
4753
|
+
* - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
|
|
4754
|
+
* - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
|
|
4755
|
+
* - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
|
|
4756
|
+
*
|
|
4757
|
+
* **Timeout adaptatif** : Le délai pour confirmer dépend automatiquement du nombre de transactions :
|
|
4758
|
+
* - **1 à 500 transactions** : 24 heures
|
|
4759
|
+
* - **501 à 1000 transactions** : 48 heures
|
|
4760
|
+
* - **Plus de 1000 transactions** : 72 heures
|
|
4761
|
+
*
|
|
4762
|
+
* Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée. Le délai exact est indiqué dans le champ `dateExpiration` retourné par `GET /paiements-groupes/{instructionId}`.
|
|
4763
|
+
*
|
|
4764
|
+
* **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
|
|
4765
|
+
*
|
|
4766
|
+
* @returns PaiementEnMasseReponseStatut Confirmation enregistrée avec succès.
|
|
4767
|
+
* - Si `decision: true`, le statut passe à `CONFIRME` et les paiements sont lancés
|
|
4768
|
+
* - Si `decision: false`, le statut passe à `ANNULE`
|
|
4769
|
+
*
|
|
4770
|
+
* @throws ApiError
|
|
4771
|
+
*/
|
|
4772
|
+
static paiementGroupeConfirmer({ instructionId, requestBody, }: {
|
|
4773
|
+
/**
|
|
4774
|
+
* L'identifiant du paiement en masse dans le SI du client
|
|
4775
|
+
*/
|
|
4776
|
+
instructionId: string;
|
|
4777
|
+
/**
|
|
4778
|
+
* Le client envoie oui ou non s'il confirme l'envoi du paiement en masse.
|
|
4779
|
+
*/
|
|
4780
|
+
requestBody: PaiementEnMasseConfirmationRequest;
|
|
4781
|
+
}): CancelablePromise<PaiementEnMasseReponseStatut>;
|
|
4782
|
+
}
|
|
4783
|
+
|
|
4784
|
+
declare class PaiementImmediatService {
|
|
4785
|
+
/**
|
|
4786
|
+
* Envoyer un paiement
|
|
4787
|
+
* Ce point de terminaison permet au business d'effectuer des paiements.
|
|
4788
|
+
*
|
|
4789
|
+
* Le destinataire du paiement est identifié par son alias de compte.
|
|
4790
|
+
*
|
|
4791
|
+
* 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`.
|
|
4792
|
+
*
|
|
4793
|
+
* **Timeout de confirmation** : Si le business demande une confirmation, il dispose de **24 heures** pour confirmer. Passé ce délai, la demande expire automatiquement.
|
|
4794
|
+
*
|
|
4795
|
+
* @returns PaiementImmediatReponse Paiement traité. Le champ `statut` indique le résultat :
|
|
4796
|
+
* - `INITIE` : En attente de confirmation (si `confirmation: true`)
|
|
4797
|
+
* - `ENVOYE` : Paiement envoyé avec succès (si `confirmation: false`)
|
|
4798
|
+
* - `REJETE` : Paiement rejeté. Le champ `statutRaison` contient le code d'erreur :
|
|
4799
|
+
* - `DU03` : txId dupliqué (déjà utilisé)
|
|
4800
|
+
* - `BE23` : Alias bénéficiaire invalide
|
|
4801
|
+
* - Autres codes ISO 20022
|
|
4802
|
+
*
|
|
4803
|
+
* @throws ApiError
|
|
4804
|
+
*/
|
|
4805
|
+
static paiementCreer({ requestBody, }: {
|
|
4806
|
+
/**
|
|
4807
|
+
* Pour effectuer le transfert, le client doit fournir l'alias du destinataire ainsi que le montant du transfert à effectuer.
|
|
4808
|
+
*/
|
|
4809
|
+
requestBody: PaiementImmediatRequest;
|
|
4810
|
+
}): CancelablePromise<PaiementImmediatReponse>;
|
|
4811
|
+
/**
|
|
4812
|
+
* Lister les paiements
|
|
4813
|
+
* Ce point de terminaison permet de lister les paiements effectués par le client.
|
|
4814
|
+
* @returns PaiementListe Succès de l'opération
|
|
4815
|
+
* @throws ApiError
|
|
4816
|
+
*/
|
|
4817
|
+
static paiementLister({ payeAlias, payeCompte, payeurAlias, payeurCompte, dateEnvoi, dateIrrevocabilite, statut, categorie, montantAchat, montantRetrait, motif, refDocType, instructionId, txId, annulationStatut, annulationMotif, retourStatut, page, size, sort, fields, }: {
|
|
4818
|
+
payeAlias?: string;
|
|
4819
|
+
payeCompte?: string;
|
|
4820
|
+
payeurAlias?: string;
|
|
4821
|
+
payeurCompte?: string;
|
|
4822
|
+
dateEnvoi?: string;
|
|
4823
|
+
dateIrrevocabilite?: string;
|
|
4824
|
+
statut?: 'INITIE' | 'ENVOYE' | 'IRREVOCABLE' | 'REJETE';
|
|
4825
|
+
categorie?: '631' | '000' | '400' | '733' | '300' | '999' | '500' | '521' | '401';
|
|
4826
|
+
montantAchat?: number;
|
|
4827
|
+
montantRetrait?: number;
|
|
4828
|
+
motif?: string;
|
|
4829
|
+
refDocType?: string;
|
|
4830
|
+
instructionId?: string;
|
|
4831
|
+
txId?: string;
|
|
4832
|
+
annulationStatut?: string;
|
|
4833
|
+
annulationMotif?: string;
|
|
4834
|
+
retourStatut?: string;
|
|
4835
|
+
page?: string;
|
|
4836
|
+
size?: string;
|
|
4837
|
+
sort?: string;
|
|
4838
|
+
fields?: any;
|
|
4839
|
+
}): CancelablePromise<PaiementListe>;
|
|
4840
|
+
/**
|
|
4841
|
+
* Détails d'un paiement
|
|
4842
|
+
* Cet point de terminaison permet de consulter les details d'un paiement.
|
|
4843
|
+
*
|
|
4844
|
+
* @returns Paiement Opération effectuée avec succès
|
|
4845
|
+
* @throws ApiError
|
|
4846
|
+
*/
|
|
4847
|
+
static paiementRecuperer({ txId, }: {
|
|
4848
|
+
/**
|
|
4849
|
+
* L'identifiant de la transaction dans le SI du client
|
|
4850
|
+
*/
|
|
4851
|
+
txId: string;
|
|
4852
|
+
}): CancelablePromise<Paiement>;
|
|
4853
|
+
/**
|
|
4854
|
+
* Confirmer le paiement
|
|
4855
|
+
* Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'un paiement immédiat
|
|
4856
|
+
* après vérification du nom et du pays du bénéficiaire.
|
|
4857
|
+
*
|
|
4858
|
+
* **Idempotence** : Cet endpoint est idempotent.
|
|
4859
|
+
* - Premier appel avec `decision: true` → Lance le paiement, retourne `200 OK {statut: "ENVOYE"}`
|
|
4860
|
+
* - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
|
|
4861
|
+
* - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
|
|
4862
|
+
* - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
|
|
4863
|
+
* - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
|
|
4864
|
+
* - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
|
|
4865
|
+
*
|
|
4866
|
+
* **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.
|
|
4867
|
+
*
|
|
4868
|
+
* **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
|
|
4869
|
+
*
|
|
4870
|
+
* @returns PaiementImmediatConfirmationReponse Paiement en cours d'envoi
|
|
4871
|
+
* @throws ApiError
|
|
4872
|
+
*/
|
|
4873
|
+
static paiementConfirmer({ txId, requestBody, }: {
|
|
4874
|
+
/**
|
|
4875
|
+
* L'identifiant de la transaction dans le SI du payé
|
|
4876
|
+
*/
|
|
4877
|
+
txId: string;
|
|
4878
|
+
/**
|
|
4879
|
+
* Le client envoie oui ou non s'il confirme l'envoi du paiement.
|
|
4880
|
+
*/
|
|
4881
|
+
requestBody: PaiementImmediatConfirmationRequest;
|
|
4882
|
+
}): CancelablePromise<PaiementImmediatConfirmationReponse>;
|
|
4883
|
+
/**
|
|
4884
|
+
* Vérifier un paiement
|
|
4885
|
+
* Ce point de terminaison permet de vérifier la réception d’un paiement à partir de l’`end2endId`.
|
|
4886
|
+
*
|
|
4887
|
+
* Dans certains cas, le **client business** peut ne pas avoir reçu la notification de paiement.
|
|
4888
|
+
* Le **client payeur** peut alors lui communiquer l’`end2endId` afin qu’il puisse vérifier manuellement le statut du paiement.
|
|
4889
|
+
*
|
|
4890
|
+
* 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.
|
|
4891
|
+
*
|
|
4892
|
+
* Le statut retourné doit être soit :
|
|
4893
|
+
* - `IRREVOCABLE` (paiement irrévocable), ou
|
|
4894
|
+
* - `REJETE` (paiement rejeté).
|
|
4895
|
+
*
|
|
4896
|
+
* Un transfert **ne peut pas** être signalé comme « en cours de traitement » dans ce contexte.
|
|
4897
|
+
*
|
|
4898
|
+
* ⚠️ **Remarques :**
|
|
4899
|
+
* - 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.
|
|
4900
|
+
* - La garantie de réponse n’est assurée qu’à partir de **20 secondes après l’envoi du transfert**.
|
|
4901
|
+
*
|
|
4902
|
+
* @returns Paiement Opération effectuée avec succès
|
|
4903
|
+
* @throws ApiError
|
|
4904
|
+
*/
|
|
4905
|
+
static paiementVerifier({ end2EndId, }: {
|
|
4906
|
+
/**
|
|
4907
|
+
* L'identifiant de bout en bout de la transaction
|
|
4908
|
+
*/
|
|
4909
|
+
end2EndId: string;
|
|
4910
|
+
}): CancelablePromise<Paiement>;
|
|
4911
|
+
}
|
|
4912
|
+
|
|
4913
|
+
declare class RetoursdeFondsService {
|
|
4914
|
+
/**
|
|
4915
|
+
* Retourner les fonds
|
|
4916
|
+
* Ce point de terminaison permet au business de retourner les fonds d'un paiement reçu.
|
|
4917
|
+
*
|
|
4918
|
+
* **Idempotence** : Cet endpoint est idempotent. Plusieurs appels avec le même `end2endId` produiront le même résultat.
|
|
4919
|
+
* Si le retour de fonds a déjà été envoyé et irrévocable, le champ `retourStatut` de la réponse sera `IRREVOCABLE`.
|
|
4920
|
+
* Si le retour de fonds a été envoyé et rejeté, le retour de fonds sera envoyé à nouveau.
|
|
4921
|
+
* Si le retour de fonds est en cours d'envoi, le champ `retourStatut` de la réponse sera `INITIE`.
|
|
4922
|
+
*
|
|
4923
|
+
* **Notifications webhook** : Après envoi du retour de fonds, si le business a souscrit au service de webhook, il recevra :
|
|
4924
|
+
* - Une notification `RETOUR_ENVOYE` en cas de succès du retour de fonds
|
|
4925
|
+
* - Une notification `RETOUR_REJETE` en cas de rejet de la demande
|
|
4926
|
+
*
|
|
4927
|
+
* **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.
|
|
4928
|
+
*
|
|
4929
|
+
* @returns Paiement Retour de fonds enregistré avec succès
|
|
4930
|
+
* @throws ApiError
|
|
4931
|
+
*/
|
|
4932
|
+
static retourFondsEnvoyer({ end2EndId, }: {
|
|
4933
|
+
/**
|
|
4934
|
+
* L'identifiant unique de bout en bout de la transaction
|
|
4935
|
+
*/
|
|
4936
|
+
end2EndId: string;
|
|
4937
|
+
}): CancelablePromise<Paiement>;
|
|
4938
|
+
}
|
|
4939
|
+
|
|
4940
|
+
export { ACCOUNT_STATUS, ACCOUNT_TYPE, ALIAS_TYPES, type AdditionalDataOverrides, type AliasCreationReponse, type AliasCreationRequest, type AliasReponseListe, AliasService, AliasType, AliasType as AliasTypeType, AnnulationStatut, ApiError, CLIENT_TYPE, CURRENCY, CancelError, CancelablePromise, type Champs, CompteOperation, type CompteOperationListe, CompteSolde, CompteTransfertIntraReponse, type CompteTransfertIntraRequest, ComptesService, DEFAULT_LIMITS, DEFAULT_PISPI_LOGO_DATA_URL, DemandeAnnulationService, DemandePaiementConfirmationAnnulationRaison, DemandePaiementConfirmationReponse, type DemandePaiementConfirmationRequest, type DemandePaiementConfirmationRequestAccepter, type DemandePaiementConfirmationRequestRejeter, DemandePaiementConsultationReponse, type DemandePaiementEnMasseConfirmationRequest, type DemandePaiementEnMasseConfirmationRequestAccepter, type DemandePaiementEnMasseConfirmationRequestRejeter, type DemandePaiementEnMasseRequest, DemandePaiementEnMasseStatutReponse, type DemandePaiementListe, DemandePaiementListeItem, type DemandePaiementReponse, DemandePaiementReponseRequest, DemandePaiementRequest, type DemandePaiementRequestBase, DemandePaiementRequestCategorie, DemandePaiementStatut, DemandePaiementStatutRaison, DemandesDePaiementEnMasseService, DemandesDePaiementService, type FilterOperator, type ListeMeta, type LomiCustomerAliasType, type LomiCustomerQr, NotificationService, OpenAPI, type OpenAPIConfig, PAYMENT_STATUS, PISPI_AMBER_LOGO_DATA_URL, PISPI_QRCODE_LOGO_DATA_URL, PI_SPI_ENDPOINTS, Paiement, PaiementAnnulationMotif, type PaiementAnnulationReponseRequest, type PaiementAnnulationReponseRequestAccepter, type PaiementAnnulationReponseRequestRejeter, type PaiementAnnulationRequest, PaiementAnnulationStatutRaison, type PaiementEnMasseConfirmationRequest, type PaiementEnMasseConfirmationRequestAccepter, type PaiementEnMasseConfirmationRequestRejeter, PaiementEnMasseReponseStatut, type PaiementEnMasseRequest, PaiementEnMasseService, PaiementImmediatConfirmationReponse, type PaiementImmediatConfirmationRequest, type PaiementImmediatConfirmationRequestAccepter, type PaiementImmediatConfirmationRequestRejeter, PaiementImmediatReponse, type PaiementImmediatRequest, PaiementImmediatService, type PaiementListe, type PaiementRequest, PaiementStatut, PaiementStatutRaison, PiSpiAuthError, type PiSpiConfig, PiSpiError, PiSpiNotFoundError, PiSpiRateLimitError, PiSpiSDK, PiSpiValidationError, type Problem7807, QRCode, type QrCodeSvgOptions, type QrPayloadInput, type QrPayloadOptions, type QrPayloadResult, type QrType, type QrValidationResult, QueryBuilder, type QueryParams, RefDocType, RetourStatut, RetourStatutRaison, RetoursdeFondsService, UEMOA_COUNTRIES, WEBHOOK_EVENTS, type WebhookCreationRequest, type WebhookCreationResponse, type WebhookData, WebhookEvent, type WebhookEventsList, type WebhookList, type WebhookModificationRequest, WebhooksEvents, buildLomiCustomerQr, buildPayloadString, centimesToXof, computeCrc16, createQrPayload, formatAmount, generateQrCodeSvg, getAvailableAliasTypes, getCountryFromAccount, handleApiError, isValidAccountNumber, isValidAliasType, isValidPhoneNumber, isValidPispiQrPayload, isValidShidAlias, parseLomiCustomerQr, retryWithBackoff, serializeLomiCustomerQr, sleep, xofToCentimes };
|