@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 CHANGED
@@ -9,11 +9,23 @@ Production-ready Node.js SDK for [YouCanPay](https://youcanpay.com) - Morocco's
9
9
 
10
10
  Works with **any Node.js framework** (Express, Fastify, Hapi) and has first-class **NestJS integration**.
11
11
 
12
+ ## Features
13
+
14
+ - **Credit Card Payments** - Redirect to YouCanPay checkout or direct server-side processing
15
+ - **CashPlus Payments** - Generate payment codes for cash payments at 1,800+ CashPlus locations in Morocco
16
+ - **Webhook Handling** - Secure webhook verification and parsing
17
+ - **NestJS Integration** - First-class module, guards, and pipes
18
+ - **TypeScript** - Full type safety and IntelliSense support
19
+ - **Validation** - Built-in input validation and sanitization
20
+
12
21
  ## Table of Contents
13
22
 
14
23
  - [Installation](#installation)
15
24
  - [Environment Setup](#environment-setup)
16
25
  - [Quick Start](#quick-start)
26
+ - [Payment Methods](#payment-methods)
27
+ - [Credit Card](#credit-card-payment)
28
+ - [CashPlus](#cashplus-payment)
17
29
  - [Complete Payment Flow](#complete-payment-flow)
18
30
  - [API Reference](#api-reference)
19
31
  - [Webhook Handling](#webhook-handling)
@@ -177,6 +189,62 @@ export class PaymentsService {
177
189
 
178
190
  ---
179
191
 
192
+ ## Payment Methods
193
+
194
+ ### Credit Card Payment
195
+
196
+ Redirect users to YouCanPay's secure checkout page:
197
+
198
+ ```typescript
199
+ // 1. Create token
200
+ const { token } = await client.createToken({
201
+ amount: 50000, // 500.00 MAD
202
+ currency: CurrencyCode.MAD,
203
+ customerIp: '192.168.1.1',
204
+ successUrl: 'https://myapp.com/success',
205
+ errorUrl: 'https://myapp.com/error',
206
+ });
207
+
208
+ // 2. Redirect to checkout
209
+ const paymentUrl = client.getPaymentUrl(token.id);
210
+ // => https://youcanpay.com/payment/token-id?lang=fr
211
+ ```
212
+
213
+ ### CashPlus Payment
214
+
215
+ Generate a payment code for cash payments at 1,800+ CashPlus locations in Morocco:
216
+
217
+ ```typescript
218
+ // 1. Create token (same as card)
219
+ const { token } = await client.createToken({
220
+ amount: 50000,
221
+ currency: CurrencyCode.MAD,
222
+ customerIp: '192.168.1.1',
223
+ successUrl: 'https://myapp.com/success',
224
+ errorUrl: 'https://myapp.com/error',
225
+ });
226
+
227
+ // 2. Initialize CashPlus payment
228
+ const cashplus = await client.payWithCashPlus({
229
+ tokenId: token.id,
230
+ });
231
+
232
+ // 3. Display the code to customer
233
+ console.log('Payment Code:', cashplus.token); // e.g., "cp862603980"
234
+ console.log('Transaction ID:', cashplus.transaction_id);
235
+
236
+ // Customer takes this code to any CashPlus location to pay in cash
237
+ ```
238
+
239
+ **CashPlus Flow:**
240
+ 1. Customer sees payment code (e.g., `cp862603980`)
241
+ 2. Customer visits any CashPlus location in Morocco
242
+ 3. Customer provides the code and pays in cash
243
+ 4. YouCanPay sends webhook notification to your server
244
+ 5. Your app confirms the payment
245
+
246
+ ---
247
+
180
248
  ## Complete Payment Flow
181
249
 
182
250
  ```
@@ -371,14 +439,33 @@ const result = await client.payWithCreditCard({
371
439
 
372
440
  #### `payWithCashPlus(params): Promise<CashPlusPaymentResponse>`
373
441
 
374
- Initialize CashPlus payment.
442
+ Initialize CashPlus payment. Returns a payment code that customers can use at any CashPlus location in Morocco.
375
443
 
376
444
  ```typescript
377
445
  const result = await client.payWithCashPlus({
378
- tokenId: string,
446
+ tokenId: string, // Token from createToken()
379
447
  });
448
+
449
+ // Response
450
+ {
451
+ transaction_id: string,
452
+ token: string, // Payment code for CashPlus location (e.g., "cp115705252")
453
+ success?: boolean,
454
+ amount?: number, // Amount in centimes
455
+ currency?: string, // Currency code
456
+ order_id?: string, // Order reference
457
+ expires_at?: string, // Token expiration (ISO date)
458
+ message?: string, // Message from YouCanPay
459
+ }
380
460
  ```
381
461
 
462
+ **CashPlus Payment Flow:**
463
+ 1. Create a payment token with `createToken()`
464
+ 2. Initialize CashPlus payment with `payWithCashPlus()`
465
+ 3. Display the `cashplus_token` to the customer
466
+ 4. Customer visits any CashPlus location and provides the code
467
+ 5. Once paid, YouCanPay sends a webhook notification
468
+
382
469
  ### Standalone Functions
383
470
 
384
471
  #### Webhook Functions
@@ -419,6 +506,13 @@ import {
419
506
  validateOrderId,
420
507
  validateIP,
421
508
  validateEmail,
509
+ validateTokenId,
510
+ validateTimeout,
511
+ validateClientOptions,
512
+ validateCardNumber,
513
+ validateExpiryDate,
514
+ validateCVV,
515
+ validateCardHolderName,
422
516
  validatePaymentInput,
423
517
  } from '@wiicode/youcanpay-sdk';
424
518
 
@@ -432,6 +526,13 @@ validateCurrency('GBP'); // { valid: false, error: 'Currency mus
432
526
 
433
527
  validateRedirectURL('https://app.com'); // { valid: true }
434
528
  validateRedirectURL('javascript:...'); // { valid: false }
529
+ validateTokenId('tok_123'); // { valid: true }
530
+ validateTimeout(30000); // { valid: true }
531
+ validateClientOptions({ privateKey: 'pri_x', publicKey: 'pub_x' }); // { valid: true }
532
+ validateCardNumber('4111111111111111'); // { valid: true }
533
+ validateExpiryDate('12/30'); // { valid: true }
534
+ validateCVV('123'); // { valid: true }
535
+ validateCardHolderName('Jane Doe'); // { valid: true }
435
536
 
436
537
  // Validate all at once
437
538
  const result = validatePaymentInput({
@@ -513,7 +614,7 @@ console.log(webhook.transactionId); // 'txn-uuid'
513
614
  console.log(webhook.orderId); // 'your-order-id'
514
615
  console.log(webhook.amount); // 50000
515
616
  console.log(webhook.isSuccess); // true
516
- console.log(webhook.status); // 'paid' | 'failed' | 'refunded'
617
+ console.log(webhook.status); // 'paid' | 'failed' | 'refunded' | 'unknown'
517
618
  console.log(webhook.eventName); // 'transaction.paid'
518
619
  ```
519
620
 
@@ -530,6 +631,7 @@ import {
530
631
  } from '@nestjs/common';
531
632
  import {
532
633
  ParseWebhookPipe,
634
+ ParsedWebhook,
533
635
  ParsedWebhookPayload,
534
636
  verifyWebhookSecret,
535
637
  } from '@wiicode/youcanpay-sdk';
@@ -559,6 +661,15 @@ export class PaymentsController {
559
661
  }
560
662
  ```
561
663
 
664
+ You can also inject the parsed payload directly:
665
+
666
+ ```typescript
667
+ @Post('webhook')
668
+ handleWebhook(@ParsedWebhook() webhook: ParsedWebhookPayload) {
669
+ return { orderId: webhook.orderId };
670
+ }
671
+ ```
672
+
562
673
  ### Webhook Security Checklist
563
674
 
564
675
  - [ ] Add secret to webhook URL: `https://myapp.com/webhook?secret=xxx`
@@ -883,6 +994,15 @@ if (!validation.valid) {
883
994
  6. **HTTPS only** - Never use HTTP in production
884
995
  7. **Sanitize inputs** - Use `sanitizeString()` for user inputs
885
996
  8. **URL whitelist** - Validate redirect URLs against allowed domains
997
+ 9. **Pre-validate outbound requests** - The SDK rejects invalid client, token, and card input before any network call
998
+
999
+ ### Production Checklist
1000
+
1001
+ - Complete a full sandbox checkout plus webhook round-trip before enabling live keys.
1002
+ - Restrict redirect URLs to your own domains with `validateRedirectURL(..., { allowedDomains: [...] })`.
1003
+ - Store webhook event IDs in your application database and enforce idempotency there.
1004
+ - Monitor failed `getTransaction()` and webhook-verification paths.
1005
+ - Rotate API keys and webhook secrets regularly.
886
1006
 
887
1007
  ---
888
1008
 
@@ -898,7 +1018,7 @@ try {
898
1018
  } catch (error) {
899
1019
  if (error instanceof YouCanPayError) {
900
1020
  console.log(error.code); // ErrorCodes.VALIDATION_ERROR
901
- console.log(error.status); // 422
1021
+ console.log(error.statusCode); // 422
902
1022
  console.log(error.message); // "The amount field is required"
903
1023
  console.log(error.details); // { amount: ['required'] }
904
1024
  }
@@ -925,7 +1045,7 @@ export class YouCanPayExceptionFilter implements ExceptionFilter {
925
1045
  catch(exception: YouCanPayError, host: ArgumentsHost) {
926
1046
  const response = host.switchToHttp().getResponse();
927
1047
 
928
- response.status(exception.status || 500).json({
1048
+ response.status(exception.statusCode || 500).json({
929
1049
  error: exception.code,
930
1050
  message: exception.message,
931
1051
  });
package/dist/client.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { Lang } from './enums';
2
- import { YouCanPayOptions, CreateTokenParams, TokenResponse, PayCreditCardParams, PaymentResponse, PayCashPlusParams, CashPlusPaymentResponse, Transaction } from './interfaces';
2
+ import { YouCanPayOptions, CreateTokenParams, TokenResponse, PayCreditCardParams, PaymentResponse, PayCashPlusParams, CashPlusPaymentResponse, Transaction, CreateRefundParams, Refund, ListRefundsParams, RefundListResponse } from './interfaces';
3
3
  export declare class YouCanPayClient {
4
4
  private readonly http;
5
+ private readonly transactionHttp;
5
6
  private readonly sandbox;
6
7
  private readonly privateKey;
7
8
  private readonly publicKey;
@@ -12,6 +13,10 @@ export declare class YouCanPayClient {
12
13
  payWithCreditCard(params: PayCreditCardParams): Promise<PaymentResponse>;
13
14
  payWithCashPlus(params: PayCashPlusParams): Promise<CashPlusPaymentResponse>;
14
15
  getTransaction(transactionId: string): Promise<Transaction>;
16
+ createRefund(params: CreateRefundParams): Promise<Refund>;
17
+ getRefund(refundId: string): Promise<Refund>;
18
+ listRefunds(params?: ListRefundsParams): Promise<RefundListResponse>;
15
19
  verifyWebhook(payload: unknown): boolean;
16
20
  private handleError;
21
+ private assertValid;
17
22
  }
package/dist/client.js CHANGED
@@ -10,8 +10,15 @@ const constants_1 = require("./constants");
10
10
  const errors_1 = require("./errors");
11
11
  const enums_1 = require("./enums");
12
12
  const logger_1 = require("./logging/logger");
13
+ const webhook_1 = require("./security/webhook");
14
+ const validators_1 = require("./security/validators");
13
15
  class YouCanPayClient {
14
16
  constructor(options) {
17
+ this.assertValid((0, validators_1.validateClientOptions)({
18
+ privateKey: options.privateKey,
19
+ publicKey: options.publicKey,
20
+ timeout: options.timeout,
21
+ }));
15
22
  this.sandbox = options.sandbox ?? false;
16
23
  this.privateKey = options.privateKey;
17
24
  this.publicKey = options.publicKey;
@@ -23,10 +30,23 @@ class YouCanPayClient {
23
30
  'Content-Type': 'application/x-www-form-urlencoded',
24
31
  },
25
32
  });
33
+ this.transactionHttp = axios_1.default.create({
34
+ baseURL: this.sandbox ? constants_1.YOUCANPAY_SANDBOX_TRANSACTION_API_URL : constants_1.YOUCANPAY_TRANSACTION_API_URL,
35
+ timeout: options.timeout ?? 30000,
36
+ });
26
37
  }
27
38
  async createToken(params) {
28
39
  const startTime = Date.now();
29
40
  const orderId = params.orderId ?? (0, crypto_1.randomUUID)();
41
+ this.assertValid((0, validators_1.validatePaymentInput)({
42
+ amount: params.amount,
43
+ currency: params.currency,
44
+ orderId,
45
+ customerIp: params.customerIp,
46
+ successUrl: params.successUrl,
47
+ errorUrl: params.errorUrl,
48
+ customerEmail: params.customer?.email,
49
+ }));
30
50
  const body = new URLSearchParams();
31
51
  body.append('pri_key', this.privateKey);
32
52
  body.append('pub_key', this.publicKey);
@@ -78,6 +98,11 @@ class YouCanPayClient {
78
98
  }
79
99
  async payWithCreditCard(params) {
80
100
  const startTime = Date.now();
101
+ this.assertValid((0, validators_1.validateTokenId)(params.tokenId));
102
+ this.assertValid((0, validators_1.validateCardNumber)(params.creditCard));
103
+ this.assertValid((0, validators_1.validateExpiryDate)(params.expireDate));
104
+ this.assertValid((0, validators_1.validateCVV)(params.cvv));
105
+ this.assertValid((0, validators_1.validateCardHolderName)(params.cardHolderName));
81
106
  const body = new URLSearchParams();
82
107
  body.append('pri_key', this.privateKey);
83
108
  body.append('pub_key', this.publicKey);
@@ -99,13 +124,21 @@ class YouCanPayClient {
99
124
  }
100
125
  async payWithCashPlus(params) {
101
126
  const startTime = Date.now();
127
+ this.assertValid((0, validators_1.validateTokenId)(params.tokenId));
102
128
  const body = new URLSearchParams();
103
129
  body.append('pri_key', this.privateKey);
104
130
  body.append('pub_key', this.publicKey);
105
131
  body.append('token_id', params.tokenId);
132
+ body.append('payment_method[type]', 'cashplus');
106
133
  try {
107
134
  const response = await this.http.post('/cashplus/init', body);
108
- const data = response.data;
135
+ const rawData = response.data;
136
+ const cashplusToken = typeof rawData.token === 'string' ? rawData.token : rawData.token?.id;
137
+ const data = {
138
+ ...rawData,
139
+ token: cashplusToken,
140
+ transaction_id: rawData.transaction_id || '',
141
+ };
109
142
  await this.logger.log('payWithCashPlus', { tokenId: params.tokenId }, data, 'success', Date.now() - startTime);
110
143
  return data;
111
144
  }
@@ -116,8 +149,9 @@ class YouCanPayClient {
116
149
  }
117
150
  async getTransaction(transactionId) {
118
151
  const startTime = Date.now();
152
+ this.assertValid((0, validators_1.validateTokenId)(transactionId));
119
153
  try {
120
- const response = await this.http.get(`/transactions/${transactionId}`, {
154
+ const response = await this.transactionHttp.get(`/transactions/${transactionId}`, {
121
155
  params: { pri_key: this.privateKey },
122
156
  });
123
157
  const data = response.data;
@@ -129,14 +163,79 @@ class YouCanPayClient {
129
163
  throw this.handleError(error);
130
164
  }
131
165
  }
166
+ async createRefund(params) {
167
+ const startTime = Date.now();
168
+ if (!params.transactionId) {
169
+ throw new errors_1.YouCanPayError('Transaction ID is required', errors_1.ErrorCodes.VALIDATION_ERROR);
170
+ }
171
+ try {
172
+ const response = await this.transactionHttp.post('/refunds', {
173
+ transaction_id: params.transactionId,
174
+ ...(params.amount !== undefined && { amount: params.amount }),
175
+ ...(params.reason && { reason: params.reason }),
176
+ }, {
177
+ params: { pri_key: this.privateKey },
178
+ headers: { 'Content-Type': 'application/json' },
179
+ });
180
+ const data = response.data;
181
+ await this.logger.log('createRefund', { transactionId: params.transactionId, amount: params.amount, reason: params.reason }, data, 'success', Date.now() - startTime);
182
+ return data;
183
+ }
184
+ catch (error) {
185
+ await this.logger.log('createRefund', { transactionId: params.transactionId }, undefined, 'error', Date.now() - startTime);
186
+ throw this.handleError(error);
187
+ }
188
+ }
189
+ async getRefund(refundId) {
190
+ const startTime = Date.now();
191
+ if (!refundId) {
192
+ throw new errors_1.YouCanPayError('Refund ID is required', errors_1.ErrorCodes.VALIDATION_ERROR);
193
+ }
194
+ try {
195
+ const response = await this.transactionHttp.get(`/refunds/${refundId}`, {
196
+ params: { pri_key: this.privateKey },
197
+ });
198
+ const data = response.data;
199
+ await this.logger.log('getRefund', { refundId }, data, 'success', Date.now() - startTime);
200
+ return data;
201
+ }
202
+ catch (error) {
203
+ await this.logger.log('getRefund', { refundId }, undefined, 'error', Date.now() - startTime);
204
+ throw this.handleError(error);
205
+ }
206
+ }
207
+ async listRefunds(params) {
208
+ const startTime = Date.now();
209
+ try {
210
+ const response = await this.transactionHttp.get('/refunds', {
211
+ params: {
212
+ pri_key: this.privateKey,
213
+ ...params,
214
+ },
215
+ });
216
+ const data = response.data;
217
+ await this.logger.log('listRefunds', { ...params }, data, 'success', Date.now() - startTime);
218
+ return data;
219
+ }
220
+ catch (error) {
221
+ await this.logger.log('listRefunds', { ...params }, undefined, 'error', Date.now() - startTime);
222
+ throw this.handleError(error);
223
+ }
224
+ }
132
225
  verifyWebhook(payload) {
133
226
  if (!payload || typeof payload !== 'object') {
134
227
  return false;
135
228
  }
229
+ try {
230
+ (0, webhook_1.parseWebhookPayload)(payload);
231
+ return true;
232
+ }
233
+ catch {
234
+ }
136
235
  const p = payload;
137
236
  return (typeof p['transaction_id'] === 'string' &&
138
237
  typeof p['order_id'] === 'string' &&
139
- typeof p['amount'] === 'number' &&
238
+ (typeof p['amount'] === 'number' || typeof p['amount'] === 'string') &&
140
239
  typeof p['status'] === 'string');
141
240
  }
142
241
  handleError(error) {
@@ -168,6 +267,11 @@ class YouCanPayClient {
168
267
  const message = error instanceof Error ? error.message : 'An unknown error occurred';
169
268
  return new errors_1.YouCanPayError(message, errors_1.ErrorCodes.UNKNOWN_ERROR);
170
269
  }
270
+ assertValid(result) {
271
+ if (!result.valid) {
272
+ throw new errors_1.YouCanPayError(result.error ?? 'Invalid input', errors_1.ErrorCodes.VALIDATION_ERROR);
273
+ }
274
+ }
171
275
  }
172
276
  exports.YouCanPayClient = YouCanPayClient;
173
277
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@ export { YouCanPayModule } from './nestjs/youcanpay.module';
3
3
  export { YouCanPayService } from './nestjs/youcanpay.service';
4
4
  export { InjectYouCanPay } from './nestjs/decorators';
5
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';
6
+ export { ParseWebhookPipe, ParsedWebhook } from './nestjs/pipes';
7
+ export { parseWebhookPayload, verifyWebhookSecret, verifyWebhookHMAC, createWebhookSignature, WebhookParseError, WebhookVerifyError, validateAmount, validateCurrency, validateRedirectURL, validateOrderId, validateIP, validateEmail, validateTokenId, validateTimeout, validateClientOptions, validateCardNumber, validateExpiryDate, validateCVV, validateCardHolderName, validatePaymentInput, sanitizeString, toCentimes, fromCentimes, formatAmount, SUPPORTED_CURRENCIES, type YouCanPayRawWebhook, type ParsedWebhookPayload, type WebhookVerifyOptions, type SupportedCurrency, type ValidationResult, type ClientOptionsValidationInput, } from './security';
8
8
  export * from './interfaces';
9
9
  export * from './enums';
10
10
  export * from './errors';
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
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;
17
+ exports.YouCanPayLogger = 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 = exports.ParsedWebhook = exports.ParseWebhookPipe = exports.WEBHOOK_SECRET_KEY = exports.WebhookOptions = exports.WebhookGuard = exports.InjectYouCanPay = exports.YouCanPayService = exports.YouCanPayModule = exports.YouCanPayClient = void 0;
18
18
  var client_1 = require("./client");
19
19
  Object.defineProperty(exports, "YouCanPayClient", { enumerable: true, get: function () { return client_1.YouCanPayClient; } });
20
20
  var youcanpay_module_1 = require("./nestjs/youcanpay.module");
@@ -29,6 +29,7 @@ Object.defineProperty(exports, "WebhookOptions", { enumerable: true, get: functi
29
29
  Object.defineProperty(exports, "WEBHOOK_SECRET_KEY", { enumerable: true, get: function () { return guards_1.WEBHOOK_SECRET_KEY; } });
30
30
  var pipes_1 = require("./nestjs/pipes");
31
31
  Object.defineProperty(exports, "ParseWebhookPipe", { enumerable: true, get: function () { return pipes_1.ParseWebhookPipe; } });
32
+ Object.defineProperty(exports, "ParsedWebhook", { enumerable: true, get: function () { return pipes_1.ParsedWebhook; } });
32
33
  var security_1 = require("./security");
33
34
  Object.defineProperty(exports, "parseWebhookPayload", { enumerable: true, get: function () { return security_1.parseWebhookPayload; } });
34
35
  Object.defineProperty(exports, "verifyWebhookSecret", { enumerable: true, get: function () { return security_1.verifyWebhookSecret; } });
@@ -42,6 +43,13 @@ Object.defineProperty(exports, "validateRedirectURL", { enumerable: true, get: f
42
43
  Object.defineProperty(exports, "validateOrderId", { enumerable: true, get: function () { return security_1.validateOrderId; } });
43
44
  Object.defineProperty(exports, "validateIP", { enumerable: true, get: function () { return security_1.validateIP; } });
44
45
  Object.defineProperty(exports, "validateEmail", { enumerable: true, get: function () { return security_1.validateEmail; } });
46
+ Object.defineProperty(exports, "validateTokenId", { enumerable: true, get: function () { return security_1.validateTokenId; } });
47
+ Object.defineProperty(exports, "validateTimeout", { enumerable: true, get: function () { return security_1.validateTimeout; } });
48
+ Object.defineProperty(exports, "validateClientOptions", { enumerable: true, get: function () { return security_1.validateClientOptions; } });
49
+ Object.defineProperty(exports, "validateCardNumber", { enumerable: true, get: function () { return security_1.validateCardNumber; } });
50
+ Object.defineProperty(exports, "validateExpiryDate", { enumerable: true, get: function () { return security_1.validateExpiryDate; } });
51
+ Object.defineProperty(exports, "validateCVV", { enumerable: true, get: function () { return security_1.validateCVV; } });
52
+ Object.defineProperty(exports, "validateCardHolderName", { enumerable: true, get: function () { return security_1.validateCardHolderName; } });
45
53
  Object.defineProperty(exports, "validatePaymentInput", { enumerable: true, get: function () { return security_1.validatePaymentInput; } });
46
54
  Object.defineProperty(exports, "sanitizeString", { enumerable: true, get: function () { return security_1.sanitizeString; } });
47
55
  Object.defineProperty(exports, "toCentimes", { enumerable: true, get: function () { return security_1.toCentimes; } });
package/dist/index.js.map CHANGED
@@ -1 +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"}
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,wCAAiE;AAAxD,yGAAA,gBAAgB,OAAA;AAAE,sGAAA,aAAa,OAAA;AAGxC,uCAmCoB;AAjClB,+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,2GAAA,eAAe,OAAA;AACf,2GAAA,eAAe,OAAA;AACf,iHAAA,qBAAqB,OAAA;AACrB,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,uGAAA,WAAW,OAAA;AACX,kHAAA,sBAAsB,OAAA;AACtB,gHAAA,oBAAoB,OAAA;AACpB,0GAAA,cAAc,OAAA;AACd,sGAAA,UAAU,OAAA;AACV,wGAAA,YAAY,OAAA;AACZ,wGAAA,YAAY,OAAA;AACZ,gHAAA,oBAAoB,OAAA;AAWtB,+CAA6B;AAG7B,0CAAwB;AAGxB,2CAAyB;AAGzB,qCAAwF;AAA/E,0GAAA,eAAe,OAAA;AAGxB,8CAA4B"}
@@ -3,3 +3,4 @@ export * from './token.interface';
3
3
  export * from './payment.interface';
4
4
  export * from './transaction.interface';
5
5
  export * from './webhook.interface';
6
+ export * from './refund.interface';
@@ -19,4 +19,5 @@ __exportStar(require("./token.interface"), exports);
19
19
  __exportStar(require("./payment.interface"), exports);
20
20
  __exportStar(require("./transaction.interface"), exports);
21
21
  __exportStar(require("./webhook.interface"), exports);
22
+ __exportStar(require("./refund.interface"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,oDAAkC;AAClC,sDAAoC;AACpC,0DAAwC;AACxC,sDAAoC;AACpC,qDAAmC"}
@@ -15,8 +15,25 @@ export interface PaymentResponse {
15
15
  transaction_id: string;
16
16
  order_id: string;
17
17
  }
18
+ export interface CashPlusApiResponse {
19
+ success?: boolean;
20
+ transaction_id?: string;
21
+ token: string | {
22
+ id: string;
23
+ };
24
+ amount?: number;
25
+ currency?: string;
26
+ order_id?: string;
27
+ expires_at?: string;
28
+ message?: string;
29
+ }
18
30
  export interface CashPlusPaymentResponse {
19
- success: boolean;
31
+ success?: boolean;
20
32
  transaction_id: string;
21
- cashplus_token: string;
33
+ token: string;
34
+ amount?: number;
35
+ currency?: string;
36
+ order_id?: string;
37
+ expires_at?: string;
38
+ message?: string;
22
39
  }
@@ -0,0 +1,44 @@
1
+ export declare enum RefundReason {
2
+ DUPLICATE = "duplicate",
3
+ FRAUDULENT = "fraudulent",
4
+ REQUESTED_BY_CUSTOMER = "requested_by_customer",
5
+ OTHER = "other"
6
+ }
7
+ export interface CreateRefundParams {
8
+ transactionId: string;
9
+ amount?: number;
10
+ reason?: RefundReason | string;
11
+ }
12
+ export interface RefundAmount {
13
+ amount: number;
14
+ currency: string;
15
+ localized: string;
16
+ }
17
+ export interface Refund {
18
+ id: string;
19
+ transaction_id: string;
20
+ amount: RefundAmount;
21
+ amount_in_mad: number;
22
+ status: number;
23
+ status_text: string;
24
+ reason: number;
25
+ reason_text: string;
26
+ created_at: string;
27
+ }
28
+ export interface ListRefundsParams {
29
+ page?: number;
30
+ limit?: number;
31
+ status?: number;
32
+ transaction_id?: string;
33
+ sort_by?: 'amount' | 'status' | 'reason' | 'created_at';
34
+ sort_order?: 'asc' | 'desc';
35
+ }
36
+ export interface RefundListResponse {
37
+ data: Refund[];
38
+ meta?: {
39
+ current_page: number;
40
+ last_page: number;
41
+ per_page: number;
42
+ total: number;
43
+ };
44
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RefundReason = void 0;
4
+ var RefundReason;
5
+ (function (RefundReason) {
6
+ RefundReason["DUPLICATE"] = "duplicate";
7
+ RefundReason["FRAUDULENT"] = "fraudulent";
8
+ RefundReason["REQUESTED_BY_CUSTOMER"] = "requested_by_customer";
9
+ RefundReason["OTHER"] = "other";
10
+ })(RefundReason || (exports.RefundReason = RefundReason = {}));
11
+ //# sourceMappingURL=refund.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.interface.js","sourceRoot":"","sources":["../../src/interfaces/refund.interface.ts"],"names":[],"mappings":";;;AAGA,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,+DAA+C,CAAA;IAC/C,+BAAe,CAAA;AACjB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB"}
@@ -4,7 +4,9 @@ export interface Transaction {
4
4
  amount: number;
5
5
  currency: string;
6
6
  status: string;
7
+ payment_method?: string;
7
8
  created_at: string;
8
9
  updated_at: string;
9
10
  metadata?: Record<string, string>;
10
11
  }
12
+ export type TransactionStatus = 'pending' | 'paid' | 'failed' | 'refunded' | 'cancelled';
@@ -1,4 +1,4 @@
1
- export type LogAction = 'createToken' | 'payWithCreditCard' | 'payWithCashPlus' | 'webhook' | 'getTransaction';
1
+ export type LogAction = 'createToken' | 'payWithCreditCard' | 'payWithCashPlus' | 'webhook' | 'getTransaction' | 'createRefund' | 'getRefund' | 'listRefunds';
2
2
  export type LogStatus = 'success' | 'error';
3
3
  export type LogStorage = 'database' | 'custom' | 'none';
4
4
  export interface YouCanPayLogEntry {
@@ -3,4 +3,4 @@ import { ParsedWebhookPayload } from '../../security/webhook';
3
3
  export declare class ParseWebhookPipe implements PipeTransform<unknown, ParsedWebhookPayload> {
4
4
  transform(value: unknown): ParsedWebhookPayload;
5
5
  }
6
- export declare function ParsedWebhook(): ParameterDecorator;
6
+ export declare const ParsedWebhook: (...dataOrPipes: unknown[]) => ParameterDecorator;