@wiicode/youcanpay-sdk 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -5
- package/dist/client.d.ts +6 -1
- package/dist/client.js +107 -3
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/interfaces/index.js +1 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/payment.interface.d.ts +19 -2
- package/dist/interfaces/refund.interface.d.ts +44 -0
- package/dist/interfaces/refund.interface.js +11 -0
- package/dist/interfaces/refund.interface.js.map +1 -0
- package/dist/interfaces/transaction.interface.d.ts +2 -0
- package/dist/logging/interfaces.d.ts +1 -1
- package/dist/nestjs/pipes/webhook.pipe.d.ts +1 -1
- package/dist/nestjs/pipes/webhook.pipe.js +13 -6
- package/dist/nestjs/pipes/webhook.pipe.js.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.js +8 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/validators.d.ts +12 -0
- package/dist/security/validators.js +117 -1
- package/dist/security/validators.js.map +1 -1
- package/dist/security/webhook.js +21 -3
- package/dist/security/webhook.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -6,8 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.ParseWebhookPipe = void 0;
|
|
10
|
-
exports.ParsedWebhook = ParsedWebhook;
|
|
9
|
+
exports.ParsedWebhook = exports.ParseWebhookPipe = void 0;
|
|
11
10
|
const common_1 = require("@nestjs/common");
|
|
12
11
|
const webhook_1 = require("../../security/webhook");
|
|
13
12
|
let ParseWebhookPipe = class ParseWebhookPipe {
|
|
@@ -27,8 +26,16 @@ exports.ParseWebhookPipe = ParseWebhookPipe;
|
|
|
27
26
|
exports.ParseWebhookPipe = ParseWebhookPipe = __decorate([
|
|
28
27
|
(0, common_1.Injectable)()
|
|
29
28
|
], ParseWebhookPipe);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
exports.ParsedWebhook = (0, common_1.createParamDecorator)((_data, ctx) => {
|
|
30
|
+
try {
|
|
31
|
+
const request = ctx.switchToHttp().getRequest();
|
|
32
|
+
return (0, webhook_1.parseWebhookPayload)(request.body);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (error instanceof webhook_1.WebhookParseError) {
|
|
36
|
+
throw new common_1.BadRequestException(error.message);
|
|
37
|
+
}
|
|
38
|
+
throw new common_1.BadRequestException('Failed to parse webhook payload');
|
|
39
|
+
}
|
|
40
|
+
});
|
|
34
41
|
//# sourceMappingURL=webhook.pipe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.pipe.js","sourceRoot":"","sources":["../../../src/nestjs/pipes/webhook.pipe.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"webhook.pipe.js","sourceRoot":"","sources":["../../../src/nestjs/pipes/webhook.pipe.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAMwB;AACxB,oDAAsG;AAe/F,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,SAAS,CAAC,KAAc;QACtB,IAAI,CAAC;YACH,OAAO,IAAA,6BAAmB,EAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,2BAAiB,EAAE,CAAC;gBACvC,MAAM,IAAI,4BAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,IAAI,4BAAmB,CAAC,iCAAiC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;CACF,CAAA;AAXY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;GACA,gBAAgB,CAW5B;AAcY,QAAA,aAAa,GAAG,IAAA,6BAAoB,EAC/C,CAAC,KAAc,EAAE,GAAqB,EAAwB,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAqB,CAAC;QACnE,OAAO,IAAA,6BAAmB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,2BAAiB,EAAE,CAAC;YACvC,MAAM,IAAI,4BAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,4BAAmB,CAAC,iCAAiC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CACF,CAAC"}
|
package/dist/security/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { parseWebhookPayload, verifyWebhookSecret, verifyWebhookHMAC, createWebhookSignature, WebhookParseError, WebhookVerifyError, type YouCanPayRawWebhook, type ParsedWebhookPayload, type WebhookVerifyOptions, } from './webhook';
|
|
2
|
-
export { validateAmount, validateCurrency, validateRedirectURL, validateOrderId, validateIP, validateEmail, validatePaymentInput, sanitizeString, toCentimes, fromCentimes, formatAmount, SUPPORTED_CURRENCIES, type SupportedCurrency, type ValidationResult, type AmountValidationOptions, type URLValidationOptions, } from './validators';
|
|
2
|
+
export { validateAmount, validateCurrency, validateRedirectURL, validateOrderId, validateIP, validateEmail, validateTokenId, validateTimeout, validateClientOptions, validateCardNumber, validateExpiryDate, validateCVV, validateCardHolderName, validatePaymentInput, sanitizeString, toCentimes, fromCentimes, formatAmount, SUPPORTED_CURRENCIES, type SupportedCurrency, type ValidationResult, type AmountValidationOptions, type ClientOptionsValidationInput, type URLValidationOptions, } from './validators';
|
package/dist/security/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SUPPORTED_CURRENCIES = exports.formatAmount = exports.fromCentimes = exports.toCentimes = exports.sanitizeString = exports.validatePaymentInput = exports.validateEmail = exports.validateIP = exports.validateOrderId = exports.validateRedirectURL = exports.validateCurrency = exports.validateAmount = exports.WebhookVerifyError = exports.WebhookParseError = exports.createWebhookSignature = exports.verifyWebhookHMAC = exports.verifyWebhookSecret = exports.parseWebhookPayload = void 0;
|
|
3
|
+
exports.SUPPORTED_CURRENCIES = exports.formatAmount = exports.fromCentimes = exports.toCentimes = exports.sanitizeString = exports.validatePaymentInput = exports.validateCardHolderName = exports.validateCVV = exports.validateExpiryDate = exports.validateCardNumber = exports.validateClientOptions = exports.validateTimeout = exports.validateTokenId = exports.validateEmail = exports.validateIP = exports.validateOrderId = exports.validateRedirectURL = exports.validateCurrency = exports.validateAmount = exports.WebhookVerifyError = exports.WebhookParseError = exports.createWebhookSignature = exports.verifyWebhookHMAC = exports.verifyWebhookSecret = exports.parseWebhookPayload = void 0;
|
|
4
4
|
var webhook_1 = require("./webhook");
|
|
5
5
|
Object.defineProperty(exports, "parseWebhookPayload", { enumerable: true, get: function () { return webhook_1.parseWebhookPayload; } });
|
|
6
6
|
Object.defineProperty(exports, "verifyWebhookSecret", { enumerable: true, get: function () { return webhook_1.verifyWebhookSecret; } });
|
|
@@ -15,6 +15,13 @@ Object.defineProperty(exports, "validateRedirectURL", { enumerable: true, get: f
|
|
|
15
15
|
Object.defineProperty(exports, "validateOrderId", { enumerable: true, get: function () { return validators_1.validateOrderId; } });
|
|
16
16
|
Object.defineProperty(exports, "validateIP", { enumerable: true, get: function () { return validators_1.validateIP; } });
|
|
17
17
|
Object.defineProperty(exports, "validateEmail", { enumerable: true, get: function () { return validators_1.validateEmail; } });
|
|
18
|
+
Object.defineProperty(exports, "validateTokenId", { enumerable: true, get: function () { return validators_1.validateTokenId; } });
|
|
19
|
+
Object.defineProperty(exports, "validateTimeout", { enumerable: true, get: function () { return validators_1.validateTimeout; } });
|
|
20
|
+
Object.defineProperty(exports, "validateClientOptions", { enumerable: true, get: function () { return validators_1.validateClientOptions; } });
|
|
21
|
+
Object.defineProperty(exports, "validateCardNumber", { enumerable: true, get: function () { return validators_1.validateCardNumber; } });
|
|
22
|
+
Object.defineProperty(exports, "validateExpiryDate", { enumerable: true, get: function () { return validators_1.validateExpiryDate; } });
|
|
23
|
+
Object.defineProperty(exports, "validateCVV", { enumerable: true, get: function () { return validators_1.validateCVV; } });
|
|
24
|
+
Object.defineProperty(exports, "validateCardHolderName", { enumerable: true, get: function () { return validators_1.validateCardHolderName; } });
|
|
18
25
|
Object.defineProperty(exports, "validatePaymentInput", { enumerable: true, get: function () { return validators_1.validatePaymentInput; } });
|
|
19
26
|
Object.defineProperty(exports, "sanitizeString", { enumerable: true, get: function () { return validators_1.sanitizeString; } });
|
|
20
27
|
Object.defineProperty(exports, "toCentimes", { enumerable: true, get: function () { return validators_1.toCentimes; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":";;;AACA,qCAUmB;AATjB,8GAAA,mBAAmB,OAAA;AACnB,8GAAA,mBAAmB,OAAA;AACnB,4GAAA,iBAAiB,OAAA;AACjB,iHAAA,sBAAsB,OAAA;AACtB,4GAAA,iBAAiB,OAAA;AACjB,6GAAA,kBAAkB,OAAA;AAOpB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":";;;AACA,qCAUmB;AATjB,8GAAA,mBAAmB,OAAA;AACnB,8GAAA,mBAAmB,OAAA;AACnB,4GAAA,iBAAiB,OAAA;AACjB,iHAAA,sBAAsB,OAAA;AACtB,4GAAA,iBAAiB,OAAA;AACjB,6GAAA,kBAAkB,OAAA;AAOpB,2CAyBsB;AAxBpB,4GAAA,cAAc,OAAA;AACd,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,6GAAA,eAAe,OAAA;AACf,wGAAA,UAAU,OAAA;AACV,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA;AACf,6GAAA,eAAe,OAAA;AACf,mHAAA,qBAAqB,OAAA;AACrB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,yGAAA,WAAW,OAAA;AACX,oHAAA,sBAAsB,OAAA;AACtB,kHAAA,oBAAoB,OAAA;AACpB,4GAAA,cAAc,OAAA;AACd,wGAAA,UAAU,OAAA;AACV,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AACZ,kHAAA,oBAAoB,OAAA"}
|
|
@@ -4,6 +4,11 @@ export interface ValidationResult {
|
|
|
4
4
|
valid: boolean;
|
|
5
5
|
error?: string;
|
|
6
6
|
}
|
|
7
|
+
export interface ClientOptionsValidationInput {
|
|
8
|
+
privateKey?: unknown;
|
|
9
|
+
publicKey?: unknown;
|
|
10
|
+
timeout?: unknown;
|
|
11
|
+
}
|
|
7
12
|
export interface AmountValidationOptions {
|
|
8
13
|
min?: number;
|
|
9
14
|
max?: number;
|
|
@@ -22,6 +27,13 @@ export declare function validateRedirectURL(url: unknown, options?: URLValidatio
|
|
|
22
27
|
export declare function validateOrderId(orderId: unknown): ValidationResult;
|
|
23
28
|
export declare function validateIP(ip: unknown): ValidationResult;
|
|
24
29
|
export declare function validateEmail(email: unknown): ValidationResult;
|
|
30
|
+
export declare function validateTokenId(tokenId: unknown): ValidationResult;
|
|
31
|
+
export declare function validateTimeout(timeout: unknown): ValidationResult;
|
|
32
|
+
export declare function validateClientOptions(options: ClientOptionsValidationInput): ValidationResult;
|
|
33
|
+
export declare function validateCardNumber(cardNumber: unknown): ValidationResult;
|
|
34
|
+
export declare function validateExpiryDate(expireDate: unknown): ValidationResult;
|
|
35
|
+
export declare function validateCVV(cvv: unknown): ValidationResult;
|
|
36
|
+
export declare function validateCardHolderName(cardHolderName: unknown): ValidationResult;
|
|
25
37
|
export declare function validatePaymentInput(input: {
|
|
26
38
|
amount: unknown;
|
|
27
39
|
currency: unknown;
|
|
@@ -7,12 +7,38 @@ exports.validateRedirectURL = validateRedirectURL;
|
|
|
7
7
|
exports.validateOrderId = validateOrderId;
|
|
8
8
|
exports.validateIP = validateIP;
|
|
9
9
|
exports.validateEmail = validateEmail;
|
|
10
|
+
exports.validateTokenId = validateTokenId;
|
|
11
|
+
exports.validateTimeout = validateTimeout;
|
|
12
|
+
exports.validateClientOptions = validateClientOptions;
|
|
13
|
+
exports.validateCardNumber = validateCardNumber;
|
|
14
|
+
exports.validateExpiryDate = validateExpiryDate;
|
|
15
|
+
exports.validateCVV = validateCVV;
|
|
16
|
+
exports.validateCardHolderName = validateCardHolderName;
|
|
10
17
|
exports.validatePaymentInput = validatePaymentInput;
|
|
11
18
|
exports.sanitizeString = sanitizeString;
|
|
12
19
|
exports.toCentimes = toCentimes;
|
|
13
20
|
exports.fromCentimes = fromCentimes;
|
|
14
21
|
exports.formatAmount = formatAmount;
|
|
15
22
|
exports.SUPPORTED_CURRENCIES = ['MAD', 'USD', 'EUR'];
|
|
23
|
+
function isNonEmptyString(value) {
|
|
24
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
25
|
+
}
|
|
26
|
+
function passesLuhn(cardNumber) {
|
|
27
|
+
let sum = 0;
|
|
28
|
+
let shouldDouble = false;
|
|
29
|
+
for (let i = cardNumber.length - 1; i >= 0; i -= 1) {
|
|
30
|
+
let digit = Number(cardNumber[i]);
|
|
31
|
+
if (shouldDouble) {
|
|
32
|
+
digit *= 2;
|
|
33
|
+
if (digit > 9) {
|
|
34
|
+
digit -= 9;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
sum += digit;
|
|
38
|
+
shouldDouble = !shouldDouble;
|
|
39
|
+
}
|
|
40
|
+
return sum % 10 === 0;
|
|
41
|
+
}
|
|
16
42
|
function validateAmount(amount, options = {}) {
|
|
17
43
|
const { min = 100, max = 100000000, currency = 'centimes' } = options;
|
|
18
44
|
if (amount === null || amount === undefined) {
|
|
@@ -120,7 +146,8 @@ function validateIP(ip) {
|
|
|
120
146
|
}
|
|
121
147
|
const ipv4Pattern = /^(\d{1,3}\.){3}\d{1,3}$/;
|
|
122
148
|
const ipv6Pattern = /^([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}$/;
|
|
123
|
-
|
|
149
|
+
const ipv4MappedIPv6Pattern = /^::ffff:(\d{1,3}\.){3}\d{1,3}$/i;
|
|
150
|
+
if (!ipv4Pattern.test(ip) && !ipv6Pattern.test(ip) && !ipv4MappedIPv6Pattern.test(ip) && ip !== '::1') {
|
|
124
151
|
return { valid: false, error: 'Invalid IP address format' };
|
|
125
152
|
}
|
|
126
153
|
if (ipv4Pattern.test(ip)) {
|
|
@@ -129,6 +156,13 @@ function validateIP(ip) {
|
|
|
129
156
|
return { valid: false, error: 'Invalid IP address: octet out of range' };
|
|
130
157
|
}
|
|
131
158
|
}
|
|
159
|
+
if (ipv4MappedIPv6Pattern.test(ip)) {
|
|
160
|
+
const ipv4Part = ip.replace(/^::ffff:/i, '');
|
|
161
|
+
const octets = ipv4Part.split('.').map(Number);
|
|
162
|
+
if (octets.some((octet) => octet > 255)) {
|
|
163
|
+
return { valid: false, error: 'Invalid IP address: octet out of range' };
|
|
164
|
+
}
|
|
165
|
+
}
|
|
132
166
|
return { valid: true };
|
|
133
167
|
}
|
|
134
168
|
function validateEmail(email) {
|
|
@@ -147,6 +181,88 @@ function validateEmail(email) {
|
|
|
147
181
|
}
|
|
148
182
|
return { valid: true };
|
|
149
183
|
}
|
|
184
|
+
function validateTokenId(tokenId) {
|
|
185
|
+
if (!isNonEmptyString(tokenId)) {
|
|
186
|
+
return { valid: false, error: 'Token ID is required' };
|
|
187
|
+
}
|
|
188
|
+
if (tokenId.length > 255) {
|
|
189
|
+
return { valid: false, error: 'Token ID is too long' };
|
|
190
|
+
}
|
|
191
|
+
return { valid: true };
|
|
192
|
+
}
|
|
193
|
+
function validateTimeout(timeout) {
|
|
194
|
+
if (timeout === undefined) {
|
|
195
|
+
return { valid: true };
|
|
196
|
+
}
|
|
197
|
+
if (typeof timeout !== 'number' || !Number.isFinite(timeout)) {
|
|
198
|
+
return { valid: false, error: 'Timeout must be a finite number' };
|
|
199
|
+
}
|
|
200
|
+
if (timeout <= 0) {
|
|
201
|
+
return { valid: false, error: 'Timeout must be greater than 0' };
|
|
202
|
+
}
|
|
203
|
+
return { valid: true };
|
|
204
|
+
}
|
|
205
|
+
function validateClientOptions(options) {
|
|
206
|
+
if (!isNonEmptyString(options.privateKey)) {
|
|
207
|
+
return { valid: false, error: 'privateKey is required' };
|
|
208
|
+
}
|
|
209
|
+
if (!isNonEmptyString(options.publicKey)) {
|
|
210
|
+
return { valid: false, error: 'publicKey is required' };
|
|
211
|
+
}
|
|
212
|
+
return validateTimeout(options.timeout);
|
|
213
|
+
}
|
|
214
|
+
function validateCardNumber(cardNumber) {
|
|
215
|
+
if (!isNonEmptyString(cardNumber)) {
|
|
216
|
+
return { valid: false, error: 'Card number is required' };
|
|
217
|
+
}
|
|
218
|
+
const normalized = cardNumber.replace(/\s+/g, '');
|
|
219
|
+
if (!/^\d{12,19}$/.test(normalized)) {
|
|
220
|
+
return { valid: false, error: 'Card number must contain 12 to 19 digits' };
|
|
221
|
+
}
|
|
222
|
+
if (!passesLuhn(normalized)) {
|
|
223
|
+
return { valid: false, error: 'Card number is invalid' };
|
|
224
|
+
}
|
|
225
|
+
return { valid: true };
|
|
226
|
+
}
|
|
227
|
+
function validateExpiryDate(expireDate) {
|
|
228
|
+
if (!isNonEmptyString(expireDate)) {
|
|
229
|
+
return { valid: false, error: 'Expire date is required' };
|
|
230
|
+
}
|
|
231
|
+
const match = expireDate.trim().match(/^(\d{2})\/(\d{2}|\d{4})$/);
|
|
232
|
+
if (!match) {
|
|
233
|
+
return { valid: false, error: 'Expire date must be in MM/YY or MM/YYYY format' };
|
|
234
|
+
}
|
|
235
|
+
const month = Number(match[1]);
|
|
236
|
+
const yearPart = match[2];
|
|
237
|
+
const year = yearPart.length === 2 ? 2000 + Number(yearPart) : Number(yearPart);
|
|
238
|
+
if (month < 1 || month > 12) {
|
|
239
|
+
return { valid: false, error: 'Expire date month must be between 01 and 12' };
|
|
240
|
+
}
|
|
241
|
+
const now = new Date();
|
|
242
|
+
const expiry = new Date(year, month, 0, 23, 59, 59, 999);
|
|
243
|
+
if (Number.isNaN(expiry.getTime()) || expiry < now) {
|
|
244
|
+
return { valid: false, error: 'Card is expired' };
|
|
245
|
+
}
|
|
246
|
+
return { valid: true };
|
|
247
|
+
}
|
|
248
|
+
function validateCVV(cvv) {
|
|
249
|
+
if (!isNonEmptyString(cvv)) {
|
|
250
|
+
return { valid: false, error: 'CVV is required' };
|
|
251
|
+
}
|
|
252
|
+
if (!/^\d{3,4}$/.test(cvv)) {
|
|
253
|
+
return { valid: false, error: 'CVV must be 3 or 4 digits' };
|
|
254
|
+
}
|
|
255
|
+
return { valid: true };
|
|
256
|
+
}
|
|
257
|
+
function validateCardHolderName(cardHolderName) {
|
|
258
|
+
if (!isNonEmptyString(cardHolderName)) {
|
|
259
|
+
return { valid: false, error: 'Card holder name is required' };
|
|
260
|
+
}
|
|
261
|
+
if (cardHolderName.trim().length > 255) {
|
|
262
|
+
return { valid: false, error: 'Card holder name is too long' };
|
|
263
|
+
}
|
|
264
|
+
return { valid: true };
|
|
265
|
+
}
|
|
150
266
|
function validatePaymentInput(input) {
|
|
151
267
|
const checks = [
|
|
152
268
|
validateAmount(input.amount),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/security/validators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/security/validators.ts"],"names":[],"mappings":"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"}
|
package/dist/security/webhook.js
CHANGED
|
@@ -39,6 +39,14 @@ exports.verifyWebhookSecret = verifyWebhookSecret;
|
|
|
39
39
|
exports.verifyWebhookHMAC = verifyWebhookHMAC;
|
|
40
40
|
exports.createWebhookSignature = createWebhookSignature;
|
|
41
41
|
const crypto = __importStar(require("crypto"));
|
|
42
|
+
function safeCompareStrings(left, right) {
|
|
43
|
+
const leftBuffer = Buffer.from(left, 'utf8');
|
|
44
|
+
const rightBuffer = Buffer.from(right, 'utf8');
|
|
45
|
+
if (leftBuffer.length !== rightBuffer.length) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
return crypto.timingSafeEqual(leftBuffer, rightBuffer);
|
|
49
|
+
}
|
|
42
50
|
function parseWebhookPayload(payload) {
|
|
43
51
|
if (!payload || typeof payload !== 'object') {
|
|
44
52
|
throw new WebhookParseError('Invalid webhook payload: not an object');
|
|
@@ -57,6 +65,16 @@ function parseWebhookPayload(payload) {
|
|
|
57
65
|
}
|
|
58
66
|
const eventName = rawPayload.event_name;
|
|
59
67
|
const rawStatus = Number(transaction.status);
|
|
68
|
+
const amount = Number(transaction.amount);
|
|
69
|
+
if (typeof eventName !== 'string' || eventName.trim() === '') {
|
|
70
|
+
throw new WebhookParseError('Invalid webhook payload: event_name must be a non-empty string');
|
|
71
|
+
}
|
|
72
|
+
if (!Number.isFinite(rawStatus)) {
|
|
73
|
+
throw new WebhookParseError('Invalid webhook payload: transaction status is invalid');
|
|
74
|
+
}
|
|
75
|
+
if (!Number.isFinite(amount) || amount < 0) {
|
|
76
|
+
throw new WebhookParseError('Invalid webhook payload: transaction amount is invalid');
|
|
77
|
+
}
|
|
60
78
|
let status;
|
|
61
79
|
if (rawStatus === 1 || eventName === 'transaction.paid') {
|
|
62
80
|
status = 'paid';
|
|
@@ -77,7 +95,7 @@ function parseWebhookPayload(payload) {
|
|
|
77
95
|
sandbox: rawPayload.sandbox,
|
|
78
96
|
transactionId: transaction.id,
|
|
79
97
|
orderId: transaction.order_id,
|
|
80
|
-
amount
|
|
98
|
+
amount,
|
|
81
99
|
currency: transaction.currency,
|
|
82
100
|
rawStatus,
|
|
83
101
|
status,
|
|
@@ -98,13 +116,13 @@ function verifyWebhookSecret(options) {
|
|
|
98
116
|
}
|
|
99
117
|
if (headers) {
|
|
100
118
|
const signature = headers[signatureHeader] || headers[signatureHeader.toLowerCase()];
|
|
101
|
-
if (signature && signature
|
|
119
|
+
if (signature && safeCompareStrings(signature, secret)) {
|
|
102
120
|
return true;
|
|
103
121
|
}
|
|
104
122
|
}
|
|
105
123
|
if (query) {
|
|
106
124
|
const querySecret = query[secretParam];
|
|
107
|
-
if (querySecret && querySecret
|
|
125
|
+
if (querySecret && safeCompareStrings(querySecret, secret)) {
|
|
108
126
|
return true;
|
|
109
127
|
}
|
|
110
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/security/webhook.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/security/webhook.ts"],"names":[],"mappings":"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"}
|