@p2pdotme/sdk 1.2.23 → 1.2.25
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 +1 -1
- package/dist/country.cjs +164 -4
- package/dist/country.cjs.map +1 -1
- package/dist/country.d.cts +135 -7
- package/dist/country.d.ts +135 -7
- package/dist/country.mjs +152 -4
- package/dist/country.mjs.map +1 -1
- package/dist/fraud-engine.cjs +2 -1
- package/dist/fraud-engine.cjs.map +1 -1
- package/dist/fraud-engine.mjs +2 -1
- package/dist/fraud-engine.mjs.map +1 -1
- package/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +1 -1
- package/dist/orders.cjs +2 -1
- package/dist/orders.cjs.map +1 -1
- package/dist/orders.d.cts +2 -0
- package/dist/orders.d.ts +2 -0
- package/dist/orders.mjs +2 -1
- package/dist/orders.mjs.map +1 -1
- package/dist/prices.cjs +2 -1
- package/dist/prices.cjs.map +1 -1
- package/dist/prices.d.cts +1 -0
- package/dist/prices.d.ts +1 -0
- package/dist/prices.mjs +2 -1
- package/dist/prices.mjs.map +1 -1
- package/dist/profile.cjs +2 -1
- package/dist/profile.cjs.map +1 -1
- package/dist/profile.d.cts +2 -0
- package/dist/profile.d.ts +2 -0
- package/dist/profile.mjs +2 -1
- package/dist/profile.mjs.map +1 -1
- package/dist/qr-parsers.cjs +26 -2
- package/dist/qr-parsers.cjs.map +1 -1
- package/dist/qr-parsers.d.cts +1 -0
- package/dist/qr-parsers.d.ts +1 -0
- package/dist/qr-parsers.mjs +26 -2
- package/dist/qr-parsers.mjs.map +1 -1
- package/dist/react.cjs +2 -1
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +6 -0
- package/dist/react.d.ts +6 -0
- package/dist/react.mjs +2 -1
- package/dist/react.mjs.map +1 -1
- package/dist/stake.cjs +2 -1
- package/dist/stake.cjs.map +1 -1
- package/dist/stake.d.cts +1 -0
- package/dist/stake.d.ts +1 -0
- package/dist/stake.mjs +2 -1
- package/dist/stake.mjs.map +1 -1
- package/dist/zkkyc.cjs +2 -1
- package/dist/zkkyc.cjs.map +1 -1
- package/dist/zkkyc.mjs +2 -1
- package/dist/zkkyc.mjs.map +1 -1
- package/package.json +1 -1
package/dist/country.d.cts
CHANGED
|
@@ -21,6 +21,7 @@ declare const CURRENCY: {
|
|
|
21
21
|
readonly ECU: "ECU";
|
|
22
22
|
readonly PEN: "PEN";
|
|
23
23
|
readonly PHP: "PHP";
|
|
24
|
+
readonly KES: "KES";
|
|
24
25
|
};
|
|
25
26
|
/** Union of supported currency codes. */
|
|
26
27
|
type CurrencyCode = (typeof CURRENCY)[keyof typeof CURRENCY];
|
|
@@ -150,6 +151,128 @@ declare function validateVenezuelanQr(payload: string): boolean;
|
|
|
150
151
|
*/
|
|
151
152
|
declare function isNepalFonepayQr(payload: string): boolean;
|
|
152
153
|
|
|
154
|
+
declare const IDR_PLACEHOLDER = "8123456789";
|
|
155
|
+
declare const IDR_BANK_ACCOUNT_PLACEHOLDER = "1234567890";
|
|
156
|
+
declare const IDR_BANK_ACCOUNT_VALIDATION_ERROR = "Please enter a valid Indonesian bank account number (8-18 digits)";
|
|
157
|
+
/**
|
|
158
|
+
* Validates Indonesian phone number.
|
|
159
|
+
* Validates just the number part (9-12 digits).
|
|
160
|
+
*/
|
|
161
|
+
declare function validateIndonesianPhoneNumber(phoneNumber: string): boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Validates Indonesian bank account number.
|
|
164
|
+
* Digits only (spaces/dashes tolerated), 8-18 digits to cover BCA (10), Mandiri (13),
|
|
165
|
+
* BRI (15), BNI (10), CIMB Niaga (13-14), Permata (16), SeaBank (10-12), Bank Jago (10).
|
|
166
|
+
*/
|
|
167
|
+
declare function validateIndonesianBankAccount(accountNumber: string): boolean;
|
|
168
|
+
type IndonesianPaymentProviderType = "bank" | "e-wallet";
|
|
169
|
+
interface IndonesianPaymentProviderOption {
|
|
170
|
+
/** Display name for the consumer-rendered provider list. */
|
|
171
|
+
readonly name: string;
|
|
172
|
+
readonly type: IndonesianPaymentProviderType;
|
|
173
|
+
}
|
|
174
|
+
/** E-wallets and banks a seller can be paid through in Indonesia. */
|
|
175
|
+
declare const IDR_PAYMENT_PROVIDERS: readonly [{
|
|
176
|
+
readonly name: "GoPay";
|
|
177
|
+
readonly type: "e-wallet";
|
|
178
|
+
}, {
|
|
179
|
+
readonly name: "DANA";
|
|
180
|
+
readonly type: "e-wallet";
|
|
181
|
+
}, {
|
|
182
|
+
readonly name: "ShopeePay";
|
|
183
|
+
readonly type: "e-wallet";
|
|
184
|
+
}, {
|
|
185
|
+
readonly name: "OVO";
|
|
186
|
+
readonly type: "e-wallet";
|
|
187
|
+
}, {
|
|
188
|
+
readonly name: "LinkAja";
|
|
189
|
+
readonly type: "e-wallet";
|
|
190
|
+
}, {
|
|
191
|
+
readonly name: "iSaku";
|
|
192
|
+
readonly type: "e-wallet";
|
|
193
|
+
}, {
|
|
194
|
+
readonly name: "Sakuku";
|
|
195
|
+
readonly type: "e-wallet";
|
|
196
|
+
}, {
|
|
197
|
+
readonly name: "AstraPay";
|
|
198
|
+
readonly type: "e-wallet";
|
|
199
|
+
}, {
|
|
200
|
+
readonly name: "Bank Jago";
|
|
201
|
+
readonly type: "bank";
|
|
202
|
+
}, {
|
|
203
|
+
readonly name: "BCA";
|
|
204
|
+
readonly type: "bank";
|
|
205
|
+
}, {
|
|
206
|
+
readonly name: "Mandiri";
|
|
207
|
+
readonly type: "bank";
|
|
208
|
+
}, {
|
|
209
|
+
readonly name: "BRI";
|
|
210
|
+
readonly type: "bank";
|
|
211
|
+
}, {
|
|
212
|
+
readonly name: "BNI";
|
|
213
|
+
readonly type: "bank";
|
|
214
|
+
}, {
|
|
215
|
+
readonly name: "CIMB Niaga";
|
|
216
|
+
readonly type: "bank";
|
|
217
|
+
}, {
|
|
218
|
+
readonly name: "Permata Bank";
|
|
219
|
+
readonly type: "bank";
|
|
220
|
+
}, {
|
|
221
|
+
readonly name: "SeaBank";
|
|
222
|
+
readonly type: "bank";
|
|
223
|
+
}];
|
|
224
|
+
/**
|
|
225
|
+
* Resolves whether a provider name is a bank or an e-wallet (case-insensitive).
|
|
226
|
+
* Returns `null` when the name is not in `IDR_PAYMENT_PROVIDERS`.
|
|
227
|
+
*/
|
|
228
|
+
declare function getIndonesianPaymentProviderType(name: string): IndonesianPaymentProviderType | null;
|
|
229
|
+
interface IndonesianPaymentIdParts {
|
|
230
|
+
readonly provider: string;
|
|
231
|
+
readonly type: IndonesianPaymentProviderType;
|
|
232
|
+
/** Bank account number or e-wallet phone number. */
|
|
233
|
+
readonly value: string;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Parses a stored Indonesian payment ID packed as `Provider|number`.
|
|
237
|
+
* Returns `null` when the value is not packed or the provider is unknown.
|
|
238
|
+
*/
|
|
239
|
+
declare function parseIndonesianPaymentId(paymentId: string): IndonesianPaymentIdParts | null;
|
|
240
|
+
interface IndonesianPaymentIdDisplayPart {
|
|
241
|
+
readonly key: string;
|
|
242
|
+
/** Raw English label (mirrors `PaymentIdFieldConfig.displayLabel`). */
|
|
243
|
+
readonly label: string;
|
|
244
|
+
/** i18n key (mirrors `PaymentIdFieldConfig.label`). */
|
|
245
|
+
readonly labelKey: string;
|
|
246
|
+
readonly value: string;
|
|
247
|
+
}
|
|
248
|
+
interface IndonesianStoredPaymentIdDisplay {
|
|
249
|
+
/** i18n key for the number label (bank → ACCOUNT_NUMBER, e-wallet → PHONE_NUMBER). */
|
|
250
|
+
readonly paymentAddressName: string;
|
|
251
|
+
/** Row parts: payment method, then the number. */
|
|
252
|
+
readonly parts: readonly IndonesianPaymentIdDisplayPart[];
|
|
253
|
+
/** Single-line preview, e.g. `OVO · 8123456789`. */
|
|
254
|
+
readonly display: string;
|
|
255
|
+
/** Bare number for copy actions. */
|
|
256
|
+
readonly copyValue: string;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Display details for a stored IDR payment ID packed as `Provider|number`.
|
|
260
|
+
* Returns `null` for other currencies and unpacked values, so callers fall back
|
|
261
|
+
* to the generic catalog formatting.
|
|
262
|
+
*/
|
|
263
|
+
declare function resolveIndonesianStoredPaymentIdDisplay(currency: string, paymentId: string): IndonesianStoredPaymentIdDisplay | null;
|
|
264
|
+
/**
|
|
265
|
+
* Validates a payment ID for the given Indonesian provider:
|
|
266
|
+
* bank providers require a bank account number, e-wallets require a phone number.
|
|
267
|
+
* Unknown providers fall back to phone number validation.
|
|
268
|
+
*/
|
|
269
|
+
declare function validateIndonesianPaymentId(providerName: string, value: string): boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Validates a stored Indonesian payment ID packed as `Provider|number`
|
|
272
|
+
* against the provider type. Anything else is invalid.
|
|
273
|
+
*/
|
|
274
|
+
declare function validateIndonesianStoredPaymentId(paymentId: string): boolean;
|
|
275
|
+
|
|
153
276
|
/** Validates a 20-digit Peruvian CCI (spaces ignored). */
|
|
154
277
|
declare function validatePeruvianCci(value: string): boolean;
|
|
155
278
|
/**
|
|
@@ -245,18 +368,23 @@ declare function validateEcuadorianAccountName(value: string): boolean;
|
|
|
245
368
|
*/
|
|
246
369
|
declare function validateRevolutId(revolutId: string): boolean;
|
|
247
370
|
|
|
248
|
-
/**
|
|
249
|
-
* Validates Indonesian phone number.
|
|
250
|
-
* Validates just the number part (9-12 digits).
|
|
251
|
-
*/
|
|
252
|
-
declare function validateIndonesianPhoneNumber(phoneNumber: string): boolean;
|
|
253
|
-
|
|
254
371
|
/**
|
|
255
372
|
* Validates UPI ID format.
|
|
256
373
|
* UPI ID format: username@bankname (e.g., john@paytm, user@ybl, 8658404239@kotak811)
|
|
257
374
|
*/
|
|
258
375
|
declare function validateUPIId(upiId: string): boolean;
|
|
259
376
|
|
|
377
|
+
/**
|
|
378
|
+
* Validates a Kenyan M-Pesa phone number (Send Money). Accepts the
|
|
379
|
+
* `07XXXXXXXX`, `01XXXXXXXX`, `2547XXXXXXXX`, `2541XXXXXXXX`, or bare
|
|
380
|
+
* `7XXXXXXXX`/`1XXXXXXXX` forms.
|
|
381
|
+
*/
|
|
382
|
+
declare function validateKenyanPhone(phone: string): boolean;
|
|
383
|
+
/**
|
|
384
|
+
* Validates a Kenyan M-Pesa Buy Goods till number (5–7 digits).
|
|
385
|
+
*/
|
|
386
|
+
declare function validateKenyanTill(till: string): boolean;
|
|
387
|
+
|
|
260
388
|
/**
|
|
261
389
|
* Validates Mexican payment IDs (CLABE, card number, or phone number).
|
|
262
390
|
* CLABE: 18 digits. Card: 16 digits. Phone: 10 digits.
|
|
@@ -338,4 +466,4 @@ declare function assignStoredPaymentIdToFieldValues(currency: CurrencyCode, paym
|
|
|
338
466
|
*/
|
|
339
467
|
declare function formatStoredPaymentIdForDisplay(currency: CurrencyCode, paymentId: string): string;
|
|
340
468
|
|
|
341
|
-
export { COUNTRY_OPTIONS, CURRENCY, CURRENCY_CODES, type CountryOption, type CurrencyCode, PACKED_PAYMENT_ID_SEP, PAYMENT_ID_FIELDS, type PaymentIdFieldConfig, type PeruvianPaymentIdParts, type VenezuelanPaymentIdParts, assignPaymentIdToFieldValues, assignStoredPaymentIdToFieldValues, deserializeCompoundPaymentId, formatCompoundPaymentIdForDisplay, formatStoredPaymentIdForDisplay, getCountryOption, getPayQrPayload, getStoredQrPayload, getTransferWarning, isNepalFonepayQr, packStoredPaymentId, serializeCompoundPaymentId, unpackPackedPaymentId, uploadsPaymentQR, usesCatalogPaymentForm, usesPackedPaymentId, validateArgentinePaymentId, validateBolivianAccount, validateBolivianQr, validateCatalogPaymentDraft, validateColombianPaymentId, validateCubanCardNumber, validateCubanPhoneNumber, validateEcuadorianAccountName, validateEcuadorianAccountNumber, validateEcuadorianCedula, validateIndonesianPhoneNumber, validateMexicanPaymentId, validateNigerianAccountName, validateNigerianAccountNumber, validatePIXId, validatePaymentIdFields, validatePeruvianCci, validatePeruvianPaymentId, validatePeruvianPaymentKey, validatePeruvianPhone, validatePeruvianQr, validatePhilippinePhoneNumber, validateRevolutId, validateStoredPaymentId, validateUPIId, validateVenezuelanPaymentId, validateVenezuelanPhoneNumber, validateVenezuelanQr, validateVenezuelanRif };
|
|
469
|
+
export { COUNTRY_OPTIONS, CURRENCY, CURRENCY_CODES, type CountryOption, type CurrencyCode, IDR_BANK_ACCOUNT_PLACEHOLDER, IDR_BANK_ACCOUNT_VALIDATION_ERROR, IDR_PAYMENT_PROVIDERS, IDR_PLACEHOLDER, type IndonesianPaymentIdDisplayPart, type IndonesianPaymentIdParts, type IndonesianPaymentProviderOption, type IndonesianPaymentProviderType, type IndonesianStoredPaymentIdDisplay, PACKED_PAYMENT_ID_SEP, PAYMENT_ID_FIELDS, type PaymentIdFieldConfig, type PeruvianPaymentIdParts, type VenezuelanPaymentIdParts, assignPaymentIdToFieldValues, assignStoredPaymentIdToFieldValues, deserializeCompoundPaymentId, formatCompoundPaymentIdForDisplay, formatStoredPaymentIdForDisplay, getCountryOption, getIndonesianPaymentProviderType, getPayQrPayload, getStoredQrPayload, getTransferWarning, isNepalFonepayQr, packStoredPaymentId, parseIndonesianPaymentId, resolveIndonesianStoredPaymentIdDisplay, serializeCompoundPaymentId, unpackPackedPaymentId, uploadsPaymentQR, usesCatalogPaymentForm, usesPackedPaymentId, validateArgentinePaymentId, validateBolivianAccount, validateBolivianQr, validateCatalogPaymentDraft, validateColombianPaymentId, validateCubanCardNumber, validateCubanPhoneNumber, validateEcuadorianAccountName, validateEcuadorianAccountNumber, validateEcuadorianCedula, validateIndonesianBankAccount, validateIndonesianPaymentId, validateIndonesianPhoneNumber, validateIndonesianStoredPaymentId, validateKenyanPhone, validateKenyanTill, validateMexicanPaymentId, validateNigerianAccountName, validateNigerianAccountNumber, validatePIXId, validatePaymentIdFields, validatePeruvianCci, validatePeruvianPaymentId, validatePeruvianPaymentKey, validatePeruvianPhone, validatePeruvianQr, validatePhilippinePhoneNumber, validateRevolutId, validateStoredPaymentId, validateUPIId, validateVenezuelanPaymentId, validateVenezuelanPhoneNumber, validateVenezuelanQr, validateVenezuelanRif };
|
package/dist/country.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ declare const CURRENCY: {
|
|
|
21
21
|
readonly ECU: "ECU";
|
|
22
22
|
readonly PEN: "PEN";
|
|
23
23
|
readonly PHP: "PHP";
|
|
24
|
+
readonly KES: "KES";
|
|
24
25
|
};
|
|
25
26
|
/** Union of supported currency codes. */
|
|
26
27
|
type CurrencyCode = (typeof CURRENCY)[keyof typeof CURRENCY];
|
|
@@ -150,6 +151,128 @@ declare function validateVenezuelanQr(payload: string): boolean;
|
|
|
150
151
|
*/
|
|
151
152
|
declare function isNepalFonepayQr(payload: string): boolean;
|
|
152
153
|
|
|
154
|
+
declare const IDR_PLACEHOLDER = "8123456789";
|
|
155
|
+
declare const IDR_BANK_ACCOUNT_PLACEHOLDER = "1234567890";
|
|
156
|
+
declare const IDR_BANK_ACCOUNT_VALIDATION_ERROR = "Please enter a valid Indonesian bank account number (8-18 digits)";
|
|
157
|
+
/**
|
|
158
|
+
* Validates Indonesian phone number.
|
|
159
|
+
* Validates just the number part (9-12 digits).
|
|
160
|
+
*/
|
|
161
|
+
declare function validateIndonesianPhoneNumber(phoneNumber: string): boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Validates Indonesian bank account number.
|
|
164
|
+
* Digits only (spaces/dashes tolerated), 8-18 digits to cover BCA (10), Mandiri (13),
|
|
165
|
+
* BRI (15), BNI (10), CIMB Niaga (13-14), Permata (16), SeaBank (10-12), Bank Jago (10).
|
|
166
|
+
*/
|
|
167
|
+
declare function validateIndonesianBankAccount(accountNumber: string): boolean;
|
|
168
|
+
type IndonesianPaymentProviderType = "bank" | "e-wallet";
|
|
169
|
+
interface IndonesianPaymentProviderOption {
|
|
170
|
+
/** Display name for the consumer-rendered provider list. */
|
|
171
|
+
readonly name: string;
|
|
172
|
+
readonly type: IndonesianPaymentProviderType;
|
|
173
|
+
}
|
|
174
|
+
/** E-wallets and banks a seller can be paid through in Indonesia. */
|
|
175
|
+
declare const IDR_PAYMENT_PROVIDERS: readonly [{
|
|
176
|
+
readonly name: "GoPay";
|
|
177
|
+
readonly type: "e-wallet";
|
|
178
|
+
}, {
|
|
179
|
+
readonly name: "DANA";
|
|
180
|
+
readonly type: "e-wallet";
|
|
181
|
+
}, {
|
|
182
|
+
readonly name: "ShopeePay";
|
|
183
|
+
readonly type: "e-wallet";
|
|
184
|
+
}, {
|
|
185
|
+
readonly name: "OVO";
|
|
186
|
+
readonly type: "e-wallet";
|
|
187
|
+
}, {
|
|
188
|
+
readonly name: "LinkAja";
|
|
189
|
+
readonly type: "e-wallet";
|
|
190
|
+
}, {
|
|
191
|
+
readonly name: "iSaku";
|
|
192
|
+
readonly type: "e-wallet";
|
|
193
|
+
}, {
|
|
194
|
+
readonly name: "Sakuku";
|
|
195
|
+
readonly type: "e-wallet";
|
|
196
|
+
}, {
|
|
197
|
+
readonly name: "AstraPay";
|
|
198
|
+
readonly type: "e-wallet";
|
|
199
|
+
}, {
|
|
200
|
+
readonly name: "Bank Jago";
|
|
201
|
+
readonly type: "bank";
|
|
202
|
+
}, {
|
|
203
|
+
readonly name: "BCA";
|
|
204
|
+
readonly type: "bank";
|
|
205
|
+
}, {
|
|
206
|
+
readonly name: "Mandiri";
|
|
207
|
+
readonly type: "bank";
|
|
208
|
+
}, {
|
|
209
|
+
readonly name: "BRI";
|
|
210
|
+
readonly type: "bank";
|
|
211
|
+
}, {
|
|
212
|
+
readonly name: "BNI";
|
|
213
|
+
readonly type: "bank";
|
|
214
|
+
}, {
|
|
215
|
+
readonly name: "CIMB Niaga";
|
|
216
|
+
readonly type: "bank";
|
|
217
|
+
}, {
|
|
218
|
+
readonly name: "Permata Bank";
|
|
219
|
+
readonly type: "bank";
|
|
220
|
+
}, {
|
|
221
|
+
readonly name: "SeaBank";
|
|
222
|
+
readonly type: "bank";
|
|
223
|
+
}];
|
|
224
|
+
/**
|
|
225
|
+
* Resolves whether a provider name is a bank or an e-wallet (case-insensitive).
|
|
226
|
+
* Returns `null` when the name is not in `IDR_PAYMENT_PROVIDERS`.
|
|
227
|
+
*/
|
|
228
|
+
declare function getIndonesianPaymentProviderType(name: string): IndonesianPaymentProviderType | null;
|
|
229
|
+
interface IndonesianPaymentIdParts {
|
|
230
|
+
readonly provider: string;
|
|
231
|
+
readonly type: IndonesianPaymentProviderType;
|
|
232
|
+
/** Bank account number or e-wallet phone number. */
|
|
233
|
+
readonly value: string;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Parses a stored Indonesian payment ID packed as `Provider|number`.
|
|
237
|
+
* Returns `null` when the value is not packed or the provider is unknown.
|
|
238
|
+
*/
|
|
239
|
+
declare function parseIndonesianPaymentId(paymentId: string): IndonesianPaymentIdParts | null;
|
|
240
|
+
interface IndonesianPaymentIdDisplayPart {
|
|
241
|
+
readonly key: string;
|
|
242
|
+
/** Raw English label (mirrors `PaymentIdFieldConfig.displayLabel`). */
|
|
243
|
+
readonly label: string;
|
|
244
|
+
/** i18n key (mirrors `PaymentIdFieldConfig.label`). */
|
|
245
|
+
readonly labelKey: string;
|
|
246
|
+
readonly value: string;
|
|
247
|
+
}
|
|
248
|
+
interface IndonesianStoredPaymentIdDisplay {
|
|
249
|
+
/** i18n key for the number label (bank → ACCOUNT_NUMBER, e-wallet → PHONE_NUMBER). */
|
|
250
|
+
readonly paymentAddressName: string;
|
|
251
|
+
/** Row parts: payment method, then the number. */
|
|
252
|
+
readonly parts: readonly IndonesianPaymentIdDisplayPart[];
|
|
253
|
+
/** Single-line preview, e.g. `OVO · 8123456789`. */
|
|
254
|
+
readonly display: string;
|
|
255
|
+
/** Bare number for copy actions. */
|
|
256
|
+
readonly copyValue: string;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Display details for a stored IDR payment ID packed as `Provider|number`.
|
|
260
|
+
* Returns `null` for other currencies and unpacked values, so callers fall back
|
|
261
|
+
* to the generic catalog formatting.
|
|
262
|
+
*/
|
|
263
|
+
declare function resolveIndonesianStoredPaymentIdDisplay(currency: string, paymentId: string): IndonesianStoredPaymentIdDisplay | null;
|
|
264
|
+
/**
|
|
265
|
+
* Validates a payment ID for the given Indonesian provider:
|
|
266
|
+
* bank providers require a bank account number, e-wallets require a phone number.
|
|
267
|
+
* Unknown providers fall back to phone number validation.
|
|
268
|
+
*/
|
|
269
|
+
declare function validateIndonesianPaymentId(providerName: string, value: string): boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Validates a stored Indonesian payment ID packed as `Provider|number`
|
|
272
|
+
* against the provider type. Anything else is invalid.
|
|
273
|
+
*/
|
|
274
|
+
declare function validateIndonesianStoredPaymentId(paymentId: string): boolean;
|
|
275
|
+
|
|
153
276
|
/** Validates a 20-digit Peruvian CCI (spaces ignored). */
|
|
154
277
|
declare function validatePeruvianCci(value: string): boolean;
|
|
155
278
|
/**
|
|
@@ -245,18 +368,23 @@ declare function validateEcuadorianAccountName(value: string): boolean;
|
|
|
245
368
|
*/
|
|
246
369
|
declare function validateRevolutId(revolutId: string): boolean;
|
|
247
370
|
|
|
248
|
-
/**
|
|
249
|
-
* Validates Indonesian phone number.
|
|
250
|
-
* Validates just the number part (9-12 digits).
|
|
251
|
-
*/
|
|
252
|
-
declare function validateIndonesianPhoneNumber(phoneNumber: string): boolean;
|
|
253
|
-
|
|
254
371
|
/**
|
|
255
372
|
* Validates UPI ID format.
|
|
256
373
|
* UPI ID format: username@bankname (e.g., john@paytm, user@ybl, 8658404239@kotak811)
|
|
257
374
|
*/
|
|
258
375
|
declare function validateUPIId(upiId: string): boolean;
|
|
259
376
|
|
|
377
|
+
/**
|
|
378
|
+
* Validates a Kenyan M-Pesa phone number (Send Money). Accepts the
|
|
379
|
+
* `07XXXXXXXX`, `01XXXXXXXX`, `2547XXXXXXXX`, `2541XXXXXXXX`, or bare
|
|
380
|
+
* `7XXXXXXXX`/`1XXXXXXXX` forms.
|
|
381
|
+
*/
|
|
382
|
+
declare function validateKenyanPhone(phone: string): boolean;
|
|
383
|
+
/**
|
|
384
|
+
* Validates a Kenyan M-Pesa Buy Goods till number (5–7 digits).
|
|
385
|
+
*/
|
|
386
|
+
declare function validateKenyanTill(till: string): boolean;
|
|
387
|
+
|
|
260
388
|
/**
|
|
261
389
|
* Validates Mexican payment IDs (CLABE, card number, or phone number).
|
|
262
390
|
* CLABE: 18 digits. Card: 16 digits. Phone: 10 digits.
|
|
@@ -338,4 +466,4 @@ declare function assignStoredPaymentIdToFieldValues(currency: CurrencyCode, paym
|
|
|
338
466
|
*/
|
|
339
467
|
declare function formatStoredPaymentIdForDisplay(currency: CurrencyCode, paymentId: string): string;
|
|
340
468
|
|
|
341
|
-
export { COUNTRY_OPTIONS, CURRENCY, CURRENCY_CODES, type CountryOption, type CurrencyCode, PACKED_PAYMENT_ID_SEP, PAYMENT_ID_FIELDS, type PaymentIdFieldConfig, type PeruvianPaymentIdParts, type VenezuelanPaymentIdParts, assignPaymentIdToFieldValues, assignStoredPaymentIdToFieldValues, deserializeCompoundPaymentId, formatCompoundPaymentIdForDisplay, formatStoredPaymentIdForDisplay, getCountryOption, getPayQrPayload, getStoredQrPayload, getTransferWarning, isNepalFonepayQr, packStoredPaymentId, serializeCompoundPaymentId, unpackPackedPaymentId, uploadsPaymentQR, usesCatalogPaymentForm, usesPackedPaymentId, validateArgentinePaymentId, validateBolivianAccount, validateBolivianQr, validateCatalogPaymentDraft, validateColombianPaymentId, validateCubanCardNumber, validateCubanPhoneNumber, validateEcuadorianAccountName, validateEcuadorianAccountNumber, validateEcuadorianCedula, validateIndonesianPhoneNumber, validateMexicanPaymentId, validateNigerianAccountName, validateNigerianAccountNumber, validatePIXId, validatePaymentIdFields, validatePeruvianCci, validatePeruvianPaymentId, validatePeruvianPaymentKey, validatePeruvianPhone, validatePeruvianQr, validatePhilippinePhoneNumber, validateRevolutId, validateStoredPaymentId, validateUPIId, validateVenezuelanPaymentId, validateVenezuelanPhoneNumber, validateVenezuelanQr, validateVenezuelanRif };
|
|
469
|
+
export { COUNTRY_OPTIONS, CURRENCY, CURRENCY_CODES, type CountryOption, type CurrencyCode, IDR_BANK_ACCOUNT_PLACEHOLDER, IDR_BANK_ACCOUNT_VALIDATION_ERROR, IDR_PAYMENT_PROVIDERS, IDR_PLACEHOLDER, type IndonesianPaymentIdDisplayPart, type IndonesianPaymentIdParts, type IndonesianPaymentProviderOption, type IndonesianPaymentProviderType, type IndonesianStoredPaymentIdDisplay, PACKED_PAYMENT_ID_SEP, PAYMENT_ID_FIELDS, type PaymentIdFieldConfig, type PeruvianPaymentIdParts, type VenezuelanPaymentIdParts, assignPaymentIdToFieldValues, assignStoredPaymentIdToFieldValues, deserializeCompoundPaymentId, formatCompoundPaymentIdForDisplay, formatStoredPaymentIdForDisplay, getCountryOption, getIndonesianPaymentProviderType, getPayQrPayload, getStoredQrPayload, getTransferWarning, isNepalFonepayQr, packStoredPaymentId, parseIndonesianPaymentId, resolveIndonesianStoredPaymentIdDisplay, serializeCompoundPaymentId, unpackPackedPaymentId, uploadsPaymentQR, usesCatalogPaymentForm, usesPackedPaymentId, validateArgentinePaymentId, validateBolivianAccount, validateBolivianQr, validateCatalogPaymentDraft, validateColombianPaymentId, validateCubanCardNumber, validateCubanPhoneNumber, validateEcuadorianAccountName, validateEcuadorianAccountNumber, validateEcuadorianCedula, validateIndonesianBankAccount, validateIndonesianPaymentId, validateIndonesianPhoneNumber, validateIndonesianStoredPaymentId, validateKenyanPhone, validateKenyanTill, validateMexicanPaymentId, validateNigerianAccountName, validateNigerianAccountNumber, validatePIXId, validatePaymentIdFields, validatePeruvianCci, validatePeruvianPaymentId, validatePeruvianPaymentKey, validatePeruvianPhone, validatePeruvianQr, validatePhilippinePhoneNumber, validateRevolutId, validateStoredPaymentId, validateUPIId, validateVenezuelanPaymentId, validateVenezuelanPhoneNumber, validateVenezuelanQr, validateVenezuelanRif };
|
package/dist/country.mjs
CHANGED
|
@@ -14,7 +14,8 @@ var CURRENCY = {
|
|
|
14
14
|
CUP: "CUP",
|
|
15
15
|
ECU: "ECU",
|
|
16
16
|
PEN: "PEN",
|
|
17
|
-
PHP: "PHP"
|
|
17
|
+
PHP: "PHP",
|
|
18
|
+
KES: "KES"
|
|
18
19
|
};
|
|
19
20
|
var CURRENCY_CODES = Object.values(CURRENCY);
|
|
20
21
|
|
|
@@ -567,12 +568,82 @@ var EUR_COUNTRY_OPTION = {
|
|
|
567
568
|
// src/country/currencies/idr.ts
|
|
568
569
|
var IDR_PLACEHOLDER = "8123456789";
|
|
569
570
|
var IDR_VALIDATION_ERROR = "Please enter a valid Indonesian phone number (e.g., 8123456789)";
|
|
571
|
+
var IDR_BANK_ACCOUNT_PLACEHOLDER = "1234567890";
|
|
572
|
+
var IDR_BANK_ACCOUNT_VALIDATION_ERROR = "Please enter a valid Indonesian bank account number (8-18 digits)";
|
|
570
573
|
function validateIndonesianPhoneNumber(phoneNumber) {
|
|
571
574
|
if (!phoneNumber || phoneNumber.trim().length === 0) return false;
|
|
572
575
|
if (/[a-zA-Z]/.test(phoneNumber)) return false;
|
|
573
576
|
const cleaned = phoneNumber.replace(/\D/g, "");
|
|
574
577
|
return /^\d{9,12}$/.test(cleaned);
|
|
575
578
|
}
|
|
579
|
+
function validateIndonesianBankAccount(accountNumber) {
|
|
580
|
+
if (!accountNumber || accountNumber.trim().length === 0) return false;
|
|
581
|
+
if (/[a-zA-Z]/.test(accountNumber)) return false;
|
|
582
|
+
const cleaned = accountNumber.replace(/[\s-]/g, "");
|
|
583
|
+
return /^\d{8,18}$/.test(cleaned);
|
|
584
|
+
}
|
|
585
|
+
var IDR_PAYMENT_PROVIDERS = [
|
|
586
|
+
{ name: "GoPay", type: "e-wallet" },
|
|
587
|
+
{ name: "DANA", type: "e-wallet" },
|
|
588
|
+
{ name: "ShopeePay", type: "e-wallet" },
|
|
589
|
+
{ name: "OVO", type: "e-wallet" },
|
|
590
|
+
{ name: "LinkAja", type: "e-wallet" },
|
|
591
|
+
{ name: "iSaku", type: "e-wallet" },
|
|
592
|
+
{ name: "Sakuku", type: "e-wallet" },
|
|
593
|
+
{ name: "AstraPay", type: "e-wallet" },
|
|
594
|
+
{ name: "Bank Jago", type: "bank" },
|
|
595
|
+
{ name: "BCA", type: "bank" },
|
|
596
|
+
{ name: "Mandiri", type: "bank" },
|
|
597
|
+
{ name: "BRI", type: "bank" },
|
|
598
|
+
{ name: "BNI", type: "bank" },
|
|
599
|
+
{ name: "CIMB Niaga", type: "bank" },
|
|
600
|
+
{ name: "Permata Bank", type: "bank" },
|
|
601
|
+
{ name: "SeaBank", type: "bank" }
|
|
602
|
+
];
|
|
603
|
+
function getIndonesianPaymentProviderType(name) {
|
|
604
|
+
const normalized = name.trim().toLowerCase();
|
|
605
|
+
if (!normalized) return null;
|
|
606
|
+
const match = IDR_PAYMENT_PROVIDERS.find((option) => option.name.toLowerCase() === normalized);
|
|
607
|
+
return match?.type ?? null;
|
|
608
|
+
}
|
|
609
|
+
function parseIndonesianPaymentId(paymentId) {
|
|
610
|
+
const sepIndex = paymentId.indexOf("|");
|
|
611
|
+
if (sepIndex < 0) return null;
|
|
612
|
+
const provider = paymentId.slice(0, sepIndex).trim();
|
|
613
|
+
const value = paymentId.slice(sepIndex + 1).trim();
|
|
614
|
+
const type = getIndonesianPaymentProviderType(provider);
|
|
615
|
+
if (!type || !value) return null;
|
|
616
|
+
return { provider, type, value };
|
|
617
|
+
}
|
|
618
|
+
function resolveIndonesianStoredPaymentIdDisplay(currency, paymentId) {
|
|
619
|
+
if (currency !== CURRENCY.IDR) return null;
|
|
620
|
+
const parsed = parseIndonesianPaymentId(paymentId);
|
|
621
|
+
if (!parsed) return null;
|
|
622
|
+
const isBank = parsed.type === "bank";
|
|
623
|
+
const paymentAddressName = isBank ? "ACCOUNT_NUMBER" : "PHONE_NUMBER";
|
|
624
|
+
return {
|
|
625
|
+
paymentAddressName,
|
|
626
|
+
parts: [
|
|
627
|
+
{ key: "provider", label: "Payment Method", labelKey: "PAYMENT_METHOD", value: parsed.provider },
|
|
628
|
+
{
|
|
629
|
+
key: "account",
|
|
630
|
+
label: isBank ? "Account Number" : "Phone Number",
|
|
631
|
+
labelKey: paymentAddressName,
|
|
632
|
+
value: parsed.value
|
|
633
|
+
}
|
|
634
|
+
],
|
|
635
|
+
display: `${parsed.provider} \xB7 ${parsed.value}`,
|
|
636
|
+
copyValue: parsed.value
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
function validateIndonesianPaymentId(providerName, value) {
|
|
640
|
+
return getIndonesianPaymentProviderType(providerName) === "bank" ? validateIndonesianBankAccount(value) : validateIndonesianPhoneNumber(value);
|
|
641
|
+
}
|
|
642
|
+
function validateIndonesianStoredPaymentId(paymentId) {
|
|
643
|
+
const parsed = parseIndonesianPaymentId(paymentId);
|
|
644
|
+
if (!parsed) return false;
|
|
645
|
+
return validateIndonesianPaymentId(parsed.provider, parsed.value);
|
|
646
|
+
}
|
|
576
647
|
var IDR_PAYMENT_FIELDS = [
|
|
577
648
|
{
|
|
578
649
|
key: "phone",
|
|
@@ -647,6 +718,62 @@ var INR_COUNTRY_OPTION = {
|
|
|
647
718
|
}
|
|
648
719
|
};
|
|
649
720
|
|
|
721
|
+
// src/country/currencies/kes.ts
|
|
722
|
+
var KES_PHONE_PLACEHOLDER = "0712345678";
|
|
723
|
+
var KES_TILL_PLACEHOLDER = "123456";
|
|
724
|
+
var KES_PHONE_VALIDATION_ERROR = "Please enter a valid M-Pesa phone number";
|
|
725
|
+
var KES_TILL_VALIDATION_ERROR = "Please enter a valid M-Pesa till number";
|
|
726
|
+
function validateKenyanPhone(phone) {
|
|
727
|
+
if (!phone || phone.trim().length === 0) return false;
|
|
728
|
+
const cleaned = phone.trim().replace(/\D/g, "");
|
|
729
|
+
return /^254[17]\d{8}$/.test(cleaned) || /^0[17]\d{8}$/.test(cleaned) || /^[17]\d{8}$/.test(cleaned);
|
|
730
|
+
}
|
|
731
|
+
function validateKenyanTill(till) {
|
|
732
|
+
if (!till || till.trim().length === 0) return false;
|
|
733
|
+
const cleaned = till.trim().replace(/\D/g, "");
|
|
734
|
+
return /^\d{5,7}$/.test(cleaned);
|
|
735
|
+
}
|
|
736
|
+
var KES_PAYMENT_FIELDS = [
|
|
737
|
+
{
|
|
738
|
+
key: "phone",
|
|
739
|
+
label: "PHONE_NUMBER",
|
|
740
|
+
placeholder: KES_PHONE_PLACEHOLDER,
|
|
741
|
+
displayLabel: "Phone Number",
|
|
742
|
+
validate: validateKenyanPhone,
|
|
743
|
+
validationErrorMessage: KES_PHONE_VALIDATION_ERROR,
|
|
744
|
+
optional: true
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
key: "till",
|
|
748
|
+
label: "TILL_NUMBER",
|
|
749
|
+
placeholder: KES_TILL_PLACEHOLDER,
|
|
750
|
+
displayLabel: "Till Number",
|
|
751
|
+
validate: validateKenyanTill,
|
|
752
|
+
validationErrorMessage: KES_TILL_VALIDATION_ERROR,
|
|
753
|
+
optional: true
|
|
754
|
+
}
|
|
755
|
+
];
|
|
756
|
+
var KES_COUNTRY_OPTION = {
|
|
757
|
+
country: "Kenya",
|
|
758
|
+
currency: CURRENCY.KES,
|
|
759
|
+
symbolNative: "KSh",
|
|
760
|
+
locale: "en-KE",
|
|
761
|
+
paymentMethod: "MPESA",
|
|
762
|
+
paymentAddressName: "MPESA_DETAILS",
|
|
763
|
+
timezone: "Africa/Nairobi",
|
|
764
|
+
timezone_name: "EAT",
|
|
765
|
+
flag: "\u{1F1F0}\u{1F1EA}",
|
|
766
|
+
flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1f0-1f1ea.png",
|
|
767
|
+
phoneCode: "+254",
|
|
768
|
+
telegramSupportChannel: "https://t.me/p2pmekenya",
|
|
769
|
+
twitterUsername: "p2pmekenya",
|
|
770
|
+
smsCountryCodes: ["KE"],
|
|
771
|
+
precision: 2,
|
|
772
|
+
isAlpha: true,
|
|
773
|
+
disabled: false,
|
|
774
|
+
disabledPaymentTypes: ["PAY"]
|
|
775
|
+
};
|
|
776
|
+
|
|
650
777
|
// src/country/currencies/mex.ts
|
|
651
778
|
var MEX_PLACEHOLDER = "012345678901234567";
|
|
652
779
|
var MEX_VALIDATION_ERROR = "Please enter a valid CLABE (18 digits), card number, or phone number";
|
|
@@ -1099,7 +1226,8 @@ var PAYMENT_ID_FIELDS = {
|
|
|
1099
1226
|
CUP: CUP_PAYMENT_FIELDS,
|
|
1100
1227
|
ECU: ECU_PAYMENT_FIELDS,
|
|
1101
1228
|
PEN: PEN_PAYMENT_FIELDS,
|
|
1102
|
-
PHP: PHP_PAYMENT_FIELDS
|
|
1229
|
+
PHP: PHP_PAYMENT_FIELDS,
|
|
1230
|
+
KES: KES_PAYMENT_FIELDS
|
|
1103
1231
|
};
|
|
1104
1232
|
|
|
1105
1233
|
// src/country/countries.ts
|
|
@@ -1118,7 +1246,8 @@ var COUNTRY_OPTIONS = [
|
|
|
1118
1246
|
PEN_COUNTRY_OPTION,
|
|
1119
1247
|
PHP_COUNTRY_OPTION,
|
|
1120
1248
|
EUR_COUNTRY_OPTION,
|
|
1121
|
-
USD_COUNTRY_OPTION
|
|
1249
|
+
USD_COUNTRY_OPTION,
|
|
1250
|
+
KES_COUNTRY_OPTION
|
|
1122
1251
|
];
|
|
1123
1252
|
function getCountryOption(currency) {
|
|
1124
1253
|
if (!currency) return void 0;
|
|
@@ -1178,7 +1307,14 @@ function assignPaymentIdToFieldValues(fields, paymentId) {
|
|
|
1178
1307
|
if (!paymentId) return result;
|
|
1179
1308
|
const { rest } = unpackPackedPaymentId(paymentId);
|
|
1180
1309
|
if (!rest) return result;
|
|
1181
|
-
const
|
|
1310
|
+
const rawParts = deserializeCompoundPaymentId(rest).map((part) => part.trim());
|
|
1311
|
+
if (rawParts.length === fields.length) {
|
|
1312
|
+
fields.forEach((field, i) => {
|
|
1313
|
+
result[field.key] = rawParts[i] ?? "";
|
|
1314
|
+
});
|
|
1315
|
+
return result;
|
|
1316
|
+
}
|
|
1317
|
+
const tokens = rawParts.filter((part) => part.length > 0);
|
|
1182
1318
|
const claimed = /* @__PURE__ */ new Set();
|
|
1183
1319
|
for (const token of tokens) {
|
|
1184
1320
|
const field = fields.find((item) => !claimed.has(item.key) && item.validate(token));
|
|
@@ -1310,6 +1446,10 @@ export {
|
|
|
1310
1446
|
COUNTRY_OPTIONS,
|
|
1311
1447
|
CURRENCY,
|
|
1312
1448
|
CURRENCY_CODES,
|
|
1449
|
+
IDR_BANK_ACCOUNT_PLACEHOLDER,
|
|
1450
|
+
IDR_BANK_ACCOUNT_VALIDATION_ERROR,
|
|
1451
|
+
IDR_PAYMENT_PROVIDERS,
|
|
1452
|
+
IDR_PLACEHOLDER,
|
|
1313
1453
|
PACKED_PAYMENT_ID_SEP,
|
|
1314
1454
|
PAYMENT_ID_FIELDS,
|
|
1315
1455
|
assignPaymentIdToFieldValues,
|
|
@@ -1318,11 +1458,14 @@ export {
|
|
|
1318
1458
|
formatCompoundPaymentIdForDisplay,
|
|
1319
1459
|
formatStoredPaymentIdForDisplay,
|
|
1320
1460
|
getCountryOption,
|
|
1461
|
+
getIndonesianPaymentProviderType,
|
|
1321
1462
|
getPayQrPayload,
|
|
1322
1463
|
getStoredQrPayload,
|
|
1323
1464
|
getTransferWarning,
|
|
1324
1465
|
isNepalFonepayQr,
|
|
1325
1466
|
packStoredPaymentId,
|
|
1467
|
+
parseIndonesianPaymentId,
|
|
1468
|
+
resolveIndonesianStoredPaymentIdDisplay,
|
|
1326
1469
|
serializeCompoundPaymentId,
|
|
1327
1470
|
unpackPackedPaymentId,
|
|
1328
1471
|
uploadsPaymentQR,
|
|
@@ -1338,7 +1481,12 @@ export {
|
|
|
1338
1481
|
validateEcuadorianAccountName,
|
|
1339
1482
|
validateEcuadorianAccountNumber,
|
|
1340
1483
|
validateEcuadorianCedula,
|
|
1484
|
+
validateIndonesianBankAccount,
|
|
1485
|
+
validateIndonesianPaymentId,
|
|
1341
1486
|
validateIndonesianPhoneNumber,
|
|
1487
|
+
validateIndonesianStoredPaymentId,
|
|
1488
|
+
validateKenyanPhone,
|
|
1489
|
+
validateKenyanTill,
|
|
1342
1490
|
validateMexicanPaymentId,
|
|
1343
1491
|
validateNigerianAccountName,
|
|
1344
1492
|
validateNigerianAccountNumber,
|