@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/dist/country.mjs
CHANGED
|
@@ -6,6 +6,7 @@ var CURRENCY = {
|
|
|
6
6
|
ARS: "ARS",
|
|
7
7
|
MEX: "MEX",
|
|
8
8
|
VEN: "VEN",
|
|
9
|
+
BOB: "BOB",
|
|
9
10
|
EUR: "EUR",
|
|
10
11
|
NGN: "NGN",
|
|
11
12
|
USD: "USD",
|
|
@@ -81,6 +82,115 @@ var ARS_COUNTRY_OPTION = {
|
|
|
81
82
|
disabledPaymentTypes: []
|
|
82
83
|
};
|
|
83
84
|
|
|
85
|
+
// src/country/types.ts
|
|
86
|
+
var PACKED_PAYMENT_ID_SEP = "||";
|
|
87
|
+
|
|
88
|
+
// src/country/qr-validator.ts
|
|
89
|
+
function crc16ccitt(s) {
|
|
90
|
+
let crc = 65535;
|
|
91
|
+
for (let i = 0; i < s.length; i++) {
|
|
92
|
+
crc ^= s.charCodeAt(i) << 8;
|
|
93
|
+
for (let j = 0; j < 8; j++) {
|
|
94
|
+
crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
|
|
95
|
+
crc &= 65535;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return crc.toString(16).toUpperCase().padStart(4, "0");
|
|
99
|
+
}
|
|
100
|
+
function validateEmvcoQr(payload, country, currency) {
|
|
101
|
+
if (!payload || payload.trim().length === 0) return false;
|
|
102
|
+
const data = payload.trim();
|
|
103
|
+
const tags = {};
|
|
104
|
+
let pos = 0;
|
|
105
|
+
while (pos + 4 <= data.length) {
|
|
106
|
+
const tag = data.substring(pos, pos + 2);
|
|
107
|
+
const lengthStr = data.substring(pos + 2, pos + 4);
|
|
108
|
+
if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
|
|
109
|
+
const length = Number.parseInt(lengthStr, 10);
|
|
110
|
+
if (pos + 4 + length > data.length) break;
|
|
111
|
+
tags[tag] = data.substring(pos + 4, pos + 4 + length);
|
|
112
|
+
pos += 4 + length;
|
|
113
|
+
}
|
|
114
|
+
if (tags["58"] !== country) return false;
|
|
115
|
+
if (tags["53"] !== currency) return false;
|
|
116
|
+
const crcTag = tags["63"];
|
|
117
|
+
if (!crcTag) return false;
|
|
118
|
+
const marker = data.lastIndexOf("6304");
|
|
119
|
+
if (marker === -1) return false;
|
|
120
|
+
const expected = crc16ccitt(data.substring(0, marker + 4));
|
|
121
|
+
return expected.toUpperCase() === crcTag.toUpperCase();
|
|
122
|
+
}
|
|
123
|
+
function validatePeruvianQr(payload) {
|
|
124
|
+
return validateEmvcoQr(payload, "PE", "604");
|
|
125
|
+
}
|
|
126
|
+
function isBolivianEncryptedQr(payload) {
|
|
127
|
+
const trimmed = payload.trim();
|
|
128
|
+
if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
|
|
129
|
+
const sep = trimmed.lastIndexOf("|");
|
|
130
|
+
if (sep < 40) return false;
|
|
131
|
+
const blob = trimmed.slice(0, sep);
|
|
132
|
+
const tag = trimmed.slice(sep + 1);
|
|
133
|
+
if (blob.length % 4 !== 0) return false;
|
|
134
|
+
if (!/^[A-Za-z0-9+/]+={0,2}$/.test(blob)) return false;
|
|
135
|
+
return /^(?:[0-9A-Fa-f]{24}|[0-9A-Fa-f]{32})$/.test(tag);
|
|
136
|
+
}
|
|
137
|
+
function validateBolivianQr(payload) {
|
|
138
|
+
if (!payload || payload.trim().length === 0) return false;
|
|
139
|
+
return isBolivianEncryptedQr(payload) || validateEmvcoQr(payload, "BO", "068");
|
|
140
|
+
}
|
|
141
|
+
function validateVenezuelanQr(payload) {
|
|
142
|
+
if (!payload || typeof payload !== "string") return false;
|
|
143
|
+
const trimmed = payload.trim();
|
|
144
|
+
if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
|
|
145
|
+
const qIdx = trimmed.indexOf("?");
|
|
146
|
+
if (qIdx < 40) return false;
|
|
147
|
+
const blob = trimmed.substring(0, qIdx);
|
|
148
|
+
if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
|
|
149
|
+
return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// src/country/currencies/bob.ts
|
|
153
|
+
var BOB_PLACEHOLDER = "Bank account number (8\u201320 digits)";
|
|
154
|
+
var BOB_VALIDATION_ERROR = "Please enter a valid Bolivian bank account number";
|
|
155
|
+
function validateBolivianAccount(account) {
|
|
156
|
+
if (!account || account.trim().length === 0) return false;
|
|
157
|
+
const cleaned = account.trim().replace(/[\s-]/g, "");
|
|
158
|
+
return /^\d{8,20}$/.test(cleaned);
|
|
159
|
+
}
|
|
160
|
+
var BOB_PAYMENT_FIELDS = [
|
|
161
|
+
{
|
|
162
|
+
key: "account",
|
|
163
|
+
label: "ACCOUNT_NUMBER",
|
|
164
|
+
placeholder: BOB_PLACEHOLDER,
|
|
165
|
+
displayLabel: "Cuenta",
|
|
166
|
+
validate: validateBolivianAccount,
|
|
167
|
+
validationErrorMessage: BOB_VALIDATION_ERROR
|
|
168
|
+
}
|
|
169
|
+
];
|
|
170
|
+
var BOB_COUNTRY_OPTION = {
|
|
171
|
+
country: "Bolivia",
|
|
172
|
+
currency: CURRENCY.BOB,
|
|
173
|
+
internationalFormat: "BOB",
|
|
174
|
+
symbolNative: "Bs.",
|
|
175
|
+
locale: "es-BO",
|
|
176
|
+
paymentMethod: "QR_SIMPLE",
|
|
177
|
+
paymentAddressName: "QR_SIMPLE_DETAILS",
|
|
178
|
+
timezone: "America/La_Paz",
|
|
179
|
+
timezone_name: "BOT",
|
|
180
|
+
flag: "\u{1F1E7}\u{1F1F4}",
|
|
181
|
+
flagUrl: "https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f1e7-1f1f4.png",
|
|
182
|
+
phoneCode: "+591",
|
|
183
|
+
telegramSupportChannel: "https://t.me/p2pmebolivia",
|
|
184
|
+
twitterUsername: "p2pmebolivia",
|
|
185
|
+
smsCountryCodes: ["BO"],
|
|
186
|
+
precision: 2,
|
|
187
|
+
isAlpha: true,
|
|
188
|
+
disabled: false,
|
|
189
|
+
disabledPaymentTypes: [],
|
|
190
|
+
uploadPaymentQR: true,
|
|
191
|
+
validateQr: validateBolivianQr
|
|
192
|
+
};
|
|
193
|
+
|
|
84
194
|
// src/country/currencies/brl.ts
|
|
85
195
|
var BRL_PLACEHOLDER = "Chave pix ou pix copia e cola";
|
|
86
196
|
var BRL_VALIDATION_ERROR = "Please enter a valid PIX ID";
|
|
@@ -597,55 +707,6 @@ var NGN_COUNTRY_OPTION = {
|
|
|
597
707
|
disabledPaymentTypes: []
|
|
598
708
|
};
|
|
599
709
|
|
|
600
|
-
// src/country/types.ts
|
|
601
|
-
var PACKED_PAYMENT_ID_SEP = "||";
|
|
602
|
-
|
|
603
|
-
// src/country/qr-validator.ts
|
|
604
|
-
function crc16ccitt(s) {
|
|
605
|
-
let crc = 65535;
|
|
606
|
-
for (let i = 0; i < s.length; i++) {
|
|
607
|
-
crc ^= s.charCodeAt(i) << 8;
|
|
608
|
-
for (let j = 0; j < 8; j++) {
|
|
609
|
-
crc = crc & 32768 ? crc << 1 ^ 4129 : crc << 1;
|
|
610
|
-
crc &= 65535;
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
return crc.toString(16).toUpperCase().padStart(4, "0");
|
|
614
|
-
}
|
|
615
|
-
function validatePeruvianQr(payload) {
|
|
616
|
-
if (!payload || payload.trim().length === 0) return false;
|
|
617
|
-
const data = payload.trim();
|
|
618
|
-
const tags = {};
|
|
619
|
-
let pos = 0;
|
|
620
|
-
while (pos + 4 <= data.length) {
|
|
621
|
-
const tag = data.substring(pos, pos + 2);
|
|
622
|
-
const lengthStr = data.substring(pos + 2, pos + 4);
|
|
623
|
-
if (!/^[0-9]{2}$/.test(tag) || !/^[0-9]{2}$/.test(lengthStr)) break;
|
|
624
|
-
const length = Number.parseInt(lengthStr, 10);
|
|
625
|
-
if (pos + 4 + length > data.length) break;
|
|
626
|
-
tags[tag] = data.substring(pos + 4, pos + 4 + length);
|
|
627
|
-
pos += 4 + length;
|
|
628
|
-
}
|
|
629
|
-
if (tags["58"] !== "PE") return false;
|
|
630
|
-
if (tags["53"] !== "604") return false;
|
|
631
|
-
const crcTag = tags["63"];
|
|
632
|
-
if (!crcTag) return false;
|
|
633
|
-
const marker = data.lastIndexOf("6304");
|
|
634
|
-
if (marker === -1) return false;
|
|
635
|
-
const expected = crc16ccitt(data.substring(0, marker + 4));
|
|
636
|
-
return expected.toUpperCase() === crcTag.toUpperCase();
|
|
637
|
-
}
|
|
638
|
-
function validateVenezuelanQr(payload) {
|
|
639
|
-
if (!payload || typeof payload !== "string") return false;
|
|
640
|
-
const trimmed = payload.trim();
|
|
641
|
-
if (trimmed.includes(PACKED_PAYMENT_ID_SEP)) return false;
|
|
642
|
-
const qIdx = trimmed.indexOf("?");
|
|
643
|
-
if (qIdx < 40) return false;
|
|
644
|
-
const blob = trimmed.substring(0, qIdx);
|
|
645
|
-
if (!/^[A-Za-z0-9+/=]+$/.test(blob)) return false;
|
|
646
|
-
return /(?:^|[?&])merchantId=\d{3,4}(?:&|$)/.test(trimmed.substring(qIdx));
|
|
647
|
-
}
|
|
648
|
-
|
|
649
710
|
// src/country/currencies/pen.ts
|
|
650
711
|
var PEN_PHONE_PLACEHOLDER = "PERU_PHONE_PLACEHOLDER";
|
|
651
712
|
var PEN_CCI_PLACEHOLDER = "PERU_CCI_PLACEHOLDER";
|
|
@@ -993,6 +1054,7 @@ var PAYMENT_ID_FIELDS = {
|
|
|
993
1054
|
ARS: ARS_PAYMENT_FIELDS,
|
|
994
1055
|
MEX: MEX_PAYMENT_FIELDS,
|
|
995
1056
|
VEN: VEN_PAYMENT_FIELDS,
|
|
1057
|
+
BOB: BOB_PAYMENT_FIELDS,
|
|
996
1058
|
NGN: NGN_PAYMENT_FIELDS,
|
|
997
1059
|
EUR: EUR_PAYMENT_FIELDS,
|
|
998
1060
|
USD: USD_PAYMENT_FIELDS,
|
|
@@ -1011,6 +1073,7 @@ var COUNTRY_OPTIONS = [
|
|
|
1011
1073
|
ARS_COUNTRY_OPTION,
|
|
1012
1074
|
MEX_COUNTRY_OPTION,
|
|
1013
1075
|
VEN_COUNTRY_OPTION,
|
|
1076
|
+
BOB_COUNTRY_OPTION,
|
|
1014
1077
|
NGN_COUNTRY_OPTION,
|
|
1015
1078
|
COP_COUNTRY_OPTION,
|
|
1016
1079
|
CUP_COUNTRY_OPTION,
|
|
@@ -1210,6 +1273,8 @@ export {
|
|
|
1210
1273
|
usesCatalogPaymentForm,
|
|
1211
1274
|
usesPackedPaymentId,
|
|
1212
1275
|
validateArgentinePaymentId,
|
|
1276
|
+
validateBolivianAccount,
|
|
1277
|
+
validateBolivianQr,
|
|
1213
1278
|
validateColombianPaymentId,
|
|
1214
1279
|
validateCubanCardNumber,
|
|
1215
1280
|
validateCubanPhoneNumber,
|