@wiicode/youcanpay-sdk 1.0.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.
Files changed (91) hide show
  1. package/README.md +848 -0
  2. package/dist/client.d.ts +17 -0
  3. package/dist/client.js +171 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/constants.d.ts +8 -0
  6. package/dist/constants.js +12 -0
  7. package/dist/constants.js.map +1 -0
  8. package/dist/enums/currency.enum.d.ts +8 -0
  9. package/dist/enums/currency.enum.js +13 -0
  10. package/dist/enums/currency.enum.js.map +1 -0
  11. package/dist/enums/index.d.ts +2 -0
  12. package/dist/enums/index.js +19 -0
  13. package/dist/enums/index.js.map +1 -0
  14. package/dist/enums/lang.enum.d.ts +5 -0
  15. package/dist/enums/lang.enum.js +10 -0
  16. package/dist/enums/lang.enum.js.map +1 -0
  17. package/dist/errors/index.d.ts +1 -0
  18. package/dist/errors/index.js +18 -0
  19. package/dist/errors/index.js.map +1 -0
  20. package/dist/errors/youcanpay.error.d.ts +16 -0
  21. package/dist/errors/youcanpay.error.js +32 -0
  22. package/dist/errors/youcanpay.error.js.map +1 -0
  23. package/dist/index.d.ts +12 -0
  24. package/dist/index.js +57 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/interfaces/index.d.ts +5 -0
  27. package/dist/interfaces/index.js +22 -0
  28. package/dist/interfaces/index.js.map +1 -0
  29. package/dist/interfaces/options.interface.d.ts +13 -0
  30. package/dist/interfaces/options.interface.js +3 -0
  31. package/dist/interfaces/options.interface.js.map +1 -0
  32. package/dist/interfaces/payment.interface.d.ts +22 -0
  33. package/dist/interfaces/payment.interface.js +3 -0
  34. package/dist/interfaces/payment.interface.js.map +1 -0
  35. package/dist/interfaces/token.interface.d.ts +26 -0
  36. package/dist/interfaces/token.interface.js +3 -0
  37. package/dist/interfaces/token.interface.js.map +1 -0
  38. package/dist/interfaces/transaction.interface.d.ts +10 -0
  39. package/dist/interfaces/transaction.interface.js +3 -0
  40. package/dist/interfaces/transaction.interface.js.map +1 -0
  41. package/dist/interfaces/webhook.interface.d.ts +16 -0
  42. package/dist/interfaces/webhook.interface.js +10 -0
  43. package/dist/interfaces/webhook.interface.js.map +1 -0
  44. package/dist/logging/index.d.ts +3 -0
  45. package/dist/logging/index.js +20 -0
  46. package/dist/logging/index.js.map +1 -0
  47. package/dist/logging/interfaces.d.ts +22 -0
  48. package/dist/logging/interfaces.js +3 -0
  49. package/dist/logging/interfaces.js.map +1 -0
  50. package/dist/logging/logger.d.ts +6 -0
  51. package/dist/logging/logger.js +37 -0
  52. package/dist/logging/logger.js.map +1 -0
  53. package/dist/logging/sanitizer.d.ts +1 -0
  54. package/dist/logging/sanitizer.js +55 -0
  55. package/dist/logging/sanitizer.js.map +1 -0
  56. package/dist/nestjs/decorators.d.ts +2 -0
  57. package/dist/nestjs/decorators.js +8 -0
  58. package/dist/nestjs/decorators.js.map +1 -0
  59. package/dist/nestjs/guards/index.d.ts +1 -0
  60. package/dist/nestjs/guards/index.js +9 -0
  61. package/dist/nestjs/guards/index.js.map +1 -0
  62. package/dist/nestjs/guards/webhook.guard.d.ts +16 -0
  63. package/dist/nestjs/guards/webhook.guard.js +59 -0
  64. package/dist/nestjs/guards/webhook.guard.js.map +1 -0
  65. package/dist/nestjs/index.d.ts +5 -0
  66. package/dist/nestjs/index.js +22 -0
  67. package/dist/nestjs/index.js.map +1 -0
  68. package/dist/nestjs/pipes/index.d.ts +1 -0
  69. package/dist/nestjs/pipes/index.js +7 -0
  70. package/dist/nestjs/pipes/index.js.map +1 -0
  71. package/dist/nestjs/pipes/webhook.pipe.d.ts +6 -0
  72. package/dist/nestjs/pipes/webhook.pipe.js +34 -0
  73. package/dist/nestjs/pipes/webhook.pipe.js.map +1 -0
  74. package/dist/nestjs/youcanpay.module.d.ts +6 -0
  75. package/dist/nestjs/youcanpay.module.js +48 -0
  76. package/dist/nestjs/youcanpay.module.js.map +1 -0
  77. package/dist/nestjs/youcanpay.service.d.ts +5 -0
  78. package/dist/nestjs/youcanpay.service.js +30 -0
  79. package/dist/nestjs/youcanpay.service.js.map +1 -0
  80. package/dist/security/index.d.ts +2 -0
  81. package/dist/security/index.js +24 -0
  82. package/dist/security/index.js.map +1 -0
  83. package/dist/security/validators.d.ts +37 -0
  84. package/dist/security/validators.js +183 -0
  85. package/dist/security/validators.js.map +1 -0
  86. package/dist/security/webhook.d.ts +80 -0
  87. package/dist/security/webhook.js +146 -0
  88. package/dist/security/webhook.js.map +1 -0
  89. package/dist/tsconfig.build.tsbuildinfo +1 -0
  90. package/dist/tsconfig.tsbuildinfo +1 -0
  91. package/package.json +49 -0
@@ -0,0 +1,17 @@
1
+ import { Lang } from './enums';
2
+ import { YouCanPayOptions, CreateTokenParams, TokenResponse, PayCreditCardParams, PaymentResponse, PayCashPlusParams, CashPlusPaymentResponse, Transaction } from './interfaces';
3
+ export declare class YouCanPayClient {
4
+ private readonly http;
5
+ private readonly sandbox;
6
+ private readonly privateKey;
7
+ private readonly publicKey;
8
+ private readonly logger;
9
+ constructor(options: YouCanPayOptions);
10
+ createToken(params: CreateTokenParams): Promise<TokenResponse>;
11
+ getPaymentUrl(tokenId: string, lang?: Lang): string;
12
+ payWithCreditCard(params: PayCreditCardParams): Promise<PaymentResponse>;
13
+ payWithCashPlus(params: PayCashPlusParams): Promise<CashPlusPaymentResponse>;
14
+ getTransaction(transactionId: string): Promise<Transaction>;
15
+ verifyWebhook(payload: unknown): boolean;
16
+ private handleError;
17
+ }
package/dist/client.js ADDED
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.YouCanPayClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const constants_1 = require("./constants");
9
+ const errors_1 = require("./errors");
10
+ const enums_1 = require("./enums");
11
+ const logger_1 = require("./logging/logger");
12
+ class YouCanPayClient {
13
+ constructor(options) {
14
+ this.sandbox = options.sandbox ?? false;
15
+ this.privateKey = options.privateKey;
16
+ this.publicKey = options.publicKey;
17
+ this.logger = new logger_1.YouCanPayLogger(options.logging);
18
+ this.http = axios_1.default.create({
19
+ baseURL: this.sandbox ? constants_1.YOUCANPAY_SANDBOX_BASE_URL : constants_1.YOUCANPAY_BASE_URL,
20
+ timeout: options.timeout ?? 30000,
21
+ headers: {
22
+ 'Content-Type': 'application/x-www-form-urlencoded',
23
+ },
24
+ });
25
+ }
26
+ async createToken(params) {
27
+ const startTime = Date.now();
28
+ const body = new URLSearchParams();
29
+ body.append('pri_key', this.privateKey);
30
+ body.append('pub_key', this.publicKey);
31
+ body.append('order_id', params.orderId);
32
+ body.append('amount', String(params.amount));
33
+ body.append('currency', params.currency);
34
+ body.append('customer_ip', params.customerIp);
35
+ body.append('success_url', params.successUrl);
36
+ if (params.errorUrl)
37
+ body.append('error_url', params.errorUrl);
38
+ if (params.customer) {
39
+ const customer = params.customer;
40
+ if (customer.name)
41
+ body.append('customer_name', customer.name);
42
+ if (customer.email)
43
+ body.append('customer_email', customer.email);
44
+ if (customer.phone)
45
+ body.append('customer_phone', customer.phone);
46
+ if (customer.address)
47
+ body.append('customer_address', customer.address);
48
+ if (customer.zip_code)
49
+ body.append('customer_zip_code', customer.zip_code);
50
+ if (customer.city)
51
+ body.append('customer_city', customer.city);
52
+ if (customer.state)
53
+ body.append('customer_state', customer.state);
54
+ if (customer.country_code)
55
+ body.append('customer_country_code', customer.country_code);
56
+ }
57
+ if (params.metadata) {
58
+ for (const [key, value] of Object.entries(params.metadata)) {
59
+ body.append(`metadata[${key}]`, value);
60
+ }
61
+ }
62
+ try {
63
+ const response = await this.http.post('/tokenize', body);
64
+ const data = response.data;
65
+ await this.logger.log('createToken', { orderId: params.orderId, amount: params.amount, currency: params.currency }, data, 'success', Date.now() - startTime, params.metadata);
66
+ return data;
67
+ }
68
+ catch (error) {
69
+ await this.logger.log('createToken', { orderId: params.orderId, amount: params.amount, currency: params.currency }, undefined, 'error', Date.now() - startTime);
70
+ throw this.handleError(error);
71
+ }
72
+ }
73
+ getPaymentUrl(tokenId, lang = enums_1.Lang.FR) {
74
+ const baseUrl = this.sandbox ? constants_1.YOUCANPAY_SANDBOX_PAYMENT_URL : constants_1.YOUCANPAY_PAYMENT_URL;
75
+ return `${baseUrl}/${tokenId}?lang=${lang}`;
76
+ }
77
+ async payWithCreditCard(params) {
78
+ const startTime = Date.now();
79
+ const body = new URLSearchParams();
80
+ body.append('pri_key', this.privateKey);
81
+ body.append('pub_key', this.publicKey);
82
+ body.append('token_id', params.tokenId);
83
+ body.append('credit_card', params.creditCard);
84
+ body.append('expire_date', params.expireDate);
85
+ body.append('cvv', params.cvv);
86
+ body.append('card_holder_name', params.cardHolderName);
87
+ try {
88
+ const response = await this.http.post('/pay', body);
89
+ const data = response.data;
90
+ await this.logger.log('payWithCreditCard', { tokenId: params.tokenId, cardHolderName: params.cardHolderName }, data, 'success', Date.now() - startTime);
91
+ return data;
92
+ }
93
+ catch (error) {
94
+ await this.logger.log('payWithCreditCard', { tokenId: params.tokenId }, undefined, 'error', Date.now() - startTime);
95
+ throw this.handleError(error);
96
+ }
97
+ }
98
+ async payWithCashPlus(params) {
99
+ const startTime = Date.now();
100
+ const body = new URLSearchParams();
101
+ body.append('pri_key', this.privateKey);
102
+ body.append('pub_key', this.publicKey);
103
+ body.append('token_id', params.tokenId);
104
+ try {
105
+ const response = await this.http.post('/cashplus/init', body);
106
+ const data = response.data;
107
+ await this.logger.log('payWithCashPlus', { tokenId: params.tokenId }, data, 'success', Date.now() - startTime);
108
+ return data;
109
+ }
110
+ catch (error) {
111
+ await this.logger.log('payWithCashPlus', { tokenId: params.tokenId }, undefined, 'error', Date.now() - startTime);
112
+ throw this.handleError(error);
113
+ }
114
+ }
115
+ async getTransaction(transactionId) {
116
+ const startTime = Date.now();
117
+ try {
118
+ const response = await this.http.get(`/transactions/${transactionId}`, {
119
+ params: { pri_key: this.privateKey },
120
+ });
121
+ const data = response.data;
122
+ await this.logger.log('getTransaction', { transactionId }, data, 'success', Date.now() - startTime);
123
+ return data;
124
+ }
125
+ catch (error) {
126
+ await this.logger.log('getTransaction', { transactionId }, undefined, 'error', Date.now() - startTime);
127
+ throw this.handleError(error);
128
+ }
129
+ }
130
+ verifyWebhook(payload) {
131
+ if (!payload || typeof payload !== 'object') {
132
+ return false;
133
+ }
134
+ const p = payload;
135
+ return (typeof p['transaction_id'] === 'string' &&
136
+ typeof p['order_id'] === 'string' &&
137
+ typeof p['amount'] === 'number' &&
138
+ typeof p['status'] === 'string');
139
+ }
140
+ handleError(error) {
141
+ if (error !== null &&
142
+ typeof error === 'object' &&
143
+ 'isAxiosError' in error &&
144
+ error.isAxiosError) {
145
+ const axiosError = error;
146
+ if (axiosError.response) {
147
+ const { status, data } = axiosError.response;
148
+ const message = data?.message ?? 'An API error occurred';
149
+ const details = data?.errors;
150
+ if (status === 401 || status === 403) {
151
+ return new errors_1.YouCanPayError(message, errors_1.ErrorCodes.UNAUTHORIZED, status, details);
152
+ }
153
+ if (status === 422) {
154
+ return new errors_1.YouCanPayError(message, errors_1.ErrorCodes.VALIDATION_ERROR, status, details);
155
+ }
156
+ if (status >= 400 && status < 500) {
157
+ return new errors_1.YouCanPayError(message, errors_1.ErrorCodes.PAYMENT_FAILED, status, details);
158
+ }
159
+ return new errors_1.YouCanPayError(message, errors_1.ErrorCodes.UNKNOWN_ERROR, status, details);
160
+ }
161
+ return new errors_1.YouCanPayError('Network error occurred', errors_1.ErrorCodes.NETWORK_ERROR);
162
+ }
163
+ if (error instanceof errors_1.YouCanPayError) {
164
+ return error;
165
+ }
166
+ const message = error instanceof Error ? error.message : 'An unknown error occurred';
167
+ return new errors_1.YouCanPayError(message, errors_1.ErrorCodes.UNKNOWN_ERROR);
168
+ }
169
+ }
170
+ exports.YouCanPayClient = YouCanPayClient;
171
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const YOUCANPAY_OPTIONS = "YOUCANPAY_OPTIONS";
2
+ export declare const YOUCANPAY_BASE_URL = "https://youcanpay.com/api";
3
+ export declare const YOUCANPAY_SANDBOX_BASE_URL = "https://youcanpay.com/sandbox/api";
4
+ export declare const YOUCANPAY_PAYMENT_URL = "https://youcanpay.com/payment-form";
5
+ export declare const YOUCANPAY_SANDBOX_PAYMENT_URL = "https://youcanpay.com/sandbox/payment-form";
6
+ export declare const YOUCANPAY_TRANSACTION_API_URL = "https://api.youcanpay.com";
7
+ export declare const YOUCANPAY_SANDBOX_TRANSACTION_API_URL = "https://api.youcanpay.com";
8
+ export declare const YOUCANPAY_JS_SCRIPT = "https://youcanpay.com/js/ycpay.js";
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YOUCANPAY_JS_SCRIPT = exports.YOUCANPAY_SANDBOX_TRANSACTION_API_URL = exports.YOUCANPAY_TRANSACTION_API_URL = exports.YOUCANPAY_SANDBOX_PAYMENT_URL = exports.YOUCANPAY_PAYMENT_URL = exports.YOUCANPAY_SANDBOX_BASE_URL = exports.YOUCANPAY_BASE_URL = exports.YOUCANPAY_OPTIONS = void 0;
4
+ exports.YOUCANPAY_OPTIONS = 'YOUCANPAY_OPTIONS';
5
+ exports.YOUCANPAY_BASE_URL = 'https://youcanpay.com/api';
6
+ exports.YOUCANPAY_SANDBOX_BASE_URL = 'https://youcanpay.com/sandbox/api';
7
+ exports.YOUCANPAY_PAYMENT_URL = 'https://youcanpay.com/payment-form';
8
+ exports.YOUCANPAY_SANDBOX_PAYMENT_URL = 'https://youcanpay.com/sandbox/payment-form';
9
+ exports.YOUCANPAY_TRANSACTION_API_URL = 'https://api.youcanpay.com';
10
+ exports.YOUCANPAY_SANDBOX_TRANSACTION_API_URL = 'https://api.youcanpay.com';
11
+ exports.YOUCANPAY_JS_SCRIPT = 'https://youcanpay.com/js/ycpay.js';
12
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,kBAAkB,GAAG,2BAA2B,CAAC;AACjD,QAAA,0BAA0B,GAAG,mCAAmC,CAAC;AACjE,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAC7D,QAAA,6BAA6B,GAAG,4CAA4C,CAAC;AAC7E,QAAA,6BAA6B,GAAG,2BAA2B,CAAC;AAC5D,QAAA,qCAAqC,GAAG,2BAA2B,CAAC;AACpE,QAAA,mBAAmB,GAAG,mCAAmC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare enum CurrencyCode {
2
+ MAD = "MAD",
3
+ USD = "USD",
4
+ EUR = "EUR",
5
+ GBP = "GBP",
6
+ SAR = "SAR",
7
+ AED = "AED"
8
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrencyCode = void 0;
4
+ var CurrencyCode;
5
+ (function (CurrencyCode) {
6
+ CurrencyCode["MAD"] = "MAD";
7
+ CurrencyCode["USD"] = "USD";
8
+ CurrencyCode["EUR"] = "EUR";
9
+ CurrencyCode["GBP"] = "GBP";
10
+ CurrencyCode["SAR"] = "SAR";
11
+ CurrencyCode["AED"] = "AED";
12
+ })(CurrencyCode || (exports.CurrencyCode = CurrencyCode = {}));
13
+ //# sourceMappingURL=currency.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.enum.js","sourceRoot":"","sources":["../../src/enums/currency.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,2BAAW,CAAA;AACb,CAAC,EAPW,YAAY,4BAAZ,YAAY,QAOvB"}
@@ -0,0 +1,2 @@
1
+ export * from './currency.enum';
2
+ export * from './lang.enum';
@@ -0,0 +1,19 @@
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("./currency.enum"), exports);
18
+ __exportStar(require("./lang.enum"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,8CAA4B"}
@@ -0,0 +1,5 @@
1
+ export declare enum Lang {
2
+ AR = "ar",
3
+ EN = "en",
4
+ FR = "fr"
5
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Lang = void 0;
4
+ var Lang;
5
+ (function (Lang) {
6
+ Lang["AR"] = "ar";
7
+ Lang["EN"] = "en";
8
+ Lang["FR"] = "fr";
9
+ })(Lang || (exports.Lang = Lang = {}));
10
+ //# sourceMappingURL=lang.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lang.enum.js","sourceRoot":"","sources":["../../src/enums/lang.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,IAIX;AAJD,WAAY,IAAI;IACd,iBAAS,CAAA;IACT,iBAAS,CAAA;IACT,iBAAS,CAAA;AACX,CAAC,EAJW,IAAI,oBAAJ,IAAI,QAIf"}
@@ -0,0 +1 @@
1
+ export * from './youcanpay.error';
@@ -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("./youcanpay.error"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
@@ -0,0 +1,16 @@
1
+ export declare class YouCanPayError extends Error {
2
+ readonly code: string;
3
+ readonly statusCode?: number | undefined;
4
+ readonly details?: Record<string, string[]> | undefined;
5
+ constructor(message: string, code: string, statusCode?: number | undefined, details?: Record<string, string[]> | undefined);
6
+ toJSON(): Record<string, unknown>;
7
+ }
8
+ export declare const ErrorCodes: {
9
+ readonly NETWORK_ERROR: "NETWORK_ERROR";
10
+ readonly VALIDATION_ERROR: "VALIDATION_ERROR";
11
+ readonly INVALID_TOKEN: "INVALID_TOKEN";
12
+ readonly PAYMENT_FAILED: "PAYMENT_FAILED";
13
+ readonly UNAUTHORIZED: "UNAUTHORIZED";
14
+ readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
15
+ };
16
+ export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorCodes = exports.YouCanPayError = void 0;
4
+ class YouCanPayError extends Error {
5
+ constructor(message, code, statusCode, details) {
6
+ super(message);
7
+ this.code = code;
8
+ this.statusCode = statusCode;
9
+ this.details = details;
10
+ this.name = 'YouCanPayError';
11
+ Object.setPrototypeOf(this, YouCanPayError.prototype);
12
+ }
13
+ toJSON() {
14
+ return {
15
+ name: this.name,
16
+ message: this.message,
17
+ code: this.code,
18
+ statusCode: this.statusCode,
19
+ details: this.details,
20
+ };
21
+ }
22
+ }
23
+ exports.YouCanPayError = YouCanPayError;
24
+ exports.ErrorCodes = {
25
+ NETWORK_ERROR: 'NETWORK_ERROR',
26
+ VALIDATION_ERROR: 'VALIDATION_ERROR',
27
+ INVALID_TOKEN: 'INVALID_TOKEN',
28
+ PAYMENT_FAILED: 'PAYMENT_FAILED',
29
+ UNAUTHORIZED: 'UNAUTHORIZED',
30
+ UNKNOWN_ERROR: 'UNKNOWN_ERROR',
31
+ };
32
+ //# sourceMappingURL=youcanpay.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youcanpay.error.js","sourceRoot":"","sources":["../../src/errors/youcanpay.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IACvC,YACE,OAAe,EACC,IAAY,EACZ,UAAmB,EACnB,OAAkC;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAS;QACnB,YAAO,GAAP,OAAO,CAA2B;QAGlD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AArBD,wCAqBC;AAEY,QAAA,UAAU,GAAG;IACxB,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;CACtB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { YouCanPayClient } from './client';
2
+ export { YouCanPayModule } from './nestjs/youcanpay.module';
3
+ export { YouCanPayService } from './nestjs/youcanpay.service';
4
+ export { InjectYouCanPay } from './nestjs/decorators';
5
+ export { WebhookGuard, WebhookOptions, WEBHOOK_SECRET_KEY } from './nestjs/guards';
6
+ export { ParseWebhookPipe } from './nestjs/pipes';
7
+ export { parseWebhookPayload, verifyWebhookSecret, verifyWebhookHMAC, createWebhookSignature, WebhookParseError, WebhookVerifyError, validateAmount, validateCurrency, validateRedirectURL, validateOrderId, validateIP, validateEmail, validatePaymentInput, sanitizeString, toCentimes, fromCentimes, formatAmount, SUPPORTED_CURRENCIES, type YouCanPayRawWebhook, type ParsedWebhookPayload, type WebhookVerifyOptions, type SupportedCurrency, type ValidationResult, } from './security';
8
+ export * from './interfaces';
9
+ export * from './enums';
10
+ export * from './errors';
11
+ export { YouCanPayLogger, YouCanPayLogEntry, YouCanPayLoggingOptions } from './logging';
12
+ export * from './constants';
package/dist/index.js ADDED
@@ -0,0 +1,57 @@
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
+ exports.YouCanPayLogger = 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 = exports.ParseWebhookPipe = exports.WEBHOOK_SECRET_KEY = exports.WebhookOptions = exports.WebhookGuard = exports.InjectYouCanPay = exports.YouCanPayService = exports.YouCanPayModule = exports.YouCanPayClient = void 0;
18
+ var client_1 = require("./client");
19
+ Object.defineProperty(exports, "YouCanPayClient", { enumerable: true, get: function () { return client_1.YouCanPayClient; } });
20
+ var youcanpay_module_1 = require("./nestjs/youcanpay.module");
21
+ Object.defineProperty(exports, "YouCanPayModule", { enumerable: true, get: function () { return youcanpay_module_1.YouCanPayModule; } });
22
+ var youcanpay_service_1 = require("./nestjs/youcanpay.service");
23
+ Object.defineProperty(exports, "YouCanPayService", { enumerable: true, get: function () { return youcanpay_service_1.YouCanPayService; } });
24
+ var decorators_1 = require("./nestjs/decorators");
25
+ Object.defineProperty(exports, "InjectYouCanPay", { enumerable: true, get: function () { return decorators_1.InjectYouCanPay; } });
26
+ var guards_1 = require("./nestjs/guards");
27
+ Object.defineProperty(exports, "WebhookGuard", { enumerable: true, get: function () { return guards_1.WebhookGuard; } });
28
+ Object.defineProperty(exports, "WebhookOptions", { enumerable: true, get: function () { return guards_1.WebhookOptions; } });
29
+ Object.defineProperty(exports, "WEBHOOK_SECRET_KEY", { enumerable: true, get: function () { return guards_1.WEBHOOK_SECRET_KEY; } });
30
+ var pipes_1 = require("./nestjs/pipes");
31
+ Object.defineProperty(exports, "ParseWebhookPipe", { enumerable: true, get: function () { return pipes_1.ParseWebhookPipe; } });
32
+ var security_1 = require("./security");
33
+ Object.defineProperty(exports, "parseWebhookPayload", { enumerable: true, get: function () { return security_1.parseWebhookPayload; } });
34
+ Object.defineProperty(exports, "verifyWebhookSecret", { enumerable: true, get: function () { return security_1.verifyWebhookSecret; } });
35
+ Object.defineProperty(exports, "verifyWebhookHMAC", { enumerable: true, get: function () { return security_1.verifyWebhookHMAC; } });
36
+ Object.defineProperty(exports, "createWebhookSignature", { enumerable: true, get: function () { return security_1.createWebhookSignature; } });
37
+ Object.defineProperty(exports, "WebhookParseError", { enumerable: true, get: function () { return security_1.WebhookParseError; } });
38
+ Object.defineProperty(exports, "WebhookVerifyError", { enumerable: true, get: function () { return security_1.WebhookVerifyError; } });
39
+ Object.defineProperty(exports, "validateAmount", { enumerable: true, get: function () { return security_1.validateAmount; } });
40
+ Object.defineProperty(exports, "validateCurrency", { enumerable: true, get: function () { return security_1.validateCurrency; } });
41
+ Object.defineProperty(exports, "validateRedirectURL", { enumerable: true, get: function () { return security_1.validateRedirectURL; } });
42
+ Object.defineProperty(exports, "validateOrderId", { enumerable: true, get: function () { return security_1.validateOrderId; } });
43
+ Object.defineProperty(exports, "validateIP", { enumerable: true, get: function () { return security_1.validateIP; } });
44
+ Object.defineProperty(exports, "validateEmail", { enumerable: true, get: function () { return security_1.validateEmail; } });
45
+ Object.defineProperty(exports, "validatePaymentInput", { enumerable: true, get: function () { return security_1.validatePaymentInput; } });
46
+ Object.defineProperty(exports, "sanitizeString", { enumerable: true, get: function () { return security_1.sanitizeString; } });
47
+ Object.defineProperty(exports, "toCentimes", { enumerable: true, get: function () { return security_1.toCentimes; } });
48
+ Object.defineProperty(exports, "fromCentimes", { enumerable: true, get: function () { return security_1.fromCentimes; } });
49
+ Object.defineProperty(exports, "formatAmount", { enumerable: true, get: function () { return security_1.formatAmount; } });
50
+ Object.defineProperty(exports, "SUPPORTED_CURRENCIES", { enumerable: true, get: function () { return security_1.SUPPORTED_CURRENCIES; } });
51
+ __exportStar(require("./interfaces"), exports);
52
+ __exportStar(require("./enums"), exports);
53
+ __exportStar(require("./errors"), exports);
54
+ var logging_1 = require("./logging");
55
+ Object.defineProperty(exports, "YouCanPayLogger", { enumerable: true, get: function () { return logging_1.YouCanPayLogger; } });
56
+ __exportStar(require("./constants"), exports);
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AAGxB,8DAA4D;AAAnD,mHAAA,eAAe,OAAA;AACxB,gEAA8D;AAArD,qHAAA,gBAAgB,OAAA;AACzB,kDAAsD;AAA7C,6GAAA,eAAe,OAAA;AACxB,0CAAmF;AAA1E,sGAAA,YAAY,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AACzD,wCAAkD;AAAzC,yGAAA,gBAAgB,OAAA;AAGzB,uCA2BoB;AAzBlB,+GAAA,mBAAmB,OAAA;AACnB,+GAAA,mBAAmB,OAAA;AACnB,6GAAA,iBAAiB,OAAA;AACjB,kHAAA,sBAAsB,OAAA;AACtB,6GAAA,iBAAiB,OAAA;AACjB,8GAAA,kBAAkB,OAAA;AAElB,0GAAA,cAAc,OAAA;AACd,4GAAA,gBAAgB,OAAA;AAChB,+GAAA,mBAAmB,OAAA;AACnB,2GAAA,eAAe,OAAA;AACf,sGAAA,UAAU,OAAA;AACV,yGAAA,aAAa,OAAA;AACb,gHAAA,oBAAoB,OAAA;AACpB,0GAAA,cAAc,OAAA;AACd,sGAAA,UAAU,OAAA;AACV,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AACZ,gHAAA,oBAAoB,OAAA;AAUtB,+CAA6B;AAG7B,0CAAwB;AAGxB,2CAAyB;AAGzB,qCAAwF;AAA/E,0GAAA,eAAe,OAAA;AAGxB,8CAA4B"}
@@ -0,0 +1,5 @@
1
+ export * from './options.interface';
2
+ export * from './token.interface';
3
+ export * from './payment.interface';
4
+ export * from './transaction.interface';
5
+ export * from './webhook.interface';
@@ -0,0 +1,22 @@
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("./options.interface"), exports);
18
+ __exportStar(require("./token.interface"), exports);
19
+ __exportStar(require("./payment.interface"), exports);
20
+ __exportStar(require("./transaction.interface"), exports);
21
+ __exportStar(require("./webhook.interface"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,oDAAkC;AAClC,sDAAoC;AACpC,0DAAwC;AACxC,sDAAoC"}
@@ -0,0 +1,13 @@
1
+ import { YouCanPayLoggingOptions } from '../logging/interfaces';
2
+ export interface YouCanPayOptions {
3
+ privateKey: string;
4
+ publicKey: string;
5
+ sandbox?: boolean;
6
+ timeout?: number;
7
+ logging?: YouCanPayLoggingOptions;
8
+ }
9
+ export interface YouCanPayAsyncOptions {
10
+ useFactory: (...args: unknown[]) => Promise<YouCanPayOptions> | YouCanPayOptions;
11
+ inject?: unknown[];
12
+ imports?: unknown[];
13
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.interface.js","sourceRoot":"","sources":["../../src/interfaces/options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ export interface PayCreditCardParams {
2
+ tokenId: string;
3
+ creditCard: string;
4
+ expireDate: string;
5
+ cvv: string;
6
+ cardHolderName: string;
7
+ }
8
+ export interface PayCashPlusParams {
9
+ tokenId: string;
10
+ }
11
+ export interface PaymentResponse {
12
+ success: boolean;
13
+ code: string;
14
+ message: string;
15
+ transaction_id: string;
16
+ order_id: string;
17
+ }
18
+ export interface CashPlusPaymentResponse {
19
+ success: boolean;
20
+ transaction_id: string;
21
+ cashplus_token: string;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=payment.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.interface.js","sourceRoot":"","sources":["../../src/interfaces/payment.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { CurrencyCode } from '../enums';
2
+ export interface CustomerInfo {
3
+ name?: string;
4
+ address?: string;
5
+ zip_code?: string;
6
+ city?: string;
7
+ state?: string;
8
+ country_code?: string;
9
+ phone?: string;
10
+ email?: string;
11
+ }
12
+ export interface CreateTokenParams {
13
+ orderId: string;
14
+ amount: number;
15
+ currency: CurrencyCode | string;
16
+ customerIp: string;
17
+ successUrl: string;
18
+ errorUrl?: string;
19
+ customer?: CustomerInfo;
20
+ metadata?: Record<string, string>;
21
+ }
22
+ export interface TokenResponse {
23
+ token: {
24
+ id: string;
25
+ };
26
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=token.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.interface.js","sourceRoot":"","sources":["../../src/interfaces/token.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export interface Transaction {
2
+ id: string;
3
+ order_id: string;
4
+ amount: number;
5
+ currency: string;
6
+ status: string;
7
+ created_at: string;
8
+ updated_at: string;
9
+ metadata?: Record<string, string>;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=transaction.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.interface.js","sourceRoot":"","sources":["../../src/interfaces/transaction.interface.ts"],"names":[],"mappings":""}