@p2pdotme/sdk 1.2.17 → 1.2.18
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 +116 -49
- package/dist/country.cjs.map +1 -1
- package/dist/country.d.cts +15 -1
- package/dist/country.d.ts +15 -1
- package/dist/country.mjs +114 -49
- package/dist/country.mjs.map +1 -1
- package/dist/fraud-engine.cjs +1 -0
- package/dist/fraud-engine.cjs.map +1 -1
- package/dist/fraud-engine.mjs +1 -0
- package/dist/fraud-engine.mjs.map +1 -1
- package/dist/index.cjs +2 -1
- 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 +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/orders.cjs +1 -0
- 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 +1 -0
- package/dist/orders.mjs.map +1 -1
- package/dist/prices.cjs +1 -0
- 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 +1 -0
- package/dist/prices.mjs.map +1 -1
- package/dist/profile.cjs +1 -0
- 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 +1 -0
- package/dist/profile.mjs.map +1 -1
- package/dist/qr-parsers.cjs +133 -52
- 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 +133 -52
- package/dist/qr-parsers.mjs.map +1 -1
- package/dist/react.cjs +1 -0
- 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 +1 -0
- package/dist/react.mjs.map +1 -1
- package/dist/stake.cjs +1 -0
- 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 +1 -0
- package/dist/stake.mjs.map +1 -1
- package/dist/zkkyc.cjs +1 -0
- package/dist/zkkyc.cjs.map +1 -1
- package/dist/zkkyc.mjs +1 -0
- package/dist/zkkyc.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -162,7 +162,7 @@ All hooks read from the nearest `<SdkProvider>`:
|
|
|
162
162
|
|
|
163
163
|
## Supported currencies
|
|
164
164
|
|
|
165
|
-
`INR` · `IDR` · `BRL` · `ARS` · `MEX` · `VEN` · `EUR` · `NGN` · `USD` · `COP` · `ECU`
|
|
165
|
+
`INR` · `IDR` · `BRL` · `ARS` · `MEX` · `VEN` · `BOB` · `EUR` · `NGN` · `USD` · `COP` · `ECU`
|
|
166
166
|
|
|
167
167
|
## Development
|
|
168
168
|
|
package/dist/country.cjs
CHANGED
|
@@ -39,6 +39,8 @@ __export(country_exports, {
|
|
|
39
39
|
usesCatalogPaymentForm: () => usesCatalogPaymentForm,
|
|
40
40
|
usesPackedPaymentId: () => usesPackedPaymentId,
|
|
41
41
|
validateArgentinePaymentId: () => validateArgentinePaymentId,
|
|
42
|
+
validateBolivianAccount: () => validateBolivianAccount,
|
|
43
|
+
validateBolivianQr: () => validateBolivianQr,
|
|
42
44
|
validateColombianPaymentId: () => validateColombianPaymentId,
|
|
43
45
|
validateCubanCardNumber: () => validateCubanCardNumber,
|
|
44
46
|
validateCubanPhoneNumber: () => validateCubanPhoneNumber,
|
|
@@ -75,6 +77,7 @@ var CURRENCY = {
|
|
|
75
77
|
ARS: "ARS",
|
|
76
78
|
MEX: "MEX",
|
|
77
79
|
VEN: "VEN",
|
|
80
|
+
BOB: "BOB",
|
|
78
81
|
EUR: "EUR",
|
|
79
82
|
NGN: "NGN",
|
|
80
83
|
USD: "USD",
|
|
@@ -150,6 +153,115 @@ var ARS_COUNTRY_OPTION = {
|
|
|
150
153
|
disabledPaymentTypes: []
|
|
151
154
|
};
|
|
152
155
|
|
|
156
|
+
// src/country/types.ts
|
|
157
|
+
var PACKED_PAYMENT_ID_SEP = "||";
|
|
158
|
+
|
|
159
|
+
// src/country/qr-validator.ts
|
|
160
|
+
function crc16ccitt(s) {
|
|
161
|
+
let crc = 65535;
|
|
162
|
+
for (let i = 0; i < s.length; i++) {
|
|
163
|
+
crc ^= s.charCodeAt(i) << 8;
|
|
164
|
+
for (let j = 0; j < 8; j++) {
|
|
165
|
+
crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
|
|
166
|
+
crc &= 65535;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return crc.toString(16).toUpperCase().padStart(4, "0");
|
|
170
|
+
}
|
|
171
|
+
function validateEmvcoQr(payload, country, currency) {
|
|
172
|
+
if (!payload || payload.trim().length === 0) return false;
|
|
173
|
+
const data = payload.trim();
|
|
174
|
+
const tags = {};
|
|
175
|
+
let pos = 0;
|
|
176
|
+
while (pos + 4 <= data.length) {
|
|
177
|
+
const tag = data.substring(pos, pos + 2);
|
|
178
|
+
const lengthStr = data.substring(pos + 2, pos + 4);
|
|
179
|
+
if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
|
|
180
|
+
const length = Number.parseInt(lengthStr, 10);
|
|
181
|
+
if (pos + 4 + length > data.length) break;
|
|
182
|
+
tags[tag] = data.substring(pos + 4, pos + 4 + length);
|
|
183
|
+
pos += 4 + length;
|
|
184
|
+
}
|
|
185
|
+
if (tags["58"] !== country) return false;
|
|
186
|
+
if (tags["53"] !== currency) return false;
|
|
187
|
+
const crcTag = tags["63"];
|
|
188
|
+
if (!crcTag) return false;
|
|
189
|
+
const marker = data.lastIndexOf("6304");
|
|
190
|
+
if (marker === -1) return false;
|
|
191
|
+
const expected = crc16ccitt(data.substring(0, marker + 4));
|
|
192
|
+
return expected.toUpperCase() === crcTag.toUpperCase();
|
|
193
|
+
}
|
|
194
|
+
function validatePeruvianQr(payload) {
|
|
195
|
+
return validateEmvcoQr(payload, "PE", "604");
|
|
196
|
+
}
|
|
197
|
+
function isBolivianEncryptedQr(payload) {
|
|
198
|
+
const trimmed = payload.trim();
|
|
199
|
+
if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
|
|
200
|
+
const sep = trimmed.lastIndexOf("|");
|
|
201
|
+
if (sep < 40) return false;
|
|
202
|
+
const blob = trimmed.slice(0, sep);
|
|
203
|
+
const tag = trimmed.slice(sep + 1);
|
|
204
|
+
if (blob.length % 4 !== 0) return false;
|
|
205
|
+
if (!/^[A-Za-z0-9+/]+={0,2}$/.test(blob)) return false;
|
|
206
|
+
return /^(?:[0-9A-Fa-f]{24}|[0-9A-Fa-f]{32})$/.test(tag);
|
|
207
|
+
}
|
|
208
|
+
function validateBolivianQr(payload) {
|
|
209
|
+
if (!payload || payload.trim().length === 0) return false;
|
|
210
|
+
return isBolivianEncryptedQr(payload) || validateEmvcoQr(payload, "BO", "068");
|
|
211
|
+
}
|
|
212
|
+
function validateVenezuelanQr(payload) {
|
|
213
|
+
if (!payload || typeof payload !== "string") return false;
|
|
214
|
+
const trimmed = payload.trim();
|
|
215
|
+
if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
|
|
216
|
+
const qIdx = trimmed.indexOf("?");
|
|
217
|
+
if (qIdx < 40) return false;
|
|
218
|
+
const blob = trimmed.substring(0, qIdx);
|
|
219
|
+
if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
|
|
220
|
+
return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// src/country/currencies/bob.ts
|
|
224
|
+
var BOB_PLACEHOLDER = "Bank account number (8\u201320 digits)";
|
|
225
|
+
var BOB_VALIDATION_ERROR = "Please enter a valid Bolivian bank account number";
|
|
226
|
+
function validateBolivianAccount(account) {
|
|
227
|
+
if (!account || account.trim().length === 0) return false;
|
|
228
|
+
const cleaned = account.trim().replace(/[\s-]/g, "");
|
|
229
|
+
return /^\d{8,20}$/.test(cleaned);
|
|
230
|
+
}
|
|
231
|
+
var BOB_PAYMENT_FIELDS = [
|
|
232
|
+
{
|
|
233
|
+
key: "account",
|
|
234
|
+
label: "ACCOUNT_NUMBER",
|
|
235
|
+
placeholder: BOB_PLACEHOLDER,
|
|
236
|
+
displayLabel: "Cuenta",
|
|
237
|
+
validate: validateBolivianAccount,
|
|
238
|
+
validationErrorMessage: BOB_VALIDATION_ERROR
|
|
239
|
+
}
|
|
240
|
+
];
|
|
241
|
+
var BOB_COUNTRY_OPTION = {
|
|
242
|
+
country: "Bolivia",
|
|
243
|
+
currency: CURRENCY.BOB,
|
|
244
|
+
internationalFormat: "BOB",
|
|
245
|
+
symbolNative: "Bs.",
|
|
246
|
+
locale: "es-BO",
|
|
247
|
+
paymentMethod: "QR_SIMPLE",
|
|
248
|
+
paymentAddressName: "QR_SIMPLE_DETAILS",
|
|
249
|
+
timezone: "America/La_Paz",
|
|
250
|
+
timezone_name: "BOT",
|
|
251
|
+
flag: "\u{1F1E7}\u{1F1F4}",
|
|
252
|
+
flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e7-1f1f4.png",
|
|
253
|
+
phoneCode: "+591",
|
|
254
|
+
telegramSupportChannel: "https://t.me/p2pmebolivia",
|
|
255
|
+
twitterUsername: "p2pmebolivia",
|
|
256
|
+
smsCountryCodes: ["BO"],
|
|
257
|
+
precision: 2,
|
|
258
|
+
isAlpha: true,
|
|
259
|
+
disabled: false,
|
|
260
|
+
disabledPaymentTypes: [],
|
|
261
|
+
uploadPaymentQR: true,
|
|
262
|
+
validateQr: validateBolivianQr
|
|
263
|
+
};
|
|
264
|
+
|
|
153
265
|
// src/country/currencies/brl.ts
|
|
154
266
|
var BRL_PLACEHOLDER = "Chave pix ou pix copia e cola";
|
|
155
267
|
var BRL_VALIDATION_ERROR = "Please enter a valid PIX ID";
|
|
@@ -666,55 +778,6 @@ var NGN_COUNTRY_OPTION = {
|
|
|
666
778
|
disabledPaymentTypes: []
|
|
667
779
|
};
|
|
668
780
|
|
|
669
|
-
// src/country/types.ts
|
|
670
|
-
var PACKED_PAYMENT_ID_SEP = "||";
|
|
671
|
-
|
|
672
|
-
// src/country/qr-validator.ts
|
|
673
|
-
function crc16ccitt(s) {
|
|
674
|
-
let crc = 65535;
|
|
675
|
-
for (let i = 0; i < s.length; i++) {
|
|
676
|
-
crc ^= s.charCodeAt(i) << 8;
|
|
677
|
-
for (let j = 0; j < 8; j++) {
|
|
678
|
-
crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
|
|
679
|
-
crc &= 65535;
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
return crc.toString(16).toUpperCase().padStart(4, "0");
|
|
683
|
-
}
|
|
684
|
-
function validatePeruvianQr(payload) {
|
|
685
|
-
if (!payload || payload.trim().length === 0) return false;
|
|
686
|
-
const data = payload.trim();
|
|
687
|
-
const tags = {};
|
|
688
|
-
let pos = 0;
|
|
689
|
-
while (pos + 4 <= data.length) {
|
|
690
|
-
const tag = data.substring(pos, pos + 2);
|
|
691
|
-
const lengthStr = data.substring(pos + 2, pos + 4);
|
|
692
|
-
if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
|
|
693
|
-
const length = Number.parseInt(lengthStr, 10);
|
|
694
|
-
if (pos + 4 + length > data.length) break;
|
|
695
|
-
tags[tag] = data.substring(pos + 4, pos + 4 + length);
|
|
696
|
-
pos += 4 + length;
|
|
697
|
-
}
|
|
698
|
-
if (tags["58"] !== "PE") return false;
|
|
699
|
-
if (tags["53"] !== "604") return false;
|
|
700
|
-
const crcTag = tags["63"];
|
|
701
|
-
if (!crcTag) return false;
|
|
702
|
-
const marker = data.lastIndexOf("6304");
|
|
703
|
-
if (marker === -1) return false;
|
|
704
|
-
const expected = crc16ccitt(data.substring(0, marker + 4));
|
|
705
|
-
return expected.toUpperCase() === crcTag.toUpperCase();
|
|
706
|
-
}
|
|
707
|
-
function validateVenezuelanQr(payload) {
|
|
708
|
-
if (!payload || typeof payload !== "string") return false;
|
|
709
|
-
const trimmed = payload.trim();
|
|
710
|
-
if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
|
|
711
|
-
const qIdx = trimmed.indexOf("?");
|
|
712
|
-
if (qIdx < 40) return false;
|
|
713
|
-
const blob = trimmed.substring(0, qIdx);
|
|
714
|
-
if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
|
|
715
|
-
return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
|
|
716
|
-
}
|
|
717
|
-
|
|
718
781
|
// src/country/currencies/pen.ts
|
|
719
782
|
var PEN_PHONE_PLACEHOLDER = "PERU_PHONE_PLACEHOLDER";
|
|
720
783
|
var PEN_CCI_PLACEHOLDER = "PERU_CCI_PLACEHOLDER";
|
|
@@ -1062,6 +1125,7 @@ var PAYMENT_ID_FIELDS = {
|
|
|
1062
1125
|
ARS: ARS_PAYMENT_FIELDS,
|
|
1063
1126
|
MEX: MEX_PAYMENT_FIELDS,
|
|
1064
1127
|
VEN: VEN_PAYMENT_FIELDS,
|
|
1128
|
+
BOB: BOB_PAYMENT_FIELDS,
|
|
1065
1129
|
NGN: NGN_PAYMENT_FIELDS,
|
|
1066
1130
|
EUR: EUR_PAYMENT_FIELDS,
|
|
1067
1131
|
USD: USD_PAYMENT_FIELDS,
|
|
@@ -1080,6 +1144,7 @@ var COUNTRY_OPTIONS = [
|
|
|
1080
1144
|
ARS_COUNTRY_OPTION,
|
|
1081
1145
|
MEX_COUNTRY_OPTION,
|
|
1082
1146
|
VEN_COUNTRY_OPTION,
|
|
1147
|
+
BOB_COUNTRY_OPTION,
|
|
1083
1148
|
NGN_COUNTRY_OPTION,
|
|
1084
1149
|
COP_COUNTRY_OPTION,
|
|
1085
1150
|
CUP_COUNTRY_OPTION,
|
|
@@ -1280,6 +1345,8 @@ function formatStoredPaymentIdForDisplay(currency, paymentId) {
|
|
|
1280
1345
|
usesCatalogPaymentForm,
|
|
1281
1346
|
usesPackedPaymentId,
|
|
1282
1347
|
validateArgentinePaymentId,
|
|
1348
|
+
validateBolivianAccount,
|
|
1349
|
+
validateBolivianQr,
|
|
1283
1350
|
validateColombianPaymentId,
|
|
1284
1351
|
validateCubanCardNumber,
|
|
1285
1352
|
validateCubanPhoneNumber,
|