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,153 @@
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 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
+ async createBulk(payment) {
98
+ return this.execute(async () => {
99
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
100
+ });
101
+ }
102
+ /**
103
+ * Get bulk payment details and status
104
+ *
105
+ * **Response Includes:**
106
+ * - Overall bulk status
107
+ * - Transaction counts (total, succeeded, failed)
108
+ * - Individual transaction statuses
109
+ * - Failed transaction details
110
+ *
111
+ * @param instructionId - Bulk instruction ID
112
+ * @returns Bulk payment details with transaction statuses
113
+ * @throws {PiSpiNotFoundError} If bulk payment not found
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const bulk = await sdk.paiementsEnMasse.get('SALARY-2023-03');
118
+ * console.log('Status:', bulk.statut); // 'IRREVOCABLE'
119
+ * console.log('Succeeded:', bulk.nombreSuccess); // 98
120
+ * console.log('Failed:', bulk.nombreEchec); // 2
121
+ * ```
122
+ */
123
+ async get(instructionId) {
124
+ return this.execute(async () => {
125
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
126
+ });
127
+ }
128
+ /**
129
+ * Retry failed payments in a bulk payment
130
+ *
131
+ * **Retry Process:**
132
+ * - Only failed transactions are retried
133
+ * - Successful transactions are not affected
134
+ * - Uses same `instructionId`
135
+ * - Can retry multiple times if needed
136
+ *
137
+ * @param instructionId - Bulk instruction ID
138
+ * @returns Retry response with updated status
139
+ * @throws {PiSpiNotFoundError} If bulk payment not found
140
+ * @throws {PiSpiError} If no failed transactions to retry
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * // Retry failed transactions
145
+ * await sdk.paiementsEnMasse.retry('SALARY-2023-03');
146
+ * ```
147
+ */
148
+ async retry(instructionId) {
149
+ return this.execute(async () => {
150
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
151
+ });
152
+ }
153
+ }
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Payments (Paiements) service wrapper
3
+ *
4
+ * Provides methods for creating and managing immediate payments.
5
+ *
6
+ * **Payment Types Supported:**
7
+ * - **Bank-to-Bank**: Payments between bank accounts via API (`categorie: 733`)
8
+ * - **Bank-to-Wallet**: Payments from bank accounts to mobile wallets
9
+ * - **Wallet-to-Wallet**: Payments between mobile wallets
10
+ * - **Wallet-to-Bank**: Payments from mobile wallets to bank accounts
11
+ *
12
+ * All payment types are interoperable across the UEMOA region (8 countries).
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Create immediate payment
17
+ * const payment = await sdk.paiements.create({
18
+ * comptePayeur: 'CIC2344256727788288822',
19
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
20
+ * montant: 150000, // 1,500 XOF
21
+ * motif: 'Paiement de services'
22
+ * });
23
+ * ```
24
+ */
25
+ import { BaseService } from './base';
26
+ import type { QueryParams } from '../query-builder';
27
+ export declare class PaiementsService extends BaseService {
28
+ /**
29
+ * Create an immediate payment
30
+ *
31
+ * **Payment Flow:**
32
+ * - If `confirmation: false`: Payment is sent immediately (default)
33
+ * - If `confirmation: true`: Payment is initiated, returns payee info for confirmation
34
+ *
35
+ * **Supported Transaction Types:**
36
+ * - Bank-to-Bank (`categorie: 733`)
37
+ * - Bank-to-Wallet (via alias lookup)
38
+ * - Wallet-to-Wallet (via alias lookup)
39
+ * - Wallet-to-Bank (via alias lookup)
40
+ *
41
+ * **Status Values:**
42
+ * - `INITIE`: Waiting for confirmation (if confirmation: true)
43
+ * - `ENVOYE`: Payment sent successfully
44
+ * - `IRREVOCABLE`: Payment confirmed and cannot be reversed
45
+ * - `REJETE`: Payment rejected (check `statutRaison` for error code)
46
+ *
47
+ * @param payment - Payment creation data
48
+ * @param payment.comptePayeur - Payer account number (e.g., 'CIC2344256727788288822')
49
+ * @param payment.payeAlias - Payee alias (SHID, MCOD, or MBNO format)
50
+ * @param payment.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
51
+ * @param payment.motif - Payment reason/description
52
+ * @param payment.txId - Unique transaction ID (optional, auto-generated if not provided)
53
+ * @param payment.confirmation - Whether to require confirmation before sending (default: false)
54
+ * @param payment.categorie - Payment category/canal (default: 733 for API Business)
55
+ * @returns Payment response with status
56
+ * @throws {PiSpiValidationError} If payment fails validation (e.g., invalid alias, duplicate txId)
57
+ * @throws {PiSpiError} If account blocked or insufficient funds
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Immediate payment (no confirmation)
62
+ * const payment = await sdk.paiements.create({
63
+ * comptePayeur: 'CIC2344256727788288822',
64
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', // SHID alias
65
+ * montant: 150000, // 1,500 XOF
66
+ * motif: 'Paiement de services',
67
+ * txId: '23552722'
68
+ * });
69
+ *
70
+ * // Payment with confirmation (returns payee info)
71
+ * const paymentWithConfirmation = await sdk.paiements.create({
72
+ * comptePayeur: 'CIC2344256727788288822',
73
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
74
+ * montant: 3000000, // 30,000 XOF
75
+ * confirmation: true
76
+ * });
77
+ * ```
78
+ */
79
+ create(payment: {
80
+ comptePayeur: string;
81
+ payeAlias: string;
82
+ montant: number;
83
+ motif: string;
84
+ txId?: string;
85
+ confirmation?: boolean;
86
+ categorie?: string;
87
+ }): Promise<never>;
88
+ /**
89
+ * Get payment details by transaction ID
90
+ *
91
+ * @param txId - Transaction ID
92
+ * @returns Payment details including status and history
93
+ * @throws {PiSpiNotFoundError} If payment not found
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const payment = await sdk.paiements.get('23552722');
98
+ * console.log('Status:', payment.statut); // 'IRREVOCABLE'
99
+ * console.log('Amount:', payment.montant); // 150000
100
+ * ```
101
+ */
102
+ get(txId: string): Promise<never>;
103
+ /**
104
+ * List payments with filtering and pagination
105
+ *
106
+ * **Filter Options:**
107
+ * - Filter by account: `comptePayeur`
108
+ * - Filter by status: `statut` (INITIE, ENVOYE, IRREVOCABLE, REJETE)
109
+ * - Filter by dates: `dateEnvoi`, `dateIrrevocabilite`
110
+ * - Use QueryBuilder for advanced filtering
111
+ *
112
+ * @param params - Query parameters for filtering and pagination
113
+ * @returns Paginated list of payments
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * // List all payments for an account
118
+ * const payments = await sdk.paiements.list({
119
+ * comptePayeur: 'CIC2344256727788288822',
120
+ * page: 1,
121
+ * size: 20
122
+ * });
123
+ *
124
+ * // Filter by status
125
+ * const completed = await sdk.paiements.list({
126
+ * comptePayeur: 'CIC2344256727788288822',
127
+ * statut: 'IRREVOCABLE'
128
+ * });
129
+ * ```
130
+ */
131
+ list(params?: QueryParams & {
132
+ comptePayeur?: string;
133
+ statut?: string;
134
+ }): Promise<never>;
135
+ }
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Payments (Paiements) service wrapper
3
+ *
4
+ * Provides methods for creating and managing immediate payments.
5
+ *
6
+ * **Payment Types Supported:**
7
+ * - **Bank-to-Bank**: Payments between bank accounts via API (`categorie: 733`)
8
+ * - **Bank-to-Wallet**: Payments from bank accounts to mobile wallets
9
+ * - **Wallet-to-Wallet**: Payments between mobile wallets
10
+ * - **Wallet-to-Bank**: Payments from mobile wallets to bank accounts
11
+ *
12
+ * All payment types are interoperable across the UEMOA region (8 countries).
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Create immediate payment
17
+ * const payment = await sdk.paiements.create({
18
+ * comptePayeur: 'CIC2344256727788288822',
19
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
20
+ * montant: 150000, // 1,500 XOF
21
+ * motif: 'Paiement de services'
22
+ * });
23
+ * ```
24
+ */
25
+ import { BaseService } from './base';
26
+ export class PaiementsService extends BaseService {
27
+ /**
28
+ * Create an immediate payment
29
+ *
30
+ * **Payment Flow:**
31
+ * - If `confirmation: false`: Payment is sent immediately (default)
32
+ * - If `confirmation: true`: Payment is initiated, returns payee info for confirmation
33
+ *
34
+ * **Supported Transaction Types:**
35
+ * - Bank-to-Bank (`categorie: 733`)
36
+ * - Bank-to-Wallet (via alias lookup)
37
+ * - Wallet-to-Wallet (via alias lookup)
38
+ * - Wallet-to-Bank (via alias lookup)
39
+ *
40
+ * **Status Values:**
41
+ * - `INITIE`: Waiting for confirmation (if confirmation: true)
42
+ * - `ENVOYE`: Payment sent successfully
43
+ * - `IRREVOCABLE`: Payment confirmed and cannot be reversed
44
+ * - `REJETE`: Payment rejected (check `statutRaison` for error code)
45
+ *
46
+ * @param payment - Payment creation data
47
+ * @param payment.comptePayeur - Payer account number (e.g., 'CIC2344256727788288822')
48
+ * @param payment.payeAlias - Payee alias (SHID, MCOD, or MBNO format)
49
+ * @param payment.montant - Amount in centimes (e.g., 150000 = 1,500 XOF)
50
+ * @param payment.motif - Payment reason/description
51
+ * @param payment.txId - Unique transaction ID (optional, auto-generated if not provided)
52
+ * @param payment.confirmation - Whether to require confirmation before sending (default: false)
53
+ * @param payment.categorie - Payment category/canal (default: 733 for API Business)
54
+ * @returns Payment response with status
55
+ * @throws {PiSpiValidationError} If payment fails validation (e.g., invalid alias, duplicate txId)
56
+ * @throws {PiSpiError} If account blocked or insufficient funds
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // Immediate payment (no confirmation)
61
+ * const payment = await sdk.paiements.create({
62
+ * comptePayeur: 'CIC2344256727788288822',
63
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', // SHID alias
64
+ * montant: 150000, // 1,500 XOF
65
+ * motif: 'Paiement de services',
66
+ * txId: '23552722'
67
+ * });
68
+ *
69
+ * // Payment with confirmation (returns payee info)
70
+ * const paymentWithConfirmation = await sdk.paiements.create({
71
+ * comptePayeur: 'CIC2344256727788288822',
72
+ * payeAlias: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f',
73
+ * montant: 3000000, // 30,000 XOF
74
+ * confirmation: true
75
+ * });
76
+ * ```
77
+ */
78
+ async create(payment) {
79
+ return this.execute(async () => {
80
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
81
+ });
82
+ }
83
+ /**
84
+ * Get payment details by transaction ID
85
+ *
86
+ * @param txId - Transaction ID
87
+ * @returns Payment details including status and history
88
+ * @throws {PiSpiNotFoundError} If payment not found
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const payment = await sdk.paiements.get('23552722');
93
+ * console.log('Status:', payment.statut); // 'IRREVOCABLE'
94
+ * console.log('Amount:', payment.montant); // 150000
95
+ * ```
96
+ */
97
+ async get(txId) {
98
+ return this.execute(async () => {
99
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
100
+ });
101
+ }
102
+ /**
103
+ * List payments with filtering and pagination
104
+ *
105
+ * **Filter Options:**
106
+ * - Filter by account: `comptePayeur`
107
+ * - Filter by status: `statut` (INITIE, ENVOYE, IRREVOCABLE, REJETE)
108
+ * - Filter by dates: `dateEnvoi`, `dateIrrevocabilite`
109
+ * - Use QueryBuilder for advanced filtering
110
+ *
111
+ * @param params - Query parameters for filtering and pagination
112
+ * @returns Paginated list of payments
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * // List all payments for an account
117
+ * const payments = await sdk.paiements.list({
118
+ * comptePayeur: 'CIC2344256727788288822',
119
+ * page: 1,
120
+ * size: 20
121
+ * });
122
+ *
123
+ * // Filter by status
124
+ * const completed = await sdk.paiements.list({
125
+ * comptePayeur: 'CIC2344256727788288822',
126
+ * statut: 'IRREVOCABLE'
127
+ * });
128
+ * ```
129
+ */
130
+ async list(params) {
131
+ return this.execute(async () => {
132
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
133
+ });
134
+ }
135
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Fund Returns (Retours de Fonds) service wrapper
3
+ *
4
+ * Provides methods for returning funds from received payments.
5
+ *
6
+ * **Return Rules:**
7
+ * - Can only return funds from payments received
8
+ * - Must be initiated within 90 days of original payment
9
+ * - After 90 days, returns are no longer possible
10
+ * - Returns are processed instantly when sent
11
+ *
12
+ * **Use Cases:**
13
+ * - Refunds for returned goods
14
+ * - Cancellation of services
15
+ * - Error corrections
16
+ * - Customer disputes
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Return funds from a received payment
21
+ * const returnFunds = await sdk.retoursFonds.create({
22
+ * comptePaye: 'CIC2344256727788288822',
23
+ * txId: '23552722', // Original payment transaction ID
24
+ * montant: 150000, // Amount to return (1,500 XOF)
25
+ * motif: 'CUST' // Customer request reason code
26
+ * });
27
+ * ```
28
+ */
29
+ import { BaseService } from './base';
30
+ import type { QueryParams } from '../query-builder';
31
+ export declare class RetoursFondsService extends BaseService {
32
+ /**
33
+ * Create a fund return
34
+ *
35
+ * **Return Process:**
36
+ * 1. Business identifies original payment transaction
37
+ * 2. Creates return request (must be within 90 days)
38
+ * 3. Return is processed immediately
39
+ * 4. Funds are returned to original payer
40
+ *
41
+ * **Status Values:**
42
+ * - `ENVOYE`: Return sent successfully
43
+ * - `IRREVOCABLE`: Return confirmed and cannot be reversed
44
+ * - `REJETE`: Return rejected (check `statutRaison` for error code)
45
+ *
46
+ * **Rejection Reasons:**
47
+ * - `AM04`: Insufficient guarantee funds
48
+ * - `AM09`: Wrong amount
49
+ * - `AC06`: Blocked account
50
+ * - `FR01`: Fraud suspicion
51
+ * - `RR04`: Regulatory reason
52
+ *
53
+ * @param returnRequest - Fund return request data
54
+ * @param returnRequest.comptePaye - Business account number (original payee)
55
+ * @param returnRequest.txId - Original payment transaction ID
56
+ * @param returnRequest.montant - Amount to return in centimes (e.g., 150000 = 1,500 XOF)
57
+ * @param returnRequest.motif - Return reason code (e.g., 'CUST' for customer request)
58
+ * @returns Fund return response
59
+ * @throws {PiSpiValidationError} If return fails validation (e.g., > 90 days, invalid txId)
60
+ * @throws {PiSpiError} If account blocked or insufficient funds
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // Return full payment amount
65
+ * await sdk.retoursFonds.create({
66
+ * comptePaye: 'CIC2344256727788288822',
67
+ * txId: '23552722', // Original payment ID
68
+ * montant: 150000, // 1,500 XOF
69
+ * motif: 'CUST' // Customer request
70
+ * });
71
+ * ```
72
+ */
73
+ create(returnRequest: {
74
+ comptePaye: string;
75
+ txId: string;
76
+ montant: number;
77
+ motif: string;
78
+ }): Promise<never>;
79
+ /**
80
+ * Get fund return details by transaction ID
81
+ *
82
+ * @param id - Fund return transaction ID
83
+ * @returns Fund return details
84
+ * @throws {PiSpiNotFoundError} If return not found
85
+ */
86
+ get(id: string): Promise<never>;
87
+ /**
88
+ * List fund returns with filtering and pagination
89
+ *
90
+ * @param params - Query parameters for filtering and pagination
91
+ * @returns Paginated list of fund returns
92
+ */
93
+ list(params?: QueryParams): Promise<never>;
94
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Fund Returns (Retours de Fonds) service wrapper
3
+ *
4
+ * Provides methods for returning funds from received payments.
5
+ *
6
+ * **Return Rules:**
7
+ * - Can only return funds from payments received
8
+ * - Must be initiated within 90 days of original payment
9
+ * - After 90 days, returns are no longer possible
10
+ * - Returns are processed instantly when sent
11
+ *
12
+ * **Use Cases:**
13
+ * - Refunds for returned goods
14
+ * - Cancellation of services
15
+ * - Error corrections
16
+ * - Customer disputes
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Return funds from a received payment
21
+ * const returnFunds = await sdk.retoursFonds.create({
22
+ * comptePaye: 'CIC2344256727788288822',
23
+ * txId: '23552722', // Original payment transaction ID
24
+ * montant: 150000, // Amount to return (1,500 XOF)
25
+ * motif: 'CUST' // Customer request reason code
26
+ * });
27
+ * ```
28
+ */
29
+ import { BaseService } from './base';
30
+ export class RetoursFondsService extends BaseService {
31
+ /**
32
+ * Create a fund return
33
+ *
34
+ * **Return Process:**
35
+ * 1. Business identifies original payment transaction
36
+ * 2. Creates return request (must be within 90 days)
37
+ * 3. Return is processed immediately
38
+ * 4. Funds are returned to original payer
39
+ *
40
+ * **Status Values:**
41
+ * - `ENVOYE`: Return sent successfully
42
+ * - `IRREVOCABLE`: Return confirmed and cannot be reversed
43
+ * - `REJETE`: Return rejected (check `statutRaison` for error code)
44
+ *
45
+ * **Rejection Reasons:**
46
+ * - `AM04`: Insufficient guarantee funds
47
+ * - `AM09`: Wrong amount
48
+ * - `AC06`: Blocked account
49
+ * - `FR01`: Fraud suspicion
50
+ * - `RR04`: Regulatory reason
51
+ *
52
+ * @param returnRequest - Fund return request data
53
+ * @param returnRequest.comptePaye - Business account number (original payee)
54
+ * @param returnRequest.txId - Original payment transaction ID
55
+ * @param returnRequest.montant - Amount to return in centimes (e.g., 150000 = 1,500 XOF)
56
+ * @param returnRequest.motif - Return reason code (e.g., 'CUST' for customer request)
57
+ * @returns Fund return response
58
+ * @throws {PiSpiValidationError} If return fails validation (e.g., > 90 days, invalid txId)
59
+ * @throws {PiSpiError} If account blocked or insufficient funds
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * // Return full payment amount
64
+ * await sdk.retoursFonds.create({
65
+ * comptePaye: 'CIC2344256727788288822',
66
+ * txId: '23552722', // Original payment ID
67
+ * montant: 150000, // 1,500 XOF
68
+ * motif: 'CUST' // Customer request
69
+ * });
70
+ * ```
71
+ */
72
+ async create(returnRequest) {
73
+ return this.execute(async () => {
74
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
75
+ });
76
+ }
77
+ /**
78
+ * Get fund return details by transaction ID
79
+ *
80
+ * @param id - Fund return transaction ID
81
+ * @returns Fund return details
82
+ * @throws {PiSpiNotFoundError} If return not found
83
+ */
84
+ async get(id) {
85
+ return this.execute(async () => {
86
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
87
+ });
88
+ }
89
+ /**
90
+ * List fund returns with filtering and pagination
91
+ *
92
+ * @param params - Query parameters for filtering and pagination
93
+ * @returns Paginated list of fund returns
94
+ */
95
+ async list(params) {
96
+ return this.execute(async () => {
97
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
98
+ });
99
+ }
100
+ }