pi-spi-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/LICENSE +22 -0
- package/README.md +300 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.js +4 -0
- package/dist/error-handler.d.ts +7 -0
- package/dist/error-handler.js +52 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.js +40 -0
- package/dist/examples.d.ts +8 -0
- package/dist/examples.js +91 -0
- package/dist/generated/core/ApiError.d.ts +10 -0
- package/dist/generated/core/ApiError.js +11 -0
- package/dist/generated/core/ApiRequestOptions.d.ts +13 -0
- package/dist/generated/core/ApiRequestOptions.js +1 -0
- package/dist/generated/core/ApiResult.d.ts +7 -0
- package/dist/generated/core/ApiResult.js +1 -0
- package/dist/generated/core/CancelablePromise.d.ts +20 -0
- package/dist/generated/core/CancelablePromise.js +111 -0
- package/dist/generated/core/OpenAPI.d.ts +16 -0
- package/dist/generated/core/OpenAPI.js +11 -0
- package/dist/generated/core/request.d.ts +34 -0
- package/dist/generated/core/request.js +269 -0
- package/dist/generated/index.d.ts +78 -0
- package/dist/generated/index.js +43 -0
- package/dist/generated/models/AliasCreationReponse.d.ts +22 -0
- package/dist/generated/models/AliasCreationReponse.js +1 -0
- package/dist/generated/models/AliasCreationRequest.d.ts +11 -0
- package/dist/generated/models/AliasCreationRequest.js +1 -0
- package/dist/generated/models/AliasReponseListe.d.ts +26 -0
- package/dist/generated/models/AliasReponseListe.js +1 -0
- package/dist/generated/models/AnnulationStatut.d.ts +13 -0
- package/dist/generated/models/AnnulationStatut.js +18 -0
- package/dist/generated/models/Champs.d.ts +1 -0
- package/dist/generated/models/Champs.js +1 -0
- package/dist/generated/models/CompteOperation.d.ts +72 -0
- package/dist/generated/models/CompteOperation.js +24 -0
- package/dist/generated/models/CompteOperationListe.d.ts +18 -0
- package/dist/generated/models/CompteOperationListe.js +1 -0
- package/dist/generated/models/CompteSolde.d.ts +129 -0
- package/dist/generated/models/CompteSolde.js +71 -0
- package/dist/generated/models/CompteTransfertIntraReponse.d.ts +33 -0
- package/dist/generated/models/CompteTransfertIntraReponse.js +12 -0
- package/dist/generated/models/CompteTransfertIntraRequest.d.ts +9 -0
- package/dist/generated/models/CompteTransfertIntraRequest.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +14 -0
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +19 -0
- package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +41 -0
- package/dist/generated/models/DemandePaiementConfirmationReponse.js +13 -0
- package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/DemandePaiementConfirmationRequest.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +151 -0
- package/dist/generated/models/DemandePaiementConsultationReponse.js +27 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +74 -0
- package/dist/generated/models/DemandePaiementEnMasseRequest.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +98 -0
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +20 -0
- package/dist/generated/models/DemandePaiementListe.d.ts +26 -0
- package/dist/generated/models/DemandePaiementListe.js +1 -0
- package/dist/generated/models/DemandePaiementListeItem.d.ts +163 -0
- package/dist/generated/models/DemandePaiementListeItem.js +27 -0
- package/dist/generated/models/DemandePaiementReponse.d.ts +129 -0
- package/dist/generated/models/DemandePaiementReponse.js +1 -0
- package/dist/generated/models/DemandePaiementReponseRequest.d.ts +21 -0
- package/dist/generated/models/DemandePaiementReponseRequest.js +11 -0
- package/dist/generated/models/DemandePaiementRequest.d.ts +98 -0
- package/dist/generated/models/DemandePaiementRequest.js +7 -0
- package/dist/generated/models/DemandePaiementRequestBase.d.ts +42 -0
- package/dist/generated/models/DemandePaiementRequestBase.js +1 -0
- package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +12 -0
- package/dist/generated/models/DemandePaiementRequestCategorie.js +17 -0
- package/dist/generated/models/DemandePaiementStatut.d.ts +13 -0
- package/dist/generated/models/DemandePaiementStatut.js +18 -0
- package/dist/generated/models/DemandePaiementStatutRaison.d.ts +46 -0
- package/dist/generated/models/DemandePaiementStatutRaison.js +51 -0
- package/dist/generated/models/ListeMeta.d.ts +14 -0
- package/dist/generated/models/ListeMeta.js +1 -0
- package/dist/generated/models/Paiement.d.ts +156 -0
- package/dist/generated/models/Paiement.js +28 -0
- package/dist/generated/models/PaiementAnnulationMotif.d.ts +17 -0
- package/dist/generated/models/PaiementAnnulationMotif.js +22 -0
- package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +11 -0
- package/dist/generated/models/PaiementAnnulationReponseRequest.js +1 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementAnnulationRequest.d.ts +4 -0
- package/dist/generated/models/PaiementAnnulationRequest.js +1 -0
- package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +21 -0
- package/dist/generated/models/PaiementAnnulationStatutRaison.js +26 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +1 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +97 -0
- package/dist/generated/models/PaiementEnMasseReponseStatut.js +20 -0
- package/dist/generated/models/PaiementEnMasseRequest.d.ts +54 -0
- package/dist/generated/models/PaiementEnMasseRequest.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +31 -0
- package/dist/generated/models/PaiementImmediatConfirmationReponse.js +7 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequest.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementImmediatReponse.d.ts +98 -0
- package/dist/generated/models/PaiementImmediatReponse.js +7 -0
- package/dist/generated/models/PaiementImmediatRequest.d.ts +13 -0
- package/dist/generated/models/PaiementImmediatRequest.js +1 -0
- package/dist/generated/models/PaiementListe.d.ts +6 -0
- package/dist/generated/models/PaiementListe.js +1 -0
- package/dist/generated/models/PaiementRequest.d.ts +33 -0
- package/dist/generated/models/PaiementRequest.js +1 -0
- package/dist/generated/models/PaiementStatut.d.ts +13 -0
- package/dist/generated/models/PaiementStatut.js +18 -0
- package/dist/generated/models/PaiementStatutRaison.d.ts +56 -0
- package/dist/generated/models/PaiementStatutRaison.js +61 -0
- package/dist/generated/models/Problem7807.d.ts +31 -0
- package/dist/generated/models/Problem7807.js +1 -0
- package/dist/generated/models/RefDocType.d.ts +38 -0
- package/dist/generated/models/RefDocType.js +43 -0
- package/dist/generated/models/RetourStatut.d.ts +13 -0
- package/dist/generated/models/RetourStatut.js +18 -0
- package/dist/generated/models/RetourStatutRaison.d.ts +25 -0
- package/dist/generated/models/RetourStatutRaison.js +30 -0
- package/dist/generated/models/WebhookCreationRequest.d.ts +14 -0
- package/dist/generated/models/WebhookCreationRequest.js +1 -0
- package/dist/generated/models/WebhookCreationResponse.d.ts +12 -0
- package/dist/generated/models/WebhookCreationResponse.js +1 -0
- package/dist/generated/models/WebhookData.d.ts +8 -0
- package/dist/generated/models/WebhookData.js +1 -0
- package/dist/generated/models/WebhookEvent.d.ts +191 -0
- package/dist/generated/models/WebhookEvent.js +42 -0
- package/dist/generated/models/WebhookEventsList.d.ts +13 -0
- package/dist/generated/models/WebhookEventsList.js +1 -0
- package/dist/generated/models/WebhookList.d.ts +13 -0
- package/dist/generated/models/WebhookList.js +1 -0
- package/dist/generated/models/WebhookModificationRequest.d.ts +4 -0
- package/dist/generated/models/WebhookModificationRequest.js +1 -0
- package/dist/generated/models/WebhooksEvents.d.ts +12 -0
- package/dist/generated/models/WebhooksEvents.js +17 -0
- package/dist/generated/services/AliasService.d.ts +63 -0
- package/dist/generated/services/AliasService.js +84 -0
- package/dist/generated/services/ComptesService.d.ts +64 -0
- package/dist/generated/services/ComptesService.js +86 -0
- package/dist/generated/services/DemandeAnnulationService.d.ts +84 -0
- package/dist/generated/services/DemandeAnnulationService.js +99 -0
- package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +161 -0
- package/dist/generated/services/DemandesDePaiementEnMasseService.js +189 -0
- package/dist/generated/services/DemandesDePaiementService.d.ts +123 -0
- package/dist/generated/services/DemandesDePaiementService.js +161 -0
- package/dist/generated/services/NotificationService.d.ts +80 -0
- package/dist/generated/services/NotificationService.js +132 -0
- package/dist/generated/services/PaiementEnMasseService.d.ts +159 -0
- package/dist/generated/services/PaiementEnMasseService.js +187 -0
- package/dist/generated/services/PaiementImmediatService.d.ts +135 -0
- package/dist/generated/services/PaiementImmediatService.js +176 -0
- package/dist/generated/services/RetoursdeFondsService.d.ts +28 -0
- package/dist/generated/services/RetoursdeFondsService.js +37 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +23 -0
- package/dist/query-builder.d.ts +91 -0
- package/dist/query-builder.js +187 -0
- package/dist/sdk.d.ts +88 -0
- package/dist/sdk.js +107 -0
- package/dist/services/alias.d.ts +72 -0
- package/dist/services/alias.js +82 -0
- package/dist/services/base.d.ts +9 -0
- package/dist/services/base.js +17 -0
- package/dist/services/comptes.d.ts +149 -0
- package/dist/services/comptes.js +158 -0
- package/dist/services/demandes-annulation.d.ts +97 -0
- package/dist/services/demandes-annulation.js +104 -0
- package/dist/services/demandes-paiement-en-masse.d.ts +139 -0
- package/dist/services/demandes-paiement-en-masse.js +139 -0
- package/dist/services/demandes-paiement.d.ts +144 -0
- package/dist/services/demandes-paiement.js +151 -0
- package/dist/services/paiements-en-masse.d.ts +152 -0
- package/dist/services/paiements-en-masse.js +153 -0
- package/dist/services/paiements.d.ts +135 -0
- package/dist/services/paiements.js +135 -0
- package/dist/services/retours-fonds.d.ts +94 -0
- package/dist/services/retours-fonds.js +100 -0
- package/dist/services/webhooks.d.ts +131 -0
- package/dist/services/webhooks.js +142 -0
- package/dist/types/alias.d.ts +64 -0
- package/dist/types/alias.js +73 -0
- package/dist/utils/constants.d.ts +93 -0
- package/dist/utils/constants.js +93 -0
- package/dist/utils/index.d.ts +60 -0
- package/dist/utils/index.js +115 -0
- package/package.json +81 -0
- package/scripts/post-generate.js +129 -0
- package/scripts/pre-generate.js +106 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bulk Payment Requests (Demandes de Paiement en Masse) service wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides methods for creating and managing bulk payment requests.
|
|
5
|
+
*
|
|
6
|
+
* **Bulk Payment Request Features:**
|
|
7
|
+
* - Send multiple payment requests in a single operation
|
|
8
|
+
* - Useful for invoicing multiple customers
|
|
9
|
+
* - Each request can have different amounts and recipients
|
|
10
|
+
* - All requests share the same `instructionId`
|
|
11
|
+
* - Can confirm entire bulk at once
|
|
12
|
+
*
|
|
13
|
+
* **Use Cases:**
|
|
14
|
+
* - Mass invoicing
|
|
15
|
+
* - Subscription billing
|
|
16
|
+
* - Bulk bill collection
|
|
17
|
+
* - Multiple invoice requests
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Create bulk payment requests
|
|
22
|
+
* const bulkRequests = await sdk.demandesPaiementEnMasse.create({
|
|
23
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
24
|
+
* transactions: [
|
|
25
|
+
* { txId: 'INV-001', payeurAlias: 'alias1', montant: 50000, motif: 'Facture' },
|
|
26
|
+
* { txId: 'INV-002', payeurAlias: 'alias2', montant: 75000, motif: 'Facture' }
|
|
27
|
+
* ]
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import { BaseService } from './base';
|
|
32
|
+
export class DemandesPaiementEnMasseService extends BaseService {
|
|
33
|
+
/**
|
|
34
|
+
* Create bulk payment requests
|
|
35
|
+
*
|
|
36
|
+
* **Bulk Request Process:**
|
|
37
|
+
* 1. Create bulk with multiple payment requests
|
|
38
|
+
* 2. All requests are created with status `INITIE`
|
|
39
|
+
* 3. Confirm bulk to send all requests to recipients
|
|
40
|
+
* 4. Each recipient receives their individual payment request
|
|
41
|
+
*
|
|
42
|
+
* **Confirmation:**
|
|
43
|
+
* - Use `confirm()` method to send all requests
|
|
44
|
+
* - Individual requests can be accepted/rejected by recipients
|
|
45
|
+
* - Each request follows standard payment request flow
|
|
46
|
+
*
|
|
47
|
+
* @param request - Bulk payment request creation data
|
|
48
|
+
* @param request.comptePaye - Business account number (payee)
|
|
49
|
+
* @param request.transactions - Array of payment request transactions
|
|
50
|
+
* @param request.transactions[].txId - Unique transaction ID (must be unique within bulk)
|
|
51
|
+
* @param request.transactions[].payeurAlias - Customer alias (payer)
|
|
52
|
+
* @param request.transactions[].montant - Amount in centimes (e.g., 50000 = 500 XOF)
|
|
53
|
+
* @param request.transactions[].motif - Payment reason/description
|
|
54
|
+
* @param request.transactions[].categorie - Request category (optional, defaults to '401')
|
|
55
|
+
* @param request.transactions[].dateLimitePaiement - Payment due date (optional)
|
|
56
|
+
* @param request.transactions[].refDocType - Reference document type (optional)
|
|
57
|
+
* @param request.transactions[].refDocNumero - Reference document number (optional)
|
|
58
|
+
* @returns Bulk payment request response
|
|
59
|
+
* @throws {PiSpiValidationError} If bulk fails validation (e.g., duplicate txId, invalid alias)
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* // Create bulk invoice requests
|
|
64
|
+
* await sdk.demandesPaiementEnMasse.create({
|
|
65
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
66
|
+
* transactions: [
|
|
67
|
+
* {
|
|
68
|
+
* txId: 'INV-2023-001',
|
|
69
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
70
|
+
* montant: 150000, // 1,500 XOF
|
|
71
|
+
* motif: 'Facture électricité mars 2023',
|
|
72
|
+
* categorie: '401',
|
|
73
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
74
|
+
* refDocType: 'CINV',
|
|
75
|
+
* refDocNumero: 'FACT-ELEC-202303-001'
|
|
76
|
+
* },
|
|
77
|
+
* {
|
|
78
|
+
* txId: 'INV-2023-002',
|
|
79
|
+
* payeurAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
|
|
80
|
+
* montant: 200000, // 2,000 XOF
|
|
81
|
+
* motif: 'Facture téléphone mars 2023',
|
|
82
|
+
* categorie: '401',
|
|
83
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
84
|
+
* refDocType: 'CINV',
|
|
85
|
+
* refDocNumero: 'FACT-TEL-202303-002'
|
|
86
|
+
* }
|
|
87
|
+
* ]
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
async create(request) {
|
|
92
|
+
return this.execute(async () => {
|
|
93
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get bulk payment request details and status
|
|
98
|
+
*
|
|
99
|
+
* **Response Includes:**
|
|
100
|
+
* - Overall bulk status
|
|
101
|
+
* - Individual request statuses
|
|
102
|
+
* - Accepted/rejected counts
|
|
103
|
+
* - Payment statuses
|
|
104
|
+
*
|
|
105
|
+
* @param instructionId - Bulk instruction ID
|
|
106
|
+
* @returns Bulk payment request details with individual request statuses
|
|
107
|
+
* @throws {PiSpiNotFoundError} If bulk payment request not found
|
|
108
|
+
*/
|
|
109
|
+
async get(instructionId) {
|
|
110
|
+
return this.execute(async () => {
|
|
111
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Confirm and send bulk payment requests
|
|
116
|
+
*
|
|
117
|
+
* **Confirmation Process:**
|
|
118
|
+
* - All requests in bulk are sent to recipients
|
|
119
|
+
* - Each recipient receives their individual payment request
|
|
120
|
+
* - Recipients can accept/reject independently
|
|
121
|
+
* - Bulk status updates as recipients respond
|
|
122
|
+
*
|
|
123
|
+
* @param instructionId - Bulk instruction ID
|
|
124
|
+
* @returns Confirmation response
|
|
125
|
+
* @throws {PiSpiNotFoundError} If bulk payment request not found
|
|
126
|
+
* @throws {PiSpiError} If bulk already confirmed
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* // Confirm and send all requests
|
|
131
|
+
* await sdk.demandesPaiementEnMasse.confirm('BULK-INV-2023-03');
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
async confirm(instructionId) {
|
|
135
|
+
return this.execute(async () => {
|
|
136
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payment Requests (Demandes de Paiement) service wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides methods for creating and managing payment requests (bills, invoices, etc.).
|
|
5
|
+
*
|
|
6
|
+
* **Payment Request Types:**
|
|
7
|
+
* - **E-commerce** (`categorie: 521`): Online payment requests with 3-minute expiry
|
|
8
|
+
* - **Point of Sale** (`categorie: 500`): Physical store payment requests
|
|
9
|
+
* - **Invoice/Bill** (`categorie: 401`): Invoice payment requests with due dates
|
|
10
|
+
* - **PICO**: Purchase with cash withdrawal (combined purchase + cashback)
|
|
11
|
+
* - **PICASH**: Cash withdrawal only
|
|
12
|
+
*
|
|
13
|
+
* **Payment Request Flow:**
|
|
14
|
+
* 1. Business creates payment request
|
|
15
|
+
* 2. Customer receives request (via alias)
|
|
16
|
+
* 3. Customer can: Accept & Pay Now, Accept & Pay Later, Reject, or Ignore
|
|
17
|
+
* 4. If accepted, payment is processed automatically
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Create invoice payment request
|
|
22
|
+
* const request = await sdk.demandesPaiement.create({
|
|
23
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
24
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
25
|
+
* montant: 150000,
|
|
26
|
+
* categorie: '401',
|
|
27
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
28
|
+
* motif: 'Facture électricité mars 2023'
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import { BaseService } from './base';
|
|
33
|
+
import type { QueryParams } from '../query-builder';
|
|
34
|
+
export declare class DemandesPaiementService extends BaseService {
|
|
35
|
+
/**
|
|
36
|
+
* Create a payment request
|
|
37
|
+
*
|
|
38
|
+
* **Request Types:**
|
|
39
|
+
* - **E-commerce** (`categorie: 521`): Max 3 minutes validity
|
|
40
|
+
* - **POS** (`categorie: 500`): Max 24 hours validity
|
|
41
|
+
* - **Invoice** (`categorie: 401`): Custom due date (up to 90 days)
|
|
42
|
+
*
|
|
43
|
+
* **Confirmation Options:**
|
|
44
|
+
* - `confirmation: false`: Request sent immediately (default for POS)
|
|
45
|
+
* - `confirmation: true`: Returns payer info for verification before sending
|
|
46
|
+
*
|
|
47
|
+
* **Customer Actions:**
|
|
48
|
+
* - Accept & Pay Now: Payment processed immediately
|
|
49
|
+
* - Accept & Pay Later: Payment scheduled (if dateLimiteReponse > 24h)
|
|
50
|
+
* - Reject: Request rejected with reason
|
|
51
|
+
* - Ignore: Request expires after dateLimiteReponse
|
|
52
|
+
*
|
|
53
|
+
* @param request - Payment request creation data
|
|
54
|
+
* @param request.comptePaye - Business account number (payee)
|
|
55
|
+
* @param request.payeurAlias - Customer alias (payer)
|
|
56
|
+
* @param request.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
|
|
57
|
+
* @param request.categorie - Request category: '500' (POS), '521' (E-commerce), '401' (Invoice)
|
|
58
|
+
* @param request.motif - Payment reason/description
|
|
59
|
+
* @param request.txId - Unique transaction ID (optional)
|
|
60
|
+
* @param request.dateLimitePaiement - Payment due date (required for e-commerce and invoices)
|
|
61
|
+
* @param request.dateLimiteReponse - Response deadline (default: 90 days from creation)
|
|
62
|
+
* @param request.confirmation - Whether to require confirmation (default: false for POS, true for invoices)
|
|
63
|
+
* @param request.refDocType - Reference document type (e.g., 'CINV' for invoice)
|
|
64
|
+
* @param request.refDocNumero - Reference document number (e.g., invoice number)
|
|
65
|
+
* @returns Payment request response
|
|
66
|
+
* @throws {PiSpiValidationError} If request fails validation
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* // E-commerce payment request (3-minute expiry)
|
|
71
|
+
* await sdk.demandesPaiement.create({
|
|
72
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
73
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
74
|
+
* montant: 25000, // 250 XOF
|
|
75
|
+
* categorie: '521',
|
|
76
|
+
* dateLimitePaiement: '2023-02-21T15:37:00.000Z', // 3 minutes from now
|
|
77
|
+
* motif: 'Paiement du livre Manuel des écritures comptables'
|
|
78
|
+
* });
|
|
79
|
+
*
|
|
80
|
+
* // Invoice payment request
|
|
81
|
+
* await sdk.demandesPaiement.create({
|
|
82
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
83
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
84
|
+
* montant: 150000, // 1,500 XOF
|
|
85
|
+
* categorie: '401',
|
|
86
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
87
|
+
* motif: 'Facture électricité mars 2023',
|
|
88
|
+
* refDocType: 'CINV',
|
|
89
|
+
* refDocNumero: 'FACT-ELEC-202303',
|
|
90
|
+
* confirmation: true
|
|
91
|
+
* });
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
create(request: {
|
|
95
|
+
comptePaye: string;
|
|
96
|
+
payeurAlias: string;
|
|
97
|
+
montant: number;
|
|
98
|
+
categorie: string;
|
|
99
|
+
motif: string;
|
|
100
|
+
txId?: string;
|
|
101
|
+
dateLimitePaiement?: string;
|
|
102
|
+
dateLimiteReponse?: string;
|
|
103
|
+
confirmation?: boolean;
|
|
104
|
+
refDocType?: string;
|
|
105
|
+
refDocNumero?: string;
|
|
106
|
+
}): Promise<never>;
|
|
107
|
+
/**
|
|
108
|
+
* List payment requests with filtering and pagination
|
|
109
|
+
*
|
|
110
|
+
* @param params - Query parameters for filtering and pagination
|
|
111
|
+
* @returns Paginated list of payment requests
|
|
112
|
+
*/
|
|
113
|
+
list(params?: QueryParams): Promise<never>;
|
|
114
|
+
/**
|
|
115
|
+
* Get payment request details
|
|
116
|
+
*
|
|
117
|
+
* @param id - Payment request transaction ID
|
|
118
|
+
* @returns Payment request details
|
|
119
|
+
* @throws {PiSpiNotFoundError} If request not found
|
|
120
|
+
*/
|
|
121
|
+
get(id: string): Promise<never>;
|
|
122
|
+
/**
|
|
123
|
+
* Accept a payment request
|
|
124
|
+
*
|
|
125
|
+
* **Note:** This is typically called by the customer's payment app, not the business.
|
|
126
|
+
* The business receives notification when customer accepts.
|
|
127
|
+
*
|
|
128
|
+
* @param id - Payment request transaction ID
|
|
129
|
+
* @param immediate - Whether to pay immediately (true) or schedule payment (false)
|
|
130
|
+
* @returns Payment confirmation response
|
|
131
|
+
*/
|
|
132
|
+
accept(id: string, immediate?: boolean): Promise<never>;
|
|
133
|
+
/**
|
|
134
|
+
* Reject a payment request
|
|
135
|
+
*
|
|
136
|
+
* **Note:** This is typically called by the customer's payment app, not the business.
|
|
137
|
+
* The business receives notification when customer rejects.
|
|
138
|
+
*
|
|
139
|
+
* @param id - Payment request transaction ID
|
|
140
|
+
* @param reason - Rejection reason code (optional)
|
|
141
|
+
* @returns Rejection confirmation response
|
|
142
|
+
*/
|
|
143
|
+
reject(id: string, reason?: string): Promise<never>;
|
|
144
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payment Requests (Demandes de Paiement) service wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides methods for creating and managing payment requests (bills, invoices, etc.).
|
|
5
|
+
*
|
|
6
|
+
* **Payment Request Types:**
|
|
7
|
+
* - **E-commerce** (`categorie: 521`): Online payment requests with 3-minute expiry
|
|
8
|
+
* - **Point of Sale** (`categorie: 500`): Physical store payment requests
|
|
9
|
+
* - **Invoice/Bill** (`categorie: 401`): Invoice payment requests with due dates
|
|
10
|
+
* - **PICO**: Purchase with cash withdrawal (combined purchase + cashback)
|
|
11
|
+
* - **PICASH**: Cash withdrawal only
|
|
12
|
+
*
|
|
13
|
+
* **Payment Request Flow:**
|
|
14
|
+
* 1. Business creates payment request
|
|
15
|
+
* 2. Customer receives request (via alias)
|
|
16
|
+
* 3. Customer can: Accept & Pay Now, Accept & Pay Later, Reject, or Ignore
|
|
17
|
+
* 4. If accepted, payment is processed automatically
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Create invoice payment request
|
|
22
|
+
* const request = await sdk.demandesPaiement.create({
|
|
23
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
24
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
25
|
+
* montant: 150000,
|
|
26
|
+
* categorie: '401',
|
|
27
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
28
|
+
* motif: 'Facture électricité mars 2023'
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import { BaseService } from './base';
|
|
33
|
+
export class DemandesPaiementService extends BaseService {
|
|
34
|
+
/**
|
|
35
|
+
* Create a payment request
|
|
36
|
+
*
|
|
37
|
+
* **Request Types:**
|
|
38
|
+
* - **E-commerce** (`categorie: 521`): Max 3 minutes validity
|
|
39
|
+
* - **POS** (`categorie: 500`): Max 24 hours validity
|
|
40
|
+
* - **Invoice** (`categorie: 401`): Custom due date (up to 90 days)
|
|
41
|
+
*
|
|
42
|
+
* **Confirmation Options:**
|
|
43
|
+
* - `confirmation: false`: Request sent immediately (default for POS)
|
|
44
|
+
* - `confirmation: true`: Returns payer info for verification before sending
|
|
45
|
+
*
|
|
46
|
+
* **Customer Actions:**
|
|
47
|
+
* - Accept & Pay Now: Payment processed immediately
|
|
48
|
+
* - Accept & Pay Later: Payment scheduled (if dateLimiteReponse > 24h)
|
|
49
|
+
* - Reject: Request rejected with reason
|
|
50
|
+
* - Ignore: Request expires after dateLimiteReponse
|
|
51
|
+
*
|
|
52
|
+
* @param request - Payment request creation data
|
|
53
|
+
* @param request.comptePaye - Business account number (payee)
|
|
54
|
+
* @param request.payeurAlias - Customer alias (payer)
|
|
55
|
+
* @param request.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
|
|
56
|
+
* @param request.categorie - Request category: '500' (POS), '521' (E-commerce), '401' (Invoice)
|
|
57
|
+
* @param request.motif - Payment reason/description
|
|
58
|
+
* @param request.txId - Unique transaction ID (optional)
|
|
59
|
+
* @param request.dateLimitePaiement - Payment due date (required for e-commerce and invoices)
|
|
60
|
+
* @param request.dateLimiteReponse - Response deadline (default: 90 days from creation)
|
|
61
|
+
* @param request.confirmation - Whether to require confirmation (default: false for POS, true for invoices)
|
|
62
|
+
* @param request.refDocType - Reference document type (e.g., 'CINV' for invoice)
|
|
63
|
+
* @param request.refDocNumero - Reference document number (e.g., invoice number)
|
|
64
|
+
* @returns Payment request response
|
|
65
|
+
* @throws {PiSpiValidationError} If request fails validation
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* // E-commerce payment request (3-minute expiry)
|
|
70
|
+
* await sdk.demandesPaiement.create({
|
|
71
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
72
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
73
|
+
* montant: 25000, // 250 XOF
|
|
74
|
+
* categorie: '521',
|
|
75
|
+
* dateLimitePaiement: '2023-02-21T15:37:00.000Z', // 3 minutes from now
|
|
76
|
+
* motif: 'Paiement du livre Manuel des écritures comptables'
|
|
77
|
+
* });
|
|
78
|
+
*
|
|
79
|
+
* // Invoice payment request
|
|
80
|
+
* await sdk.demandesPaiement.create({
|
|
81
|
+
* comptePaye: 'CIC2344256727788288822',
|
|
82
|
+
* payeurAlias: '9b1b3499-3e50-435b-b757-ac7a83d8aa96',
|
|
83
|
+
* montant: 150000, // 1,500 XOF
|
|
84
|
+
* categorie: '401',
|
|
85
|
+
* dateLimitePaiement: '2023-12-31T23:59:59.999Z',
|
|
86
|
+
* motif: 'Facture électricité mars 2023',
|
|
87
|
+
* refDocType: 'CINV',
|
|
88
|
+
* refDocNumero: 'FACT-ELEC-202303',
|
|
89
|
+
* confirmation: true
|
|
90
|
+
* });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
async create(request) {
|
|
94
|
+
return this.execute(async () => {
|
|
95
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* List payment requests with filtering and pagination
|
|
100
|
+
*
|
|
101
|
+
* @param params - Query parameters for filtering and pagination
|
|
102
|
+
* @returns Paginated list of payment requests
|
|
103
|
+
*/
|
|
104
|
+
async list(params) {
|
|
105
|
+
return this.execute(async () => {
|
|
106
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get payment request details
|
|
111
|
+
*
|
|
112
|
+
* @param id - Payment request transaction ID
|
|
113
|
+
* @returns Payment request details
|
|
114
|
+
* @throws {PiSpiNotFoundError} If request not found
|
|
115
|
+
*/
|
|
116
|
+
async get(id) {
|
|
117
|
+
return this.execute(async () => {
|
|
118
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Accept a payment request
|
|
123
|
+
*
|
|
124
|
+
* **Note:** This is typically called by the customer's payment app, not the business.
|
|
125
|
+
* The business receives notification when customer accepts.
|
|
126
|
+
*
|
|
127
|
+
* @param id - Payment request transaction ID
|
|
128
|
+
* @param immediate - Whether to pay immediately (true) or schedule payment (false)
|
|
129
|
+
* @returns Payment confirmation response
|
|
130
|
+
*/
|
|
131
|
+
async accept(id, immediate = true) {
|
|
132
|
+
return this.execute(async () => {
|
|
133
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Reject a payment request
|
|
138
|
+
*
|
|
139
|
+
* **Note:** This is typically called by the customer's payment app, not the business.
|
|
140
|
+
* The business receives notification when customer rejects.
|
|
141
|
+
*
|
|
142
|
+
* @param id - Payment request transaction ID
|
|
143
|
+
* @param reason - Rejection reason code (optional)
|
|
144
|
+
* @returns Rejection confirmation response
|
|
145
|
+
*/
|
|
146
|
+
async reject(id, reason) {
|
|
147
|
+
return this.execute(async () => {
|
|
148
|
+
throw new Error('Service not yet generated. Run "pnpm run generate" first.');
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bulk Payments (Paiements en Masse) service wrapper
|
|
3
|
+
*
|
|
4
|
+
* Provides methods for creating and managing bulk payment operations.
|
|
5
|
+
*
|
|
6
|
+
* **Bulk Payment Features:**
|
|
7
|
+
* - Process multiple payments in a single request
|
|
8
|
+
* - Linked by unique `instructionId`
|
|
9
|
+
* - Can retry failed payments
|
|
10
|
+
* - Supports up to 10,000 transactions per bulk (recommended: 500-5,000)
|
|
11
|
+
*
|
|
12
|
+
* **Transaction Size:**
|
|
13
|
+
* - Max size per transaction: ~310 bytes
|
|
14
|
+
* - Max bulk size: ~3.1 MB for 10,000 transactions
|
|
15
|
+
* - Recommended: 500-5,000 transactions per bulk
|
|
16
|
+
*
|
|
17
|
+
* **Use Cases:**
|
|
18
|
+
* - Salary payments
|
|
19
|
+
* - Vendor payments
|
|
20
|
+
* - Bulk disbursements
|
|
21
|
+
* - Mass refunds
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // Create bulk payment
|
|
26
|
+
* const bulkPayment = await sdk.paiementsEnMasse.createBulk({
|
|
27
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
28
|
+
* instructionId: 'BULK-2023-001',
|
|
29
|
+
* transactions: [
|
|
30
|
+
* { txId: 'TX001', payeAlias: 'alias1', montant: 100000, motif: 'Salaire' },
|
|
31
|
+
* { txId: 'TX002', payeAlias: 'alias2', montant: 150000, motif: 'Salaire' }
|
|
32
|
+
* ]
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
import { BaseService } from './base';
|
|
37
|
+
export declare class PaiementsEnMasseService extends BaseService {
|
|
38
|
+
/**
|
|
39
|
+
* Create bulk payments
|
|
40
|
+
*
|
|
41
|
+
* **Bulk Processing:**
|
|
42
|
+
* - All transactions share the same `instructionId`
|
|
43
|
+
* - Each transaction needs unique `txId`
|
|
44
|
+
* - Transactions are processed in parallel
|
|
45
|
+
* - Failed transactions can be retried
|
|
46
|
+
*
|
|
47
|
+
* **Performance Considerations:**
|
|
48
|
+
* - Larger bulks take longer to process
|
|
49
|
+
* - May hit HTTP timeout for very large bulks
|
|
50
|
+
* - Recommended: 500-5,000 transactions per bulk
|
|
51
|
+
* - For >10,000 transactions, split into multiple bulks
|
|
52
|
+
*
|
|
53
|
+
* **Response Status:**
|
|
54
|
+
* - `INITIE`: Bulk created, awaiting confirmation
|
|
55
|
+
* - `ENVOYE`: Bulk sent, transactions processing
|
|
56
|
+
* - `IRREVOCABLE`: All transactions completed
|
|
57
|
+
* - `PARTIEL`: Some transactions succeeded, some failed
|
|
58
|
+
* - `REJETE`: Bulk rejected (validation failed)
|
|
59
|
+
*
|
|
60
|
+
* @param payment - Bulk payment creation data
|
|
61
|
+
* @param payment.comptePayeur - Payer account number
|
|
62
|
+
* @param payment.instructionId - Unique bulk instruction ID
|
|
63
|
+
* @param payment.transactions - Array of payment transactions
|
|
64
|
+
* @param payment.transactions[].txId - Unique transaction ID (must be unique within bulk)
|
|
65
|
+
* @param payment.transactions[].payeAlias - Payee alias (SHID, MCOD, or MBNO)
|
|
66
|
+
* @param payment.transactions[].montant - Amount in centimes
|
|
67
|
+
* @param payment.transactions[].motif - Payment reason/description
|
|
68
|
+
* @param payment.transactions[].refDocType - Reference document type (optional)
|
|
69
|
+
* @param payment.transactions[].refDocNumero - Reference document number (optional)
|
|
70
|
+
* @returns Bulk payment response with status and summary
|
|
71
|
+
* @throws {PiSpiValidationError} If bulk fails validation (e.g., duplicate txId, invalid alias)
|
|
72
|
+
* @throws {PiSpiError} If account blocked or insufficient funds
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* // Create bulk payment for salary disbursement
|
|
77
|
+
* await sdk.paiementsEnMasse.createBulk({
|
|
78
|
+
* comptePayeur: 'CIC2344256727788288822',
|
|
79
|
+
* instructionId: 'SALARY-2023-03',
|
|
80
|
+
* transactions: [
|
|
81
|
+
* {
|
|
82
|
+
* txId: 'SAL-001',
|
|
83
|
+
* payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
|
|
84
|
+
* montant: 500000, // 5,000 XOF
|
|
85
|
+
* motif: 'Salaire mars 2023'
|
|
86
|
+
* },
|
|
87
|
+
* {
|
|
88
|
+
* txId: 'SAL-002',
|
|
89
|
+
* payeAlias: '4r5ty499-3e50-435b-b757-ac7a83d67juio',
|
|
90
|
+
* montant: 750000, // 7,500 XOF
|
|
91
|
+
* motif: 'Salaire mars 2023'
|
|
92
|
+
* }
|
|
93
|
+
* ]
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
createBulk(payment: {
|
|
98
|
+
comptePayeur: string;
|
|
99
|
+
instructionId: string;
|
|
100
|
+
transactions: Array<{
|
|
101
|
+
txId: string;
|
|
102
|
+
payeAlias: string;
|
|
103
|
+
montant: number;
|
|
104
|
+
motif: string;
|
|
105
|
+
refDocType?: string;
|
|
106
|
+
refDocNumero?: string;
|
|
107
|
+
}>;
|
|
108
|
+
}): Promise<never>;
|
|
109
|
+
/**
|
|
110
|
+
* Get bulk payment details and status
|
|
111
|
+
*
|
|
112
|
+
* **Response Includes:**
|
|
113
|
+
* - Overall bulk status
|
|
114
|
+
* - Transaction counts (total, succeeded, failed)
|
|
115
|
+
* - Individual transaction statuses
|
|
116
|
+
* - Failed transaction details
|
|
117
|
+
*
|
|
118
|
+
* @param instructionId - Bulk instruction ID
|
|
119
|
+
* @returns Bulk payment details with transaction statuses
|
|
120
|
+
* @throws {PiSpiNotFoundError} If bulk payment not found
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* const bulk = await sdk.paiementsEnMasse.get('SALARY-2023-03');
|
|
125
|
+
* console.log('Status:', bulk.statut); // 'IRREVOCABLE'
|
|
126
|
+
* console.log('Succeeded:', bulk.nombreSuccess); // 98
|
|
127
|
+
* console.log('Failed:', bulk.nombreEchec); // 2
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
get(instructionId: string): Promise<never>;
|
|
131
|
+
/**
|
|
132
|
+
* Retry failed payments in a bulk payment
|
|
133
|
+
*
|
|
134
|
+
* **Retry Process:**
|
|
135
|
+
* - Only failed transactions are retried
|
|
136
|
+
* - Successful transactions are not affected
|
|
137
|
+
* - Uses same `instructionId`
|
|
138
|
+
* - Can retry multiple times if needed
|
|
139
|
+
*
|
|
140
|
+
* @param instructionId - Bulk instruction ID
|
|
141
|
+
* @returns Retry response with updated status
|
|
142
|
+
* @throws {PiSpiNotFoundError} If bulk payment not found
|
|
143
|
+
* @throws {PiSpiError} If no failed transactions to retry
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* // Retry failed transactions
|
|
148
|
+
* await sdk.paiementsEnMasse.retry('SALARY-2023-03');
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
retry(instructionId: string): Promise<never>;
|
|
152
|
+
}
|