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.
Files changed (208) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +22 -0
  3. package/README.md +300 -0
  4. package/dist/config.d.ts +35 -0
  5. package/dist/config.js +4 -0
  6. package/dist/error-handler.d.ts +7 -0
  7. package/dist/error-handler.js +52 -0
  8. package/dist/errors.d.ts +25 -0
  9. package/dist/errors.js +40 -0
  10. package/dist/examples.d.ts +8 -0
  11. package/dist/examples.js +91 -0
  12. package/dist/generated/core/ApiError.d.ts +10 -0
  13. package/dist/generated/core/ApiError.js +11 -0
  14. package/dist/generated/core/ApiRequestOptions.d.ts +13 -0
  15. package/dist/generated/core/ApiRequestOptions.js +1 -0
  16. package/dist/generated/core/ApiResult.d.ts +7 -0
  17. package/dist/generated/core/ApiResult.js +1 -0
  18. package/dist/generated/core/CancelablePromise.d.ts +20 -0
  19. package/dist/generated/core/CancelablePromise.js +111 -0
  20. package/dist/generated/core/OpenAPI.d.ts +16 -0
  21. package/dist/generated/core/OpenAPI.js +11 -0
  22. package/dist/generated/core/request.d.ts +34 -0
  23. package/dist/generated/core/request.js +269 -0
  24. package/dist/generated/index.d.ts +78 -0
  25. package/dist/generated/index.js +43 -0
  26. package/dist/generated/models/AliasCreationReponse.d.ts +22 -0
  27. package/dist/generated/models/AliasCreationReponse.js +1 -0
  28. package/dist/generated/models/AliasCreationRequest.d.ts +11 -0
  29. package/dist/generated/models/AliasCreationRequest.js +1 -0
  30. package/dist/generated/models/AliasReponseListe.d.ts +26 -0
  31. package/dist/generated/models/AliasReponseListe.js +1 -0
  32. package/dist/generated/models/AnnulationStatut.d.ts +13 -0
  33. package/dist/generated/models/AnnulationStatut.js +18 -0
  34. package/dist/generated/models/Champs.d.ts +1 -0
  35. package/dist/generated/models/Champs.js +1 -0
  36. package/dist/generated/models/CompteOperation.d.ts +72 -0
  37. package/dist/generated/models/CompteOperation.js +24 -0
  38. package/dist/generated/models/CompteOperationListe.d.ts +18 -0
  39. package/dist/generated/models/CompteOperationListe.js +1 -0
  40. package/dist/generated/models/CompteSolde.d.ts +129 -0
  41. package/dist/generated/models/CompteSolde.js +71 -0
  42. package/dist/generated/models/CompteTransfertIntraReponse.d.ts +33 -0
  43. package/dist/generated/models/CompteTransfertIntraReponse.js +12 -0
  44. package/dist/generated/models/CompteTransfertIntraRequest.d.ts +9 -0
  45. package/dist/generated/models/CompteTransfertIntraRequest.js +1 -0
  46. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +14 -0
  47. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +19 -0
  48. package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +41 -0
  49. package/dist/generated/models/DemandePaiementConfirmationReponse.js +13 -0
  50. package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +3 -0
  51. package/dist/generated/models/DemandePaiementConfirmationRequest.js +1 -0
  52. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +9 -0
  53. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +1 -0
  54. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +9 -0
  55. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +1 -0
  56. package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +151 -0
  57. package/dist/generated/models/DemandePaiementConsultationReponse.js +27 -0
  58. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +3 -0
  59. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +1 -0
  60. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
  61. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +1 -0
  62. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
  63. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +1 -0
  64. package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +74 -0
  65. package/dist/generated/models/DemandePaiementEnMasseRequest.js +1 -0
  66. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +98 -0
  67. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +20 -0
  68. package/dist/generated/models/DemandePaiementListe.d.ts +26 -0
  69. package/dist/generated/models/DemandePaiementListe.js +1 -0
  70. package/dist/generated/models/DemandePaiementListeItem.d.ts +163 -0
  71. package/dist/generated/models/DemandePaiementListeItem.js +27 -0
  72. package/dist/generated/models/DemandePaiementReponse.d.ts +129 -0
  73. package/dist/generated/models/DemandePaiementReponse.js +1 -0
  74. package/dist/generated/models/DemandePaiementReponseRequest.d.ts +21 -0
  75. package/dist/generated/models/DemandePaiementReponseRequest.js +11 -0
  76. package/dist/generated/models/DemandePaiementRequest.d.ts +98 -0
  77. package/dist/generated/models/DemandePaiementRequest.js +7 -0
  78. package/dist/generated/models/DemandePaiementRequestBase.d.ts +42 -0
  79. package/dist/generated/models/DemandePaiementRequestBase.js +1 -0
  80. package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +12 -0
  81. package/dist/generated/models/DemandePaiementRequestCategorie.js +17 -0
  82. package/dist/generated/models/DemandePaiementStatut.d.ts +13 -0
  83. package/dist/generated/models/DemandePaiementStatut.js +18 -0
  84. package/dist/generated/models/DemandePaiementStatutRaison.d.ts +46 -0
  85. package/dist/generated/models/DemandePaiementStatutRaison.js +51 -0
  86. package/dist/generated/models/ListeMeta.d.ts +14 -0
  87. package/dist/generated/models/ListeMeta.js +1 -0
  88. package/dist/generated/models/Paiement.d.ts +156 -0
  89. package/dist/generated/models/Paiement.js +28 -0
  90. package/dist/generated/models/PaiementAnnulationMotif.d.ts +17 -0
  91. package/dist/generated/models/PaiementAnnulationMotif.js +22 -0
  92. package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +11 -0
  93. package/dist/generated/models/PaiementAnnulationReponseRequest.js +1 -0
  94. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +9 -0
  95. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +1 -0
  96. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +9 -0
  97. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +1 -0
  98. package/dist/generated/models/PaiementAnnulationRequest.d.ts +4 -0
  99. package/dist/generated/models/PaiementAnnulationRequest.js +1 -0
  100. package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +21 -0
  101. package/dist/generated/models/PaiementAnnulationStatutRaison.js +26 -0
  102. package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +3 -0
  103. package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +1 -0
  104. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
  105. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +1 -0
  106. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
  107. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +1 -0
  108. package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +97 -0
  109. package/dist/generated/models/PaiementEnMasseReponseStatut.js +20 -0
  110. package/dist/generated/models/PaiementEnMasseRequest.d.ts +54 -0
  111. package/dist/generated/models/PaiementEnMasseRequest.js +1 -0
  112. package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +31 -0
  113. package/dist/generated/models/PaiementImmediatConfirmationReponse.js +7 -0
  114. package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +3 -0
  115. package/dist/generated/models/PaiementImmediatConfirmationRequest.js +1 -0
  116. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +9 -0
  117. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +1 -0
  118. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +9 -0
  119. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +1 -0
  120. package/dist/generated/models/PaiementImmediatReponse.d.ts +98 -0
  121. package/dist/generated/models/PaiementImmediatReponse.js +7 -0
  122. package/dist/generated/models/PaiementImmediatRequest.d.ts +13 -0
  123. package/dist/generated/models/PaiementImmediatRequest.js +1 -0
  124. package/dist/generated/models/PaiementListe.d.ts +6 -0
  125. package/dist/generated/models/PaiementListe.js +1 -0
  126. package/dist/generated/models/PaiementRequest.d.ts +33 -0
  127. package/dist/generated/models/PaiementRequest.js +1 -0
  128. package/dist/generated/models/PaiementStatut.d.ts +13 -0
  129. package/dist/generated/models/PaiementStatut.js +18 -0
  130. package/dist/generated/models/PaiementStatutRaison.d.ts +56 -0
  131. package/dist/generated/models/PaiementStatutRaison.js +61 -0
  132. package/dist/generated/models/Problem7807.d.ts +31 -0
  133. package/dist/generated/models/Problem7807.js +1 -0
  134. package/dist/generated/models/RefDocType.d.ts +38 -0
  135. package/dist/generated/models/RefDocType.js +43 -0
  136. package/dist/generated/models/RetourStatut.d.ts +13 -0
  137. package/dist/generated/models/RetourStatut.js +18 -0
  138. package/dist/generated/models/RetourStatutRaison.d.ts +25 -0
  139. package/dist/generated/models/RetourStatutRaison.js +30 -0
  140. package/dist/generated/models/WebhookCreationRequest.d.ts +14 -0
  141. package/dist/generated/models/WebhookCreationRequest.js +1 -0
  142. package/dist/generated/models/WebhookCreationResponse.d.ts +12 -0
  143. package/dist/generated/models/WebhookCreationResponse.js +1 -0
  144. package/dist/generated/models/WebhookData.d.ts +8 -0
  145. package/dist/generated/models/WebhookData.js +1 -0
  146. package/dist/generated/models/WebhookEvent.d.ts +191 -0
  147. package/dist/generated/models/WebhookEvent.js +42 -0
  148. package/dist/generated/models/WebhookEventsList.d.ts +13 -0
  149. package/dist/generated/models/WebhookEventsList.js +1 -0
  150. package/dist/generated/models/WebhookList.d.ts +13 -0
  151. package/dist/generated/models/WebhookList.js +1 -0
  152. package/dist/generated/models/WebhookModificationRequest.d.ts +4 -0
  153. package/dist/generated/models/WebhookModificationRequest.js +1 -0
  154. package/dist/generated/models/WebhooksEvents.d.ts +12 -0
  155. package/dist/generated/models/WebhooksEvents.js +17 -0
  156. package/dist/generated/services/AliasService.d.ts +63 -0
  157. package/dist/generated/services/AliasService.js +84 -0
  158. package/dist/generated/services/ComptesService.d.ts +64 -0
  159. package/dist/generated/services/ComptesService.js +86 -0
  160. package/dist/generated/services/DemandeAnnulationService.d.ts +84 -0
  161. package/dist/generated/services/DemandeAnnulationService.js +99 -0
  162. package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +161 -0
  163. package/dist/generated/services/DemandesDePaiementEnMasseService.js +189 -0
  164. package/dist/generated/services/DemandesDePaiementService.d.ts +123 -0
  165. package/dist/generated/services/DemandesDePaiementService.js +161 -0
  166. package/dist/generated/services/NotificationService.d.ts +80 -0
  167. package/dist/generated/services/NotificationService.js +132 -0
  168. package/dist/generated/services/PaiementEnMasseService.d.ts +159 -0
  169. package/dist/generated/services/PaiementEnMasseService.js +187 -0
  170. package/dist/generated/services/PaiementImmediatService.d.ts +135 -0
  171. package/dist/generated/services/PaiementImmediatService.js +176 -0
  172. package/dist/generated/services/RetoursdeFondsService.d.ts +28 -0
  173. package/dist/generated/services/RetoursdeFondsService.js +37 -0
  174. package/dist/index.d.ts +14 -0
  175. package/dist/index.js +23 -0
  176. package/dist/query-builder.d.ts +91 -0
  177. package/dist/query-builder.js +187 -0
  178. package/dist/sdk.d.ts +88 -0
  179. package/dist/sdk.js +107 -0
  180. package/dist/services/alias.d.ts +72 -0
  181. package/dist/services/alias.js +82 -0
  182. package/dist/services/base.d.ts +9 -0
  183. package/dist/services/base.js +17 -0
  184. package/dist/services/comptes.d.ts +149 -0
  185. package/dist/services/comptes.js +158 -0
  186. package/dist/services/demandes-annulation.d.ts +97 -0
  187. package/dist/services/demandes-annulation.js +104 -0
  188. package/dist/services/demandes-paiement-en-masse.d.ts +139 -0
  189. package/dist/services/demandes-paiement-en-masse.js +139 -0
  190. package/dist/services/demandes-paiement.d.ts +144 -0
  191. package/dist/services/demandes-paiement.js +151 -0
  192. package/dist/services/paiements-en-masse.d.ts +152 -0
  193. package/dist/services/paiements-en-masse.js +153 -0
  194. package/dist/services/paiements.d.ts +135 -0
  195. package/dist/services/paiements.js +135 -0
  196. package/dist/services/retours-fonds.d.ts +94 -0
  197. package/dist/services/retours-fonds.js +100 -0
  198. package/dist/services/webhooks.d.ts +131 -0
  199. package/dist/services/webhooks.js +142 -0
  200. package/dist/types/alias.d.ts +64 -0
  201. package/dist/types/alias.js +73 -0
  202. package/dist/utils/constants.d.ts +93 -0
  203. package/dist/utils/constants.js +93 -0
  204. package/dist/utils/index.d.ts +60 -0
  205. package/dist/utils/index.js +115 -0
  206. package/package.json +81 -0
  207. package/scripts/post-generate.js +129 -0
  208. 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
+ }