kotanipay-sdk 1.0.4 → 1.0.5
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/README.md +277 -22
- package/dist/cjs/client/kotani-pay.client.d.ts +3 -0
- package/dist/cjs/client/kotani-pay.client.d.ts.map +1 -1
- package/dist/cjs/client/kotani-pay.client.js +3 -0
- package/dist/cjs/client/kotani-pay.client.js.map +1 -1
- package/dist/cjs/modules/index.d.ts +3 -0
- package/dist/cjs/modules/index.d.ts.map +1 -1
- package/dist/cjs/modules/index.js +3 -0
- package/dist/cjs/modules/index.js.map +1 -1
- package/dist/cjs/modules/integrator/integrator.service.d.ts +1 -0
- package/dist/cjs/modules/integrator/integrator.service.d.ts.map +1 -1
- package/dist/cjs/modules/integrator/integrator.service.js +4 -0
- package/dist/cjs/modules/integrator/integrator.service.js.map +1 -1
- package/dist/cjs/modules/mobile-money/index.d.ts +2 -0
- package/dist/cjs/modules/mobile-money/index.d.ts.map +1 -0
- package/dist/cjs/modules/mobile-money/index.js +18 -0
- package/dist/cjs/modules/mobile-money/index.js.map +1 -0
- package/dist/cjs/modules/mobile-money/mobile-money.service.d.ts +10 -0
- package/dist/cjs/modules/mobile-money/mobile-money.service.d.ts.map +1 -1
- package/dist/cjs/modules/mobile-money/mobile-money.service.js +22 -0
- package/dist/cjs/modules/mobile-money/mobile-money.service.js.map +1 -1
- package/dist/cjs/modules/mobile-money-deposit/deposit.service.d.ts +10 -0
- package/dist/cjs/modules/mobile-money-deposit/deposit.service.d.ts.map +1 -0
- package/dist/cjs/modules/mobile-money-deposit/deposit.service.js +26 -0
- package/dist/cjs/modules/mobile-money-deposit/deposit.service.js.map +1 -0
- package/dist/cjs/modules/mobile-money-deposit/index.d.ts +2 -0
- package/dist/cjs/modules/mobile-money-deposit/index.d.ts.map +1 -0
- package/dist/cjs/modules/mobile-money-deposit/index.js +18 -0
- package/dist/cjs/modules/mobile-money-deposit/index.js.map +1 -0
- package/dist/cjs/modules/onramp/create-onramp.service.d.ts +10 -0
- package/dist/cjs/modules/onramp/create-onramp.service.d.ts.map +1 -0
- package/dist/cjs/modules/onramp/create-onramp.service.js +26 -0
- package/dist/cjs/modules/onramp/create-onramp.service.js.map +1 -0
- package/dist/cjs/modules/onramp/index.d.ts +2 -0
- package/dist/cjs/modules/onramp/index.d.ts.map +1 -0
- package/dist/cjs/modules/onramp/index.js +18 -0
- package/dist/cjs/modules/onramp/index.js.map +1 -0
- package/dist/cjs/modules/wallet/index.d.ts +2 -0
- package/dist/cjs/modules/wallet/index.d.ts.map +1 -0
- package/dist/cjs/modules/wallet/index.js +18 -0
- package/dist/cjs/modules/wallet/index.js.map +1 -0
- package/dist/cjs/modules/wallet/wallet.service.d.ts +12 -0
- package/dist/cjs/modules/wallet/wallet.service.d.ts.map +1 -0
- package/dist/cjs/modules/wallet/wallet.service.js +50 -0
- package/dist/cjs/modules/wallet/wallet.service.js.map +1 -0
- package/dist/cjs/types/deposit.types.d.ts +40 -0
- package/dist/cjs/types/deposit.types.d.ts.map +1 -0
- package/dist/cjs/types/deposit.types.js +3 -0
- package/dist/cjs/types/deposit.types.js.map +1 -0
- package/dist/cjs/types/index.d.ts +3 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +3 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/mobile-money.types.d.ts.map +1 -1
- package/dist/cjs/types/mobile-money.types.js +0 -1
- package/dist/cjs/types/mobile-money.types.js.map +1 -1
- package/dist/cjs/types/onramp.types.d.ts +28 -0
- package/dist/cjs/types/onramp.types.d.ts.map +1 -0
- package/dist/cjs/types/onramp.types.js +3 -0
- package/dist/cjs/types/onramp.types.js.map +1 -0
- package/dist/cjs/types/wallet.types.d.ts +19 -0
- package/dist/cjs/types/wallet.types.d.ts.map +1 -0
- package/dist/cjs/types/wallet.types.js +4 -0
- package/dist/cjs/types/wallet.types.js.map +1 -0
- package/dist/cjs/utils/validation.util.d.ts.map +1 -1
- package/dist/cjs/utils/validation.util.js.map +1 -1
- package/dist/esm/client/kotani-pay.client.d.ts +3 -0
- package/dist/esm/client/kotani-pay.client.d.ts.map +1 -1
- package/dist/esm/client/kotani-pay.client.js +3 -0
- package/dist/esm/client/kotani-pay.client.js.map +1 -1
- package/dist/esm/modules/index.d.ts +3 -0
- package/dist/esm/modules/index.d.ts.map +1 -1
- package/dist/esm/modules/index.js +3 -0
- package/dist/esm/modules/index.js.map +1 -1
- package/dist/esm/modules/integrator/integrator.service.d.ts +1 -0
- package/dist/esm/modules/integrator/integrator.service.d.ts.map +1 -1
- package/dist/esm/modules/integrator/integrator.service.js +4 -0
- package/dist/esm/modules/integrator/integrator.service.js.map +1 -1
- package/dist/esm/modules/mobile-money/index.d.ts +2 -0
- package/dist/esm/modules/mobile-money/index.d.ts.map +1 -0
- package/dist/esm/modules/mobile-money/index.js +2 -0
- package/dist/esm/modules/mobile-money/index.js.map +1 -0
- package/dist/esm/modules/mobile-money/mobile-money.service.d.ts +10 -0
- package/dist/esm/modules/mobile-money/mobile-money.service.d.ts.map +1 -1
- package/dist/esm/modules/mobile-money/mobile-money.service.js +22 -0
- package/dist/esm/modules/mobile-money/mobile-money.service.js.map +1 -1
- package/dist/esm/modules/mobile-money-deposit/deposit.service.d.ts +10 -0
- package/dist/esm/modules/mobile-money-deposit/deposit.service.d.ts.map +1 -0
- package/dist/esm/modules/mobile-money-deposit/deposit.service.js +22 -0
- package/dist/esm/modules/mobile-money-deposit/deposit.service.js.map +1 -0
- package/dist/esm/modules/mobile-money-deposit/index.d.ts +2 -0
- package/dist/esm/modules/mobile-money-deposit/index.d.ts.map +1 -0
- package/dist/esm/modules/mobile-money-deposit/index.js +2 -0
- package/dist/esm/modules/mobile-money-deposit/index.js.map +1 -0
- package/dist/esm/modules/onramp/create-onramp.service.d.ts +10 -0
- package/dist/esm/modules/onramp/create-onramp.service.d.ts.map +1 -0
- package/dist/esm/modules/onramp/create-onramp.service.js +22 -0
- package/dist/esm/modules/onramp/create-onramp.service.js.map +1 -0
- package/dist/esm/modules/onramp/index.d.ts +2 -0
- package/dist/esm/modules/onramp/index.d.ts.map +1 -0
- package/dist/esm/modules/onramp/index.js +2 -0
- package/dist/esm/modules/onramp/index.js.map +1 -0
- package/dist/esm/modules/wallet/index.d.ts +2 -0
- package/dist/esm/modules/wallet/index.d.ts.map +1 -0
- package/dist/esm/modules/wallet/index.js +2 -0
- package/dist/esm/modules/wallet/index.js.map +1 -0
- package/dist/esm/modules/wallet/wallet.service.d.ts +12 -0
- package/dist/esm/modules/wallet/wallet.service.d.ts.map +1 -0
- package/dist/esm/modules/wallet/wallet.service.js +46 -0
- package/dist/esm/modules/wallet/wallet.service.js.map +1 -0
- package/dist/esm/types/deposit.types.d.ts +40 -0
- package/dist/esm/types/deposit.types.d.ts.map +1 -0
- package/dist/esm/types/deposit.types.js +2 -0
- package/dist/esm/types/deposit.types.js.map +1 -0
- package/dist/esm/types/index.d.ts +3 -0
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/types/index.js +3 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/mobile-money.types.d.ts.map +1 -1
- package/dist/esm/types/mobile-money.types.js +0 -1
- package/dist/esm/types/mobile-money.types.js.map +1 -1
- package/dist/esm/types/onramp.types.d.ts +28 -0
- package/dist/esm/types/onramp.types.d.ts.map +1 -0
- package/dist/esm/types/onramp.types.js +2 -0
- package/dist/esm/types/onramp.types.js.map +1 -0
- package/dist/esm/types/wallet.types.d.ts +19 -0
- package/dist/esm/types/wallet.types.d.ts.map +1 -0
- package/dist/esm/types/wallet.types.js +3 -0
- package/dist/esm/types/wallet.types.js.map +1 -0
- package/dist/esm/utils/validation.util.d.ts.map +1 -1
- package/dist/esm/utils/validation.util.js.map +1 -1
- package/dist/types/client/kotani-pay.client.d.ts +3 -0
- package/dist/types/client/kotani-pay.client.d.ts.map +1 -1
- package/dist/types/modules/index.d.ts +3 -0
- package/dist/types/modules/index.d.ts.map +1 -1
- package/dist/types/modules/integrator/integrator.service.d.ts +1 -0
- package/dist/types/modules/integrator/integrator.service.d.ts.map +1 -1
- package/dist/types/modules/mobile-money/index.d.ts +2 -0
- package/dist/types/modules/mobile-money/index.d.ts.map +1 -0
- package/dist/types/modules/mobile-money/mobile-money.service.d.ts +10 -0
- package/dist/types/modules/mobile-money/mobile-money.service.d.ts.map +1 -1
- package/dist/types/modules/mobile-money-deposit/deposit.service.d.ts +10 -0
- package/dist/types/modules/mobile-money-deposit/deposit.service.d.ts.map +1 -0
- package/dist/types/modules/mobile-money-deposit/index.d.ts +2 -0
- package/dist/types/modules/mobile-money-deposit/index.d.ts.map +1 -0
- package/dist/types/modules/onramp/create-onramp.service.d.ts +10 -0
- package/dist/types/modules/onramp/create-onramp.service.d.ts.map +1 -0
- package/dist/types/modules/onramp/index.d.ts +2 -0
- package/dist/types/modules/onramp/index.d.ts.map +1 -0
- package/dist/types/modules/wallet/index.d.ts +2 -0
- package/dist/types/modules/wallet/index.d.ts.map +1 -0
- package/dist/types/modules/wallet/wallet.service.d.ts +12 -0
- package/dist/types/modules/wallet/wallet.service.d.ts.map +1 -0
- package/dist/types/types/deposit.types.d.ts +40 -0
- package/dist/types/types/deposit.types.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +3 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/mobile-money.types.d.ts.map +1 -1
- package/dist/types/types/onramp.types.d.ts +28 -0
- package/dist/types/types/onramp.types.d.ts.map +1 -0
- package/dist/types/types/wallet.types.d.ts +19 -0
- package/dist/types/types/wallet.types.d.ts.map +1 -0
- package/dist/types/utils/validation.util.d.ts.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
@@ -5,8 +5,11 @@ Official TypeScript/JavaScript SDK for the KotaniPay API. Simplify crypto-to-mob
|
|
5
5
|
## Features
|
6
6
|
|
7
7
|
- 🚀 **TypeScript Support** - Full type definitions included
|
8
|
-
- 🔐 **Authentication Management** - Magic link login flow
|
9
|
-
- 📱 **Mobile Money** - Create and manage mobile money customers
|
8
|
+
- 🔐 **Authentication Management** - Magic link login flow with JWT and API key support
|
9
|
+
- 📱 **Mobile Money** - Create and manage mobile money customers across 13+ African countries
|
10
|
+
- 💰 **Wallet Management** - Create and manage fiat wallets for multiple currencies
|
11
|
+
- 💸 **Deposits** - Handle mobile money deposits with real-time status tracking
|
12
|
+
- 🔄 **Onramp** - Convert fiat to cryptocurrency through mobile money
|
10
13
|
- 🏢 **Integrator Management** - Create and manage integrator accounts
|
11
14
|
- 🛡️ **Error Handling** - Comprehensive error types and validation
|
12
15
|
- 🌍 **Multi-Environment** - Sandbox and production support
|
@@ -53,6 +56,12 @@ client.initializeWithSession(sessionData);
|
|
53
56
|
const apiKey = await client.auth.generateApiKey();
|
54
57
|
client.initializeWithApiKey(apiKey.key);
|
55
58
|
|
59
|
+
// Create fiat wallet
|
60
|
+
const wallet = await client.wallet.create({
|
61
|
+
name: 'My USD Wallet',
|
62
|
+
currency: 'USD'
|
63
|
+
});
|
64
|
+
|
56
65
|
// Create mobile money customer
|
57
66
|
const customer = await client.mobileMoney.createCustomer({
|
58
67
|
phone_number: '+254700123456',
|
@@ -60,6 +69,13 @@ const customer = await client.mobileMoney.createCustomer({
|
|
60
69
|
network: 'MPESA',
|
61
70
|
account_name: 'John Doe'
|
62
71
|
});
|
72
|
+
|
73
|
+
// Create deposit
|
74
|
+
const deposit = await client.mobileMoneyDeposit.createDeposit({
|
75
|
+
amount: 100.00,
|
76
|
+
wallet_id: wallet.data.id,
|
77
|
+
customer_key: customer.id
|
78
|
+
});
|
63
79
|
```
|
64
80
|
|
65
81
|
## Authentication Flow
|
@@ -101,8 +117,16 @@ Pass the `data` object to `initializeWithSession()`.
|
|
101
117
|
const client = new KotaniPayClient({
|
102
118
|
environment: 'sandbox' | 'production',
|
103
119
|
timeout?: number,
|
104
|
-
apiKey?: string // Optional: for direct API key usage
|
120
|
+
apiKey?: string, // Optional: for direct API key usage
|
121
|
+
baseUrl?: string // Optional: custom base URL
|
105
122
|
});
|
123
|
+
|
124
|
+
// Utility methods
|
125
|
+
const health = await client.healthCheck();
|
126
|
+
const config = client.getConfig();
|
127
|
+
const version = client.getVersion();
|
128
|
+
const isAuth = client.isAuthenticated();
|
129
|
+
const authStatus = client.getAuthStatus();
|
106
130
|
```
|
107
131
|
|
108
132
|
### Integrator Management
|
@@ -119,7 +143,12 @@ await client.integrator.create({
|
|
119
143
|
country_code: string
|
120
144
|
});
|
121
145
|
|
146
|
+
// Get all integrators (requires auth)
|
147
|
+
// CLIENT HAS TO BE INITIALIZED WITH AN API KEY
|
148
|
+
await client.integrator.getIntegratorInfo();
|
122
149
|
|
150
|
+
// Get integrator by ID (requires auth)
|
151
|
+
await client.integrator.getById(id);
|
123
152
|
```
|
124
153
|
|
125
154
|
### Authentication
|
@@ -137,8 +166,20 @@ await client.auth.generateApiKey();
|
|
137
166
|
// Set API key directly
|
138
167
|
client.initializeWithApiKey(apiKey);
|
139
168
|
|
169
|
+
// Refresh JWT token
|
170
|
+
await client.auth.refreshToken();
|
171
|
+
|
172
|
+
// Get current session
|
173
|
+
client.auth.getSession();
|
174
|
+
|
175
|
+
// Get token info
|
176
|
+
client.auth.getTokenInfo();
|
177
|
+
|
140
178
|
// Check authentication status
|
141
179
|
client.isAuthenticated();
|
180
|
+
|
181
|
+
// Logout and clear session
|
182
|
+
client.auth.logout();
|
142
183
|
```
|
143
184
|
|
144
185
|
### Mobile Money
|
@@ -147,25 +188,100 @@ client.isAuthenticated();
|
|
147
188
|
// Create customer (requires auth)
|
148
189
|
await client.mobileMoney.createCustomer({
|
149
190
|
phone_number: string,
|
150
|
-
country_code: 'GHA' | 'KEN' | 'ZAC' | 'CIV' |
|
151
|
-
network?: 'MPESA' | 'MTN' | 'AIRTEL' |
|
191
|
+
country_code: 'GHA' | 'KEN' | 'ZAC' | 'CIV' | 'ZMB' | 'CMR' | 'COD' | 'SEN' | 'TZM' | 'MWI' | 'UGA' | 'ETH' | 'GRW',
|
192
|
+
network?: 'MPESA' | 'MTN' | 'AIRTEL' | 'VODAFONE' | 'TIGO' | 'ORANGE' | 'VODACOM' | 'NOT_SUPPORTED' | 'ZAMTEL' | 'CHECKOUT' | 'BKTRX' | 'CRDTRX' | 'MOOV' | 'TMONEY' | 'FREE' | 'EXPRESSO' | 'HALOPESA',
|
152
193
|
account_name?: string
|
153
194
|
});
|
154
195
|
|
155
196
|
// Get all customers (requires auth)
|
156
197
|
await client.mobileMoney.getAllCustomers();
|
157
198
|
|
199
|
+
// Get customer by ID (requires auth)
|
200
|
+
await client.mobileMoney.getCustomerById(customerId);
|
201
|
+
|
202
|
+
// Get customers by customer key (requires auth)
|
203
|
+
await client.mobileMoney.getCustomersByKey(customerKey);
|
204
|
+
|
205
|
+
// Get customers by phone number (requires auth)
|
206
|
+
await client.mobileMoney.getCustomersByPhoneNumber(phoneNumber);
|
207
|
+
```
|
208
|
+
|
209
|
+
### Wallet Management
|
210
|
+
|
211
|
+
```typescript
|
212
|
+
// Create fiat wallet (requires auth)
|
213
|
+
await client.wallet.create({
|
214
|
+
name: string,
|
215
|
+
currency: 'USD' | 'EUR' | 'GBP' | 'GHS' | 'KES' | 'ZAR' | 'NGN' | 'TZS' | 'UGX' | 'RWF' | 'MWK' | 'ZMW'
|
216
|
+
});
|
217
|
+
|
218
|
+
// Get all fiat wallets (requires auth)
|
219
|
+
await client.wallet.getIntegratorFiatWallets();
|
220
|
+
|
221
|
+
// Get wallet by ID (requires auth)
|
222
|
+
await client.wallet.getIntegratorFiatWalletById(walletId);
|
223
|
+
|
224
|
+
// Get wallets by currency (requires auth)
|
225
|
+
await client.wallet.getIntegratorFiatWalletsByCurrency(currency);
|
226
|
+
```
|
227
|
+
|
228
|
+
### Mobile Money Deposits
|
229
|
+
|
230
|
+
```typescript
|
231
|
+
// Create deposit (requires auth)
|
232
|
+
await client.mobileMoneyDeposit.createDeposit({
|
233
|
+
amount: number,
|
234
|
+
wallet_id: string,
|
235
|
+
customer_key: string,
|
236
|
+
callback_url?: string,
|
237
|
+
reference_id?: string
|
238
|
+
});
|
239
|
+
|
240
|
+
// Get deposit transaction status (requires auth)
|
241
|
+
await client.mobileMoneyDeposit.getDepositTransactionStatus(reference_id);
|
242
|
+
```
|
243
|
+
|
244
|
+
### Onramp (Fiat to Crypto)
|
245
|
+
|
246
|
+
```typescript
|
247
|
+
// Initiate onramp (requires auth)
|
248
|
+
await client.onramp.iniatiateOnramp({
|
249
|
+
mobileMoney: {
|
250
|
+
phoneNumber: string,
|
251
|
+
accountName: string,
|
252
|
+
providerNetwork: string
|
253
|
+
},
|
254
|
+
fiatAmount: number,
|
255
|
+
currency: string,
|
256
|
+
chain: string,
|
257
|
+
token: string,
|
258
|
+
receiverAddress: string,
|
259
|
+
referenceId: string,
|
260
|
+
callbackUrl: string,
|
261
|
+
rateId: string
|
262
|
+
});
|
263
|
+
|
264
|
+
// Get onramp transaction status (requires auth)
|
265
|
+
await client.onramp.getOnRampTransactionStatus(referenceId);
|
266
|
+
```
|
158
267
|
|
159
268
|
## Supported Countries & Networks
|
160
269
|
|
161
270
|
### Countries
|
162
271
|
|
163
|
-
- 🇬🇭 Ghana (GHA)
|
164
|
-
- 🇰🇪 Kenya (KEN)
|
165
|
-
- 🇿🇦 South Africa (ZAC)
|
166
|
-
- 🇨🇮 Ivory Coast (CIV)
|
167
|
-
- 🇿🇲 Zambia (ZMB)
|
168
|
-
-
|
272
|
+
- 🇬🇭 Ghana (GHA) - MTN, VODAFONE, AIRTEL
|
273
|
+
- 🇰🇪 Kenya (KEN) - MPESA, AIRTEL
|
274
|
+
- 🇿🇦 South Africa (ZAC) - MTN, VODACOM
|
275
|
+
- 🇨🇮 Ivory Coast (CIV) - MTN, ORANGE, MOOV
|
276
|
+
- 🇿🇲 Zambia (ZMB) - MTN, AIRTEL, ZAMTEL
|
277
|
+
- 🇨🇲 Cameroon (CMR) - MTN, ORANGE
|
278
|
+
- 🇨🇩 Congo DRC (COD) - VODACOM, AIRTEL
|
279
|
+
- 🇸🇳 Senegal (SEN) - ORANGE, FREE, EXPRESSO
|
280
|
+
- 🇹🇿 Tanzania (TZM) - VODACOM, AIRTEL, TIGO, HALOPESA
|
281
|
+
- 🇲🇼 Malawi (MWI) - AIRTEL
|
282
|
+
- 🇺🇬 Uganda (UGA) - MTN, AIRTEL
|
283
|
+
- 🇪🇹 Ethiopia (ETH)
|
284
|
+
- 🇬🇼 Guinea-Bissau (GRW)
|
169
285
|
|
170
286
|
### Networks
|
171
287
|
|
@@ -175,21 +291,33 @@ await client.mobileMoney.getAllCustomers();
|
|
175
291
|
- Vodafone Cash
|
176
292
|
- Tigo Pesa
|
177
293
|
- Orange Money
|
294
|
+
- And more...
|
295
|
+
|
296
|
+
### Supported Currencies
|
297
|
+
|
298
|
+
**Fiat Wallets**: USD, EUR, GBP, GHS, KES, ZAR, NGN, TZS, UGX, RWF, MWK, ZMW
|
299
|
+
|
300
|
+
### Transaction Statuses
|
301
|
+
|
302
|
+
**Deposit/Onramp**: PENDING, INITIATED, SUCCESSFUL, FAILED, EXPIRED, CANCELLED, DECLINED, REVERSED, IN_PROGRESS, DUPLICATE, ERROR_OCCURRED, REQUIRE_REVIEW, SUCCESS, RETRY
|
178
303
|
|
179
304
|
## Error Handling
|
180
305
|
|
181
306
|
```typescript
|
182
|
-
import {
|
307
|
+
import { ValidationException, AuthenticationException, KotaniPayException } from 'kotanipay-sdk';
|
183
308
|
|
184
309
|
try {
|
185
310
|
await client.mobileMoney.createCustomer(customerData);
|
186
311
|
} catch (error) {
|
187
|
-
if (error instanceof
|
312
|
+
if (error instanceof ValidationException) {
|
188
313
|
console.log('Validation error:', error.message);
|
189
|
-
|
314
|
+
console.log('Details:', error.details);
|
315
|
+
} else if (error instanceof AuthenticationException) {
|
190
316
|
console.log('Auth error:', error.message);
|
191
|
-
} else if (error instanceof
|
192
|
-
console.log('API error:', error.message
|
317
|
+
} else if (error instanceof KotaniPayException) {
|
318
|
+
console.log('API error:', error.message);
|
319
|
+
console.log('Status:', error.status);
|
320
|
+
console.log('Error code:', error.errorCode);
|
193
321
|
}
|
194
322
|
}
|
195
323
|
```
|
@@ -205,6 +333,63 @@ KOTANIPAY_ENVIRONMENT=sandbox
|
|
205
333
|
|
206
334
|
## Examples
|
207
335
|
|
336
|
+
### Complete Integration Flow
|
337
|
+
|
338
|
+
```typescript
|
339
|
+
import { KotaniPayClient } from 'kotanipay-sdk';
|
340
|
+
|
341
|
+
async function completeFlow() {
|
342
|
+
const client = new KotaniPayClient({
|
343
|
+
environment: 'sandbox'
|
344
|
+
});
|
345
|
+
|
346
|
+
try {
|
347
|
+
// 1. Create integrator
|
348
|
+
const integrator = await client.integrator.create({
|
349
|
+
organization: 'My Company',
|
350
|
+
product_name: 'My App',
|
351
|
+
first_name: 'John',
|
352
|
+
last_name: 'Doe',
|
353
|
+
email: 'john@mycompany.com',
|
354
|
+
phone: '+1234567890',
|
355
|
+
country_code: 'US'
|
356
|
+
});
|
357
|
+
|
358
|
+
// 2. Login and authenticate
|
359
|
+
await client.auth.login('john@mycompany.com');
|
360
|
+
// User clicks email link, you get session data
|
361
|
+
client.initializeWithSession(sessionData);
|
362
|
+
|
363
|
+
// 3. Generate API key
|
364
|
+
const apiKey = await client.auth.generateApiKey();
|
365
|
+
|
366
|
+
// 4. Create a wallet
|
367
|
+
const wallet = await client.wallet.create({
|
368
|
+
name: 'My USD Wallet',
|
369
|
+
currency: 'USD'
|
370
|
+
});
|
371
|
+
|
372
|
+
// 5. Create mobile money customer
|
373
|
+
const customer = await client.mobileMoney.createCustomer({
|
374
|
+
phone_number: '+254712345678',
|
375
|
+
country_code: 'KEN',
|
376
|
+
network: 'MPESA'
|
377
|
+
});
|
378
|
+
|
379
|
+
// 6. Create deposit
|
380
|
+
const deposit = await client.mobileMoneyDeposit.createDeposit({
|
381
|
+
amount: 100.00,
|
382
|
+
wallet_id: wallet.data.id,
|
383
|
+
customer_key: customer.id
|
384
|
+
});
|
385
|
+
|
386
|
+
console.log('Integration flow completed successfully');
|
387
|
+
} catch (error) {
|
388
|
+
console.error('Integration flow failed:', error);
|
389
|
+
}
|
390
|
+
}
|
391
|
+
```
|
392
|
+
|
208
393
|
### React Integration
|
209
394
|
|
210
395
|
```typescript
|
@@ -239,6 +424,25 @@ function PaymentComponent() {
|
|
239
424
|
}
|
240
425
|
};
|
241
426
|
|
427
|
+
const createWalletAndCustomer = async () => {
|
428
|
+
try {
|
429
|
+
const wallet = await client.wallet.create({
|
430
|
+
name: 'Payment Wallet',
|
431
|
+
currency: 'KES'
|
432
|
+
});
|
433
|
+
|
434
|
+
const customer = await client.mobileMoney.createCustomer({
|
435
|
+
phone_number: '+254700123456',
|
436
|
+
country_code: 'KEN',
|
437
|
+
network: 'MPESA'
|
438
|
+
});
|
439
|
+
|
440
|
+
console.log('Wallet and customer created successfully');
|
441
|
+
} catch (error) {
|
442
|
+
console.error('Creation failed:', error);
|
443
|
+
}
|
444
|
+
};
|
445
|
+
|
242
446
|
return (
|
243
447
|
<div>
|
244
448
|
{authStatus === 'idle' && (
|
@@ -261,7 +465,12 @@ function PaymentComponent() {
|
|
261
465
|
</div>
|
262
466
|
)}
|
263
467
|
{authStatus === 'authenticated' && (
|
264
|
-
<
|
468
|
+
<div>
|
469
|
+
<p>Ready to make payments!</p>
|
470
|
+
<button onClick={createWalletAndCustomer}>
|
471
|
+
Create Wallet & Customer
|
472
|
+
</button>
|
473
|
+
</div>
|
265
474
|
)}
|
266
475
|
</div>
|
267
476
|
);
|
@@ -280,6 +489,12 @@ const client = new KotaniPayClient({
|
|
280
489
|
|
281
490
|
async function processPayment() {
|
282
491
|
try {
|
492
|
+
// Create wallet
|
493
|
+
const wallet = await client.wallet.create({
|
494
|
+
name: 'Business Wallet',
|
495
|
+
currency: 'KES'
|
496
|
+
});
|
497
|
+
|
283
498
|
// Create customer
|
284
499
|
const customer = await client.mobileMoney.createCustomer({
|
285
500
|
phone_number: '+254700123456',
|
@@ -287,8 +502,16 @@ async function processPayment() {
|
|
287
502
|
network: 'MPESA'
|
288
503
|
});
|
289
504
|
|
290
|
-
|
291
|
-
|
505
|
+
// Create deposit
|
506
|
+
const deposit = await client.mobileMoneyDeposit.createDeposit({
|
507
|
+
amount: 1000,
|
508
|
+
wallet_id: wallet.data.id,
|
509
|
+
customer_key: customer.id,
|
510
|
+
callback_url: 'https://myapp.com/webhook'
|
511
|
+
});
|
512
|
+
|
513
|
+
console.log('Payment initiated:', deposit);
|
514
|
+
return deposit;
|
292
515
|
} catch (error) {
|
293
516
|
console.error('Payment failed:', error);
|
294
517
|
throw error;
|
@@ -296,6 +519,34 @@ async function processPayment() {
|
|
296
519
|
}
|
297
520
|
```
|
298
521
|
|
522
|
+
### Onramp Example
|
523
|
+
|
524
|
+
```typescript
|
525
|
+
async function initiateOnramp() {
|
526
|
+
try {
|
527
|
+
const onramp = await client.onramp.iniatiateOnramp({
|
528
|
+
mobileMoney: {
|
529
|
+
phoneNumber: '+254700123456',
|
530
|
+
accountName: 'John Doe',
|
531
|
+
providerNetwork: 'MPESA'
|
532
|
+
},
|
533
|
+
fiatAmount: 100,
|
534
|
+
currency: 'KES',
|
535
|
+
chain: 'ethereum',
|
536
|
+
token: 'USDC',
|
537
|
+
receiverAddress: '0x1234567890123456789012345678901234567890',
|
538
|
+
referenceId: 'my-ref-' + Date.now(),
|
539
|
+
callbackUrl: 'https://myapp.com/webhook',
|
540
|
+
rateId: 'rate-id-from-quote'
|
541
|
+
});
|
542
|
+
|
543
|
+
console.log('Onramp initiated:', onramp);
|
544
|
+
} catch (error) {
|
545
|
+
console.error('Onramp failed:', error);
|
546
|
+
}
|
547
|
+
}
|
548
|
+
```
|
549
|
+
|
299
550
|
## Contributing
|
300
551
|
|
301
552
|
1. Fork the repository
|
@@ -319,7 +570,11 @@ This project is licensed under the MIT License - see the LICENSE file for detail
|
|
319
570
|
### v1.0.0
|
320
571
|
|
321
572
|
- Initial release
|
322
|
-
- Magic link authentication
|
573
|
+
- Magic link authentication with JWT and API key support
|
323
574
|
- Integrator management
|
324
|
-
- Mobile money customer management
|
325
|
-
-
|
575
|
+
- Mobile money customer management across 13+ African countries
|
576
|
+
- Fiat wallet creation and management
|
577
|
+
- Mobile money deposit handling with status tracking
|
578
|
+
- Onramp functionality for fiat-to-crypto conversion
|
579
|
+
- Comprehensive error handling and validation
|
580
|
+
- TypeScript supportcd ..
|
@@ -2,11 +2,14 @@ import { IntegratorService } from '../modules/integrator';
|
|
2
2
|
import { AuthService } from '../modules/auth';
|
3
3
|
import { MobileMoneyService } from '../modules/mobile-money/mobile-money.service';
|
4
4
|
import { KotaniPayConfig, AuthenticatedSession } from '../types';
|
5
|
+
import { MobileMoneyDepositService, WalletService } from '@/modules';
|
5
6
|
export declare class KotaniPayClient {
|
6
7
|
private httpClient;
|
7
8
|
integrator: IntegratorService;
|
8
9
|
auth: AuthService;
|
9
10
|
mobileMoney: MobileMoneyService;
|
11
|
+
wallet: WalletService;
|
12
|
+
mobileMoneyDeposit: MobileMoneyDepositService;
|
10
13
|
constructor(config: KotaniPayConfig);
|
11
14
|
/**
|
12
15
|
* Initialize client with session data after user login
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"kotani-pay.client.d.ts","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"kotani-pay.client.d.ts","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAErE,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiB;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,kBAAkB,EAAE,yBAAyB,CAAC;gBAEzC,MAAM,EAAE,eAAe;IAYnC;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI;IAI9D;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAKnE,SAAS,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAIrD,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI;QACf,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB;CAYF"}
|
@@ -5,6 +5,7 @@ const http_client_util_1 = require("../utils/http-client.util");
|
|
5
5
|
const integrator_1 = require("../modules/integrator");
|
6
6
|
const auth_1 = require("../modules/auth");
|
7
7
|
const mobile_money_service_1 = require("../modules/mobile-money/mobile-money.service");
|
8
|
+
const modules_1 = require("@/modules");
|
8
9
|
class KotaniPayClient {
|
9
10
|
constructor(config) {
|
10
11
|
// Create HTTP client with config
|
@@ -13,6 +14,8 @@ class KotaniPayClient {
|
|
13
14
|
this.integrator = new integrator_1.IntegratorService(this.httpClient);
|
14
15
|
this.auth = new auth_1.AuthService(this.httpClient);
|
15
16
|
this.mobileMoney = new mobile_money_service_1.MobileMoneyService(this.httpClient);
|
17
|
+
this.wallet = new modules_1.WalletService(this.httpClient);
|
18
|
+
this.mobileMoneyDeposit = new modules_1.MobileMoneyDepositService(this.httpClient);
|
16
19
|
}
|
17
20
|
/**
|
18
21
|
* Initialize client with session data after user login
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"kotani-pay.client.js","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":";;;AACA,gEAA2D;AAC3D,sDAA0D;AAC1D,0CAA8C;AAC9C,uFAAkF;
|
1
|
+
{"version":3,"file":"kotani-pay.client.js","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":";;;AACA,gEAA2D;AAC3D,sDAA0D;AAC1D,0CAA8C;AAC9C,uFAAkF;AAElF,uCAAqE;AAErE,MAAa,eAAe;IAQ1B,YAAY,MAAuB;QACjC,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,iCAAc,CAAC,MAAM,CAAC,CAAC;QAE7C,sBAAsB;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,8BAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,yCAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,mCAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,WAAiC;QACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc;QACjC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAwC,SAAS,CAAC,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC;IAED,UAAU;QACR,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,aAAa;QAMX,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3E,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,UAAU;YACV,SAAS;YACT,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AA1ED,0CA0EC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC"}
|
@@ -16,4 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
__exportStar(require("./integrator"), exports);
|
18
18
|
__exportStar(require("./auth"), exports);
|
19
|
+
__exportStar(require("./mobile-money"), exports);
|
20
|
+
__exportStar(require("./wallet"), exports);
|
21
|
+
__exportStar(require("./mobile-money-deposit"), exports);
|
19
22
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,yCAAuB"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,yCAAuB;AACvB,iDAA+B;AAC/B,2CAAyB;AACzB,yDAAuC"}
|
@@ -5,6 +5,7 @@ export declare class IntegratorService {
|
|
5
5
|
constructor(httpClient: HttpClientUtil);
|
6
6
|
private validateCreateIntegratorRequest;
|
7
7
|
create(request: CreateIntegratorRequest): Promise<IntegratorResponse>;
|
8
|
+
getIntegratorInfo(): Promise<IntegratorResponse[]>;
|
8
9
|
getById(id: string): Promise<IntegratorResponse>;
|
9
10
|
}
|
10
11
|
//# sourceMappingURL=integrator.service.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"integrator.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAEvF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,+BAA+B;IAYjC,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAWrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAWvD"}
|
1
|
+
{"version":3,"file":"integrator.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAEvF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,+BAA+B;IAYjC,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAWrE,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQlD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAWvD"}
|
@@ -21,6 +21,10 @@ class IntegratorService {
|
|
21
21
|
const response = await this.httpClient.post('/api/v3/integrator', request);
|
22
22
|
return response.data;
|
23
23
|
}
|
24
|
+
async getIntegratorInfo() {
|
25
|
+
const response = await this.httpClient.get('/api/v3/integrator');
|
26
|
+
return response.data;
|
27
|
+
}
|
24
28
|
async getById(id) {
|
25
29
|
if (!id) {
|
26
30
|
throw new Error('Integrator ID is required');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"integrator.service.js","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":";;;AACA,iEAA6D;AAG7D,MAAa,iBAAiB;IAC5B,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE1C,+BAA+B,CAAC,OAAgC;QACtE,MAAM,cAAc,GAAsC;YACxD,cAAc,EAAE,cAAc,EAAE,YAAY;YAC5C,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc;SAC9C,CAAC;QAEF,gCAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/D,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgC;QAC3C,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,EACpB,OAAO,CACR,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,sBAAsB,EAAE,EAAE,CAC3B,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;
|
1
|
+
{"version":3,"file":"integrator.service.js","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":";;;AACA,iEAA6D;AAG7D,MAAa,iBAAiB;IAC5B,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE1C,+BAA+B,CAAC,OAAgC;QACtE,MAAM,cAAc,GAAsC;YACxD,cAAc,EAAE,cAAc,EAAE,YAAY;YAC5C,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc;SAC9C,CAAC;QAEF,gCAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/D,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgC;QAC3C,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,EACpB,OAAO,CACR,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,oBAAoB,CACrB,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,sBAAsB,EAAE,EAAE,CAC3B,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AA7CD,8CA6CC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./mobile-money.service"), exports);
|
18
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/mobile-money/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}
|
@@ -17,5 +17,15 @@ export declare class MobileMoneyService {
|
|
17
17
|
* Requires API key authentication
|
18
18
|
*/
|
19
19
|
getCustomerById(customerId: string): Promise<MobileMoneyCustomerResponse['data']>;
|
20
|
+
/**
|
21
|
+
* Get mobile money customers by customer key
|
22
|
+
* Requires API key authentication
|
23
|
+
*/
|
24
|
+
getCustomersByKey(customerKey: string): Promise<MobileMoneyCustomerResponse['data'][]>;
|
25
|
+
/**
|
26
|
+
* Get mobile money customers by phone number
|
27
|
+
* Requires API key authentication
|
28
|
+
*/
|
29
|
+
getCustomersByPhoneNumber(phoneNumber: string): Promise<MobileMoneyCustomerResponse['data'][]>;
|
20
30
|
}
|
21
31
|
//# sourceMappingURL=mobile-money.service.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mobile-money.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAG5B,MAAM,aAAa,CAAC;AAErB,qBAAa,kBAAkB;IACjB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,6BAA6B;IAcrC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,eAAe;IAajB,cAAc,CAAC,OAAO,EAAE,gCAAgC,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAW7G;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;IAQvE;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"mobile-money.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAG5B,MAAM,aAAa,CAAC;AAErB,qBAAa,kBAAkB;IACjB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,6BAA6B;IAcrC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,eAAe;IAajB,cAAc,CAAC,OAAO,EAAE,gCAAgC,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAW7G;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;IAQvE;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAavF;;;OAGG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;IAY1F;;;KAGC;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;CAWrG"}
|
@@ -60,6 +60,28 @@ class MobileMoneyService {
|
|
60
60
|
const response = await this.httpClient.get(`/api/v3/customer/mobile-money/${customerId}`);
|
61
61
|
return response.data;
|
62
62
|
}
|
63
|
+
/**
|
64
|
+
* Get mobile money customers by customer key
|
65
|
+
* Requires API key authentication
|
66
|
+
*/
|
67
|
+
async getCustomersByKey(customerKey) {
|
68
|
+
if (!customerKey) {
|
69
|
+
throw new Error('Customer key is required');
|
70
|
+
}
|
71
|
+
const response = await this.httpClient.get(`/api/v3/customer/mobile-money/${customerKey}`);
|
72
|
+
return response.data;
|
73
|
+
}
|
74
|
+
/**
|
75
|
+
* Get mobile money customers by phone number
|
76
|
+
* Requires API key authentication
|
77
|
+
*/
|
78
|
+
async getCustomersByPhoneNumber(phoneNumber) {
|
79
|
+
if (!phoneNumber) {
|
80
|
+
throw new Error('Phone number is required');
|
81
|
+
}
|
82
|
+
const response = await this.httpClient.get(`/api/v3/customer/mobile-money/phone/${phoneNumber}`);
|
83
|
+
return response.data;
|
84
|
+
}
|
63
85
|
}
|
64
86
|
exports.MobileMoneyService = MobileMoneyService;
|
65
87
|
//# sourceMappingURL=mobile-money.service.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mobile-money.service.js","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":";;;AAEA,iEAA6D;AAQ7D,MAAa,kBAAkB;IAC7B,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE1C,6BAA6B,CAAC,OAAyC;QAC7E,MAAM,cAAc,GAA+C;YACjE,cAAc,EAAE,cAAc;SAC/B,CAAC;QAEF,gCAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/D,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,WAAmB;QAC7C,MAAM,iBAAiB,GAAG;YACxB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;YAC/C,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;SACzC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,yCAAyC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,MAAM,aAAa,GAAG;YACpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;YACtD,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;YACxD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;SAC5D,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,oCAAoC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,OAAyC;QAC5D,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,+BAA+B,EAC/B,OAAO,CACR,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,+BAA+B,CAChC,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,UAAkB;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,iCAAiC,UAAU,EAAE,CAC9C,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;
|
1
|
+
{"version":3,"file":"mobile-money.service.js","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { HttpClientUtil } from '../../utils/http-client.util';
|
2
|
+
import { CreateMobileMoneyDepositRequest, MobileMoneyDepositResponse } from '../../types';
|
3
|
+
export declare class MobileMoneyDepositService {
|
4
|
+
private httpClient;
|
5
|
+
constructor(httpClient: HttpClientUtil);
|
6
|
+
private validateCreateCustomerRequest;
|
7
|
+
createDeposit(request: CreateMobileMoneyDepositRequest): Promise<MobileMoneyDepositResponse['data']>;
|
8
|
+
getDepositTransactionStatus(reference_id: string): Promise<MobileMoneyDepositResponse['data']>;
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=deposit.service.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"deposit.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money-deposit/deposit.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAE3B,MAAM,aAAa,CAAC;AAErB,qBAAa,yBAAyB;IACxB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,6BAA6B;IAQ7B,aAAa,CAAC,OAAO,EAAE,+BAA+B,GAAG,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAWpG,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;CAOvG"}
|