@mostajs/payment 0.6.0 → 0.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"auto-register.d.ts","sourceRoot":"","sources":["../../src/core/auto-register.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAC1B,4FAA4F;IAC5F,UAAU,CAAC,EAAE,YAAY,CAAA;IACzB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,EAAE,CAoBjF;AAQD,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,EAAE,CAM/E;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,IAAI,IAAI,CAAqB"}
1
+ {"version":3,"file":"auto-register.d.ts","sourceRoot":"","sources":["../../src/core/auto-register.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAC1B,4FAA4F;IAC5F,UAAU,CAAC,EAAE,YAAY,CAAA;IACzB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAkCD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,EAAE,CAoBjF;AAQD,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,EAAE,CAM/E;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,IAAI,IAAI,CAAqB"}
@@ -18,6 +18,8 @@ import { createChargilyProvider } from '../providers/chargily.provider.js';
18
18
  import { createSatimProvider } from '../providers/satim.provider.js';
19
19
  import { createPayPalProvider } from '../providers/paypal.provider.js';
20
20
  import { createManualProvider } from '../providers/manual.provider.js';
21
+ import { createSlickPayProvider } from '../providers/slickpay.provider.js';
22
+ import { createGuiddiniProvider } from '../providers/guiddini.provider.js';
21
23
  /** Indique si l'environnement contient de quoi instancier ce provider. */
22
24
  function isConfigured(name) {
23
25
  switch (name) {
@@ -25,6 +27,8 @@ function isConfigured(name) {
25
27
  case 'chargily': return !!(getEnv('CHARGILY_SECRET_KEY') ?? getEnv('CHARGILY_API_KEY'));
26
28
  case 'satim': return !!getEnv('SATIM_MERCHANT_ID');
27
29
  case 'paypal': return !!getEnv('PAYPAL_CLIENT_ID');
30
+ case 'slickpay': return !!getEnv('SLICKPAY_PUBLIC_KEY');
31
+ case 'guiddini': return !!(getEnv('GUIDDINI_APP_KEY') && getEnv('GUIDDINI_APP_SECRET'));
28
32
  case 'manual': return true; // aucun secret requis
29
33
  default: return false;
30
34
  }
@@ -35,11 +39,16 @@ function instantiate(name) {
35
39
  case 'chargily': return createChargilyProvider();
36
40
  case 'satim': return createSatimProvider();
37
41
  case 'paypal': return createPayPalProvider();
42
+ case 'slickpay': return createSlickPayProvider();
43
+ case 'guiddini': return createGuiddiniProvider();
38
44
  case 'manual': return createManualProvider();
39
45
  default: return null;
40
46
  }
41
47
  }
42
- const DEFAULT_ORDER = ['chargily', 'satim', 'paypal', 'stripe'];
48
+ // Ordre = résolution par devise (spécifiques DZD avant Stripe joker). Les
49
+ // agrégateurs DZ (chargily/slickpay/guiddini) et SATIM partagent DZD : le 1er
50
+ // configuré gagne pour getProviderForCurrency ; sinon cibler via providerName.
51
+ const DEFAULT_ORDER = ['chargily', 'slickpay', 'guiddini', 'satim', 'paypal', 'stripe'];
43
52
  /**
44
53
  * Enregistre dans le registre les providers configurés via l'environnement
45
54
  * (cascade `MOSTA_ENV` de `@mostajs/config`). Retourne la liste des noms
@@ -1 +1 @@
1
- {"version":3,"file":"auto-register.js","sourceRoot":"","sources":["../../src/core/auto-register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-register.js","sourceRoot":"","sources":["../../src/core/auto-register.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { PaymentProvider, WebhookEvent } from '../core/provider.interface.js';
2
- export type ProviderName = 'chargily' | 'stripe' | 'satim' | 'paypal' | 'manual';
2
+ export type ProviderName = 'chargily' | 'stripe' | 'satim' | 'paypal' | 'manual' | 'slickpay' | 'guiddini';
3
3
  /** Liste exhaustive des noms de provider supportés. À étendre dans ce
4
4
  * module quand un nouveau provider est ajouté → tous les consumers
5
5
  * bénéficient automatiquement. */
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/webhook-helpers.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAElF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEhF;;mCAEmC;AACnC,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAAwD,CAAA;AAE3G,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAElE;AAID;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAOtE,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,QAAQ,GAAE,YAAuB,GAChC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAInD;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAsBjH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAQrE;AAED,MAAM,WAAW,yBAAyB;IACxC;iEAC6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,uBAAuB;IACvB,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5F;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAgBjH;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAOxD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAS1D;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAK5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CASjE"}
1
+ {"version":3,"file":"webhook-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/webhook-helpers.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAElF,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAA;AAE1G;;mCAEmC;AACnC,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAAgF,CAAA;AAEnI,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAElE;AAID;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAOtE,CAAA;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,QAAQ,GAAE,YAAuB,GAChC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAInD;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CA2BjH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAUrE;AAED,MAAM,WAAW,yBAAyB;IACxC;iEAC6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,uBAAuB;IACvB,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACjC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,WAAW,GAAG,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5F;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAgBjH;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAOxD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAS1D;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAK5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CASjE"}
@@ -11,10 +11,12 @@ import { createStripeProvider } from '../providers/stripe.provider.js';
11
11
  import { createSatimProvider } from '../providers/satim.provider.js';
12
12
  import { createPayPalProvider } from '../providers/paypal.provider.js';
13
13
  import { createManualProvider } from '../providers/manual.provider.js';
14
+ import { createSlickPayProvider } from '../providers/slickpay.provider.js';
15
+ import { createGuiddiniProvider } from '../providers/guiddini.provider.js';
14
16
  /** Liste exhaustive des noms de provider supportés. À étendre dans ce
15
17
  * module quand un nouveau provider est ajouté → tous les consumers
16
18
  * bénéficient automatiquement. */
17
- export const KNOWN_PROVIDERS = ['chargily', 'stripe', 'satim', 'paypal', 'manual'];
19
+ export const KNOWN_PROVIDERS = ['chargily', 'stripe', 'satim', 'paypal', 'manual', 'slickpay', 'guiddini'];
18
20
  /** Type-guard runtime — vrai si `name` est un ProviderName valide. */
19
21
  export function isKnownProvider(name) {
20
22
  return KNOWN_PROVIDERS.includes(name);
@@ -70,6 +72,11 @@ export function pickSignatureHeader(headers, providerName) {
70
72
  return get('paypal-transmission-sig') || '';
71
73
  case 'manual':
72
74
  return get('x-signature') || '';
75
+ case 'slickpay':
76
+ case 'guiddini':
77
+ // Agrégateurs SATIM : confirmation par retour + interrogation statut
78
+ // (pas de webhook signé) → pas de header signature requis.
79
+ return '';
73
80
  default:
74
81
  return '';
75
82
  }
@@ -85,6 +92,8 @@ export function getProviderByName(name) {
85
92
  case 'satim': return createSatimProvider();
86
93
  case 'paypal': return createPayPalProvider();
87
94
  case 'manual': return createManualProvider();
95
+ case 'slickpay': return createSlickPayProvider();
96
+ case 'guiddini': return createGuiddiniProvider();
88
97
  }
89
98
  }
90
99
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-helpers.js","sourceRoot":"","sources":["../../src/lib/webhook-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-helpers.js","sourceRoot":"","sources":["../../src/lib/webhook-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { CheckoutParams, CheckoutResult, WebhookEvent } from '../core/provider.interface.js';
2
+ import { AbstractPaymentProvider } from '../core/abstract-provider.js';
3
+ export interface GuiddiniConfig {
4
+ appKey: string;
5
+ appSecret: string;
6
+ testMode?: boolean;
7
+ /** Base API (sans slash final). Pilotable par env. */
8
+ baseUrl?: string;
9
+ /** Chemin d'initiation de paiement. Défaut '/transactions/initiate'. */
10
+ initiatePath?: string;
11
+ /** Chemin de statut (avec {id}). Défaut '/transactions'. */
12
+ statusPath?: string;
13
+ returnUrl?: string;
14
+ }
15
+ export declare class GuiddiniProvider extends AbstractPaymentProvider {
16
+ private config;
17
+ readonly name = "guiddini";
18
+ readonly supportedCurrencies: string[];
19
+ readonly supportedMethods: string[];
20
+ private baseUrl;
21
+ private initiatePath;
22
+ private statusPath;
23
+ constructor(config: GuiddiniConfig);
24
+ private headers;
25
+ protected doCheckout(params: CheckoutParams): Promise<CheckoutResult>;
26
+ /** Statut d'une transaction Guiddini par id. */
27
+ getTransaction(id: string): Promise<Record<string, unknown>>;
28
+ /** Mappe un statut Guiddini/SATIM vers un type d'event normalisé (pur, testable). */
29
+ static mapStatus(raw: Record<string, any>): string;
30
+ protected doVerifyWebhook(body: string, _signature: string): Promise<WebhookEvent>;
31
+ }
32
+ /**
33
+ * Crée un provider Guiddini depuis l'environnement (cascade @mostajs/config).
34
+ * Env : GUIDDINI_APP_KEY, GUIDDINI_APP_SECRET, GUIDDINI_TEST_MODE,
35
+ * GUIDDINI_BASE_URL, GUIDDINI_INITIATE_PATH, GUIDDINI_STATUS_PATH, GUIDDINI_RETURN_URL.
36
+ */
37
+ export declare function createGuiddiniProvider(config?: Partial<GuiddiniConfig>): GuiddiniProvider;
38
+ //# sourceMappingURL=guiddini.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guiddini.provider.d.ts","sourceRoot":"","sources":["../../src/providers/guiddini.provider.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGtE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,gBAAiB,SAAQ,uBAAuB;IAS/C,OAAO,CAAC,MAAM;IAR1B,QAAQ,CAAC,IAAI,cAAa;IAC1B,QAAQ,CAAC,mBAAmB,WAAU;IACtC,QAAQ,CAAC,gBAAgB,WAAsB;IAE/C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAQ;gBAEN,MAAM,EAAE,cAAc;IAS1C,OAAO,CAAC,OAAO;cASC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IA0B3E,gDAAgD;IAC1C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMlE,qFAAqF;IACrF,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;cAQlC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAyBzF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAUzF"}
@@ -0,0 +1,126 @@
1
+ // @mostajs/payment — Guiddini provider (agrégateur Algérie : CIB + EDAHABIA via SATIM)
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com>
3
+ // Ref: https://guiddini.dz/docs/api/satim · >100 marchands certifiés SATIM
4
+ //
5
+ // Guiddini Pay : agrégateur SATIM (clé/secret applicatifs). Flux : initiation →
6
+ // redirection vers la page SATIM → confirmation par interrogation du statut.
7
+ // La doc publique étant rendue côté client, les chemins/URL sont PILOTABLES PAR
8
+ // ENV (corrigeables sans toucher au code, §10) — défauts provisoires à confirmer
9
+ // en certification GIE Monétique.
10
+ import { AbstractPaymentProvider } from '../core/abstract-provider.js';
11
+ import { getEnv } from '@mostajs/config';
12
+ export class GuiddiniProvider extends AbstractPaymentProvider {
13
+ config;
14
+ name = 'guiddini';
15
+ supportedCurrencies = ['DZD'];
16
+ supportedMethods = ['cib', 'edahabia'];
17
+ baseUrl;
18
+ initiatePath;
19
+ statusPath;
20
+ constructor(config) {
21
+ super();
22
+ this.config = config;
23
+ this.baseUrl = config.baseUrl ?? (config.testMode
24
+ ? 'https://epay.guiddini.dz/api/test'
25
+ : 'https://epay.guiddini.dz/api');
26
+ this.initiatePath = config.initiatePath ?? '/transactions/initiate';
27
+ this.statusPath = config.statusPath ?? '/transactions';
28
+ }
29
+ headers() {
30
+ return {
31
+ 'x-app-key': this.config.appKey,
32
+ 'x-app-secret': this.config.appSecret,
33
+ 'Content-Type': 'application/json',
34
+ 'Accept': 'application/json',
35
+ };
36
+ }
37
+ async doCheckout(params) {
38
+ const res = await fetch(`${this.baseUrl}${this.initiatePath}`, {
39
+ method: 'POST',
40
+ headers: this.headers(),
41
+ body: JSON.stringify({
42
+ amount: params.amount, // DZD
43
+ order_number: params.orderId, // notre référence (matching)
44
+ return_url: params.successUrl ?? this.config.returnUrl,
45
+ fail_url: params.cancelUrl,
46
+ description: params.description ?? `Commande ${params.orderId}`,
47
+ meta: params.metadata,
48
+ }),
49
+ });
50
+ if (!res.ok) {
51
+ const err = await res.json().catch(() => ({}));
52
+ throw new Error(`[guiddini] Checkout failed: ${err.message ?? res.statusText}`);
53
+ }
54
+ const data = await res.json();
55
+ const d = data.data ?? data;
56
+ // { form_url|redirect_url|checkout_url, order_id|id }
57
+ return {
58
+ url: d.form_url ?? d.redirect_url ?? d.checkout_url ?? null,
59
+ sessionId: String(d.order_id ?? d.id ?? d.transaction_id ?? ''),
60
+ };
61
+ }
62
+ /** Statut d'une transaction Guiddini par id. */
63
+ async getTransaction(id) {
64
+ const res = await fetch(`${this.baseUrl}${this.statusPath}/${id}`, { headers: this.headers() });
65
+ if (!res.ok)
66
+ throw new Error(`[guiddini] Get transaction failed: ${res.statusText}`);
67
+ return res.json();
68
+ }
69
+ /** Mappe un statut Guiddini/SATIM vers un type d'event normalisé (pur, testable). */
70
+ static mapStatus(raw) {
71
+ const s = String(raw?.status ?? raw?.state ?? raw?.order_status ?? '').toLowerCase();
72
+ if (s === 'paid' || s === 'success' || s === 'completed' || s === 'confirmed' || raw?.order_status === 2)
73
+ return 'payment.success';
74
+ if (s === 'failed' || s === 'declined' || s === 'cancelled' || s === 'canceled')
75
+ return 'payment.failed';
76
+ if (s === 'refunded')
77
+ return 'payment.refunded';
78
+ return 'payment.pending';
79
+ }
80
+ async doVerifyWebhook(body, _signature) {
81
+ // Confirmation par retour + interrogation. Accepte un JSON déjà résolu
82
+ // ({order_number,status} — testable hors-ligne) ou un JSON {id} → interrogation.
83
+ let raw = {};
84
+ try {
85
+ raw = JSON.parse(body);
86
+ }
87
+ catch {
88
+ raw = Object.fromEntries(new URLSearchParams(body));
89
+ }
90
+ const env = raw.data ?? raw;
91
+ let status = env;
92
+ const id = env.id ?? env.order_id ?? env.transaction_id;
93
+ if (env.status === undefined && env.order_status === undefined && id) {
94
+ const fetched = await this.getTransaction(String(id));
95
+ status = fetched.data ?? fetched;
96
+ }
97
+ return {
98
+ type: GuiddiniProvider.mapStatus(status),
99
+ data: {
100
+ orderId: env.order_number ?? status.order_number ?? status.orderId,
101
+ transactionId: id ?? status.id,
102
+ amount: status.amount,
103
+ currency: 'DZD',
104
+ status: status.status ?? status.order_status,
105
+ },
106
+ raw: status,
107
+ };
108
+ }
109
+ }
110
+ /**
111
+ * Crée un provider Guiddini depuis l'environnement (cascade @mostajs/config).
112
+ * Env : GUIDDINI_APP_KEY, GUIDDINI_APP_SECRET, GUIDDINI_TEST_MODE,
113
+ * GUIDDINI_BASE_URL, GUIDDINI_INITIATE_PATH, GUIDDINI_STATUS_PATH, GUIDDINI_RETURN_URL.
114
+ */
115
+ export function createGuiddiniProvider(config) {
116
+ return new GuiddiniProvider({
117
+ appKey: config?.appKey ?? getEnv('GUIDDINI_APP_KEY', ''),
118
+ appSecret: config?.appSecret ?? getEnv('GUIDDINI_APP_SECRET', ''),
119
+ testMode: config?.testMode ?? getEnv('GUIDDINI_TEST_MODE') !== 'false',
120
+ baseUrl: config?.baseUrl ?? getEnv('GUIDDINI_BASE_URL'),
121
+ initiatePath: config?.initiatePath ?? getEnv('GUIDDINI_INITIATE_PATH'),
122
+ statusPath: config?.statusPath ?? getEnv('GUIDDINI_STATUS_PATH'),
123
+ returnUrl: config?.returnUrl ?? getEnv('GUIDDINI_RETURN_URL', '/payment/success'),
124
+ });
125
+ }
126
+ //# sourceMappingURL=guiddini.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guiddini.provider.js","sourceRoot":"","sources":["../../src/providers/guiddini.provider.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,18 @@ export declare class SatimProvider extends AbstractPaymentProvider {
30
30
  * Get order status.
31
31
  */
32
32
  getOrderStatus(orderId: string): Promise<Record<string, unknown>>;
33
+ /**
34
+ * Statut SATIM/BPC enrichi par identifiant de commande SATIM (mdOrder).
35
+ * Champs clés : OrderStatus, OrderNumber (= notre orderId), Amount (centimes),
36
+ * actionCode, approvalCode, ErrorCode.
37
+ */
38
+ getOrderStatusExtended(satimOrderId: string): Promise<Record<string, unknown>>;
39
+ /**
40
+ * Mappe un code OrderStatus BPC vers un type d'event normalisé.
41
+ * Codes BPC : 0 enregistré · 1 pré-autorisé · 2 **autorisé/payé** ·
42
+ * 3 annulé · 4 remboursé · 5 ACS/3-DS en cours · 6 refusé.
43
+ */
44
+ static mapOrderStatus(code: number | string | undefined): string;
33
45
  protected doVerifyWebhook(body: string, _signature: string): Promise<WebhookEvent>;
34
46
  }
35
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"satim.provider.d.ts","sourceRoot":"","sources":["../../src/providers/satim.provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGtE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,aAAc,SAAQ,uBAAuB;IAO5C,OAAO,CAAC,MAAM;IAN1B,QAAQ,CAAC,IAAI,WAAU;IACvB,QAAQ,CAAC,mBAAmB,WAAU;IACtC,QAAQ,CAAC,gBAAgB,WAAU;IAEnC,OAAO,CAAC,OAAO,CAAQ;gBAEH,MAAM,EAAE,WAAW;cAOvB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IA6B3E;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsB1G;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;cAiBvD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAgBzF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa,CAQhF"}
1
+ {"version":3,"file":"satim.provider.d.ts","sourceRoot":"","sources":["../../src/providers/satim.provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGtE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,aAAc,SAAQ,uBAAuB;IAO5C,OAAO,CAAC,MAAM;IAN1B,QAAQ,CAAC,IAAI,WAAU;IACvB,QAAQ,CAAC,mBAAmB,WAAU;IACtC,QAAQ,CAAC,gBAAgB,WAAU;IAEnC,OAAO,CAAC,OAAO,CAAQ;gBAEH,MAAM,EAAE,WAAW;cAOvB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAiC3E;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAsB1G;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiBvE;;;;OAIG;IACG,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAepF;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;cAUhD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAqCzF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa,CAQhF"}
@@ -29,6 +29,10 @@ export class SatimProvider extends AbstractPaymentProvider {
29
29
  });
30
30
  if (params.description)
31
31
  body.set('description', params.description);
32
+ // jsonParams : champs libres (dont orderId) restitués dans getOrderStatusExtended
33
+ if (params.metadata && Object.keys(params.metadata).length) {
34
+ body.set('jsonParams', JSON.stringify(params.metadata));
35
+ }
32
36
  const res = await fetch(`${this.baseUrl}/register.do`, {
33
37
  method: 'POST',
34
38
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
@@ -80,19 +84,81 @@ export class SatimProvider extends AbstractPaymentProvider {
80
84
  });
81
85
  return res.json();
82
86
  }
87
+ /**
88
+ * Statut SATIM/BPC enrichi par identifiant de commande SATIM (mdOrder).
89
+ * Champs clés : OrderStatus, OrderNumber (= notre orderId), Amount (centimes),
90
+ * actionCode, approvalCode, ErrorCode.
91
+ */
92
+ async getOrderStatusExtended(satimOrderId) {
93
+ const body = new URLSearchParams({
94
+ orderId: satimOrderId,
95
+ userName: this.config.merchantId,
96
+ password: this.config.password,
97
+ language: 'FR',
98
+ });
99
+ const res = await fetch(`${this.baseUrl}/getOrderStatusExtended.do`, {
100
+ method: 'POST',
101
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
102
+ body,
103
+ });
104
+ return res.json();
105
+ }
106
+ /**
107
+ * Mappe un code OrderStatus BPC vers un type d'event normalisé.
108
+ * Codes BPC : 0 enregistré · 1 pré-autorisé · 2 **autorisé/payé** ·
109
+ * 3 annulé · 4 remboursé · 5 ACS/3-DS en cours · 6 refusé.
110
+ */
111
+ static mapOrderStatus(code) {
112
+ switch (String(code)) {
113
+ case '2': return 'payment.success';
114
+ case '4': return 'payment.refunded';
115
+ case '3':
116
+ case '6': return 'payment.failed';
117
+ default: return 'payment.pending'; // 0,1,5 ou inconnu
118
+ }
119
+ }
83
120
  async doVerifyWebhook(body, _signature) {
84
- // Satim uses redirect-based callbacks, not webhooks
85
- // Parse the callback params
86
- const params = new URLSearchParams(body);
87
- const orderId = params.get('orderId') ?? '';
88
- if (orderId) {
89
- const status = await this.confirmOrder(orderId);
90
- return {
91
- type: status.paid ? 'payment.success' : 'payment.failed',
92
- data: { orderId, ...status },
93
- };
121
+ // SATIM = callback PAR REDIRECTION (pas de webhook signé) : le handler de
122
+ // retour reçoit l'orderId SATIM (mdOrder) ; on confirme le statut côté serveur
123
+ // via getOrderStatusExtended. Accepte : querystring de retour, JSON {orderId},
124
+ // ou JSON déjà résolu (OrderStatus présent → pas d'appel réseau, testable).
125
+ const trimmed = body.trim();
126
+ let raw = {};
127
+ if (trimmed.startsWith('{')) {
128
+ try {
129
+ raw = JSON.parse(trimmed);
130
+ }
131
+ catch {
132
+ raw = {};
133
+ }
134
+ }
135
+ else {
136
+ raw = Object.fromEntries(new URLSearchParams(body));
137
+ }
138
+ const satimOrderId = raw.orderId ?? raw.mdOrder;
139
+ let status = raw;
140
+ if (raw.OrderStatus === undefined && raw.orderStatus === undefined && satimOrderId) {
141
+ status = await this.getOrderStatusExtended(String(satimOrderId));
94
142
  }
95
- return { type: 'unknown', data: {} };
143
+ const code = status.OrderStatus ?? status.orderStatus;
144
+ const orderNumber = status.OrderNumber ?? status.orderNumber ?? raw.orderNumber;
145
+ const amount = status.Amount !== undefined ? Number(status.Amount) / 100 : undefined;
146
+ const type = code !== undefined
147
+ ? SatimProvider.mapOrderStatus(code)
148
+ : (String(raw.actionCode) === '0' ? 'payment.success' : 'payment.pending');
149
+ return {
150
+ type,
151
+ data: {
152
+ orderId: orderNumber ?? satimOrderId, // OrderNumber = notre orderId (matching)
153
+ satimOrderId,
154
+ orderStatus: code,
155
+ amount,
156
+ currency: 'DZD',
157
+ approvalCode: status.approvalCode ?? status.ApprovalCode,
158
+ errorCode: status.ErrorCode ?? status.errorCode,
159
+ },
160
+ raw: status,
161
+ };
96
162
  }
97
163
  }
98
164
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"satim.provider.js","sourceRoot":"","sources":["../../src/providers/satim.provider.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,wCAAwC;AACxC,qDAAqD;AAGrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAYpD,MAAM,OAAO,aAAc,SAAQ,uBAAuB;IAOpC;IANX,IAAI,GAAG,OAAO,CAAA;IACd,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7B,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAA;IAE3B,OAAO,CAAQ;IAEvB,YAAoB,MAAmB;QACrC,KAAK,EAAE,CAAA;QADW,WAAM,GAAN,MAAM,CAAa;QAErC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ;YAC5B,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,mCAAmC,CAAA;IACzC,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,MAAsB;QAC/C,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;YAC/B,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,eAAe;YAChE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,EAAE,eAAe;YAC5D,SAAS,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;YACrD,OAAO,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAChD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,WAAW;YAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;QAEnE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAE7B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,YAAY,IAAI,qBAAqB,WAAW,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QACpG,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;IACvD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;YAC/B,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,kBAAkB,EAAE;YACzD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG;YACtD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;SACrD,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;YAC/B,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAChC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,oBAAoB,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI;SACL,CAAC,CAAA;QAEF,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,IAAY,EAAE,UAAkB;QAC9D,oDAAoD;QACpD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QAE3C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAC/C,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB;gBACxD,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE;aAC7B,CAAA;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IACtC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA6B;IAC/D,OAAO,IAAI,aAAa,CAAC;QACvB,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACjE,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC1D,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,UAAU,CAAC,iBAAiB,CAAC;QAC3D,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;QAC/E,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KACxE,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"satim.provider.js","sourceRoot":"","sources":["../../src/providers/satim.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { CheckoutParams, CheckoutResult, WebhookEvent } from '../core/provider.interface.js';
2
+ import { AbstractPaymentProvider } from '../core/abstract-provider.js';
3
+ export interface SlickPayConfig {
4
+ publicKey: string;
5
+ testMode?: boolean;
6
+ /** Base API (sans slash final). Défaut test/prod v2. */
7
+ baseUrl?: string;
8
+ /** Chemin de création d'invoice. Défaut '/users/invoices'. */
9
+ invoicePath?: string;
10
+ /** URL de retour par défaut si non fournie au checkout. */
11
+ returnUrl?: string;
12
+ }
13
+ export declare class SlickPayProvider extends AbstractPaymentProvider {
14
+ private config;
15
+ readonly name = "slickpay";
16
+ readonly supportedCurrencies: string[];
17
+ readonly supportedMethods: string[];
18
+ private baseUrl;
19
+ private invoicePath;
20
+ constructor(config: SlickPayConfig);
21
+ private headers;
22
+ /** URL de retour avec orderId propagé (matching au retour). */
23
+ private returnWithOrder;
24
+ protected doCheckout(params: CheckoutParams): Promise<CheckoutResult>;
25
+ /** Statut d'une invoice par id (confirmation serveur). */
26
+ getInvoice(id: string): Promise<Record<string, unknown>>;
27
+ /** Mappe un statut SlickPay vers un type d'event normalisé (pur, testable). */
28
+ static mapStatus(raw: Record<string, any>): string;
29
+ protected doVerifyWebhook(body: string, _signature: string): Promise<WebhookEvent>;
30
+ }
31
+ /**
32
+ * Crée un provider SlickPay depuis l'environnement (cascade @mostajs/config).
33
+ * Env : SLICKPAY_PUBLIC_KEY, SLICKPAY_TEST_MODE, SLICKPAY_BASE_URL,
34
+ * SLICKPAY_INVOICE_PATH, SLICKPAY_RETURN_URL.
35
+ */
36
+ export declare function createSlickPayProvider(config?: Partial<SlickPayConfig>): SlickPayProvider;
37
+ //# sourceMappingURL=slickpay.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slickpay.provider.d.ts","sourceRoot":"","sources":["../../src/providers/slickpay.provider.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGtE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,gBAAiB,SAAQ,uBAAuB;IAQ/C,OAAO,CAAC,MAAM;IAP1B,QAAQ,CAAC,IAAI,cAAa;IAC1B,QAAQ,CAAC,mBAAmB,WAAU;IACtC,QAAQ,CAAC,gBAAgB,WAAsB;IAE/C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAQ;gBAEP,MAAM,EAAE,cAAc;IAQ1C,OAAO,CAAC,OAAO;IAQf,+DAA+D;IAC/D,OAAO,CAAC,eAAe;cAKP,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAqB3E,0DAA0D;IACpD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAM9D,+EAA+E;IAC/E,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;cASlC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAyBzF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAQzF"}
@@ -0,0 +1,121 @@
1
+ // @mostajs/payment — SlickPay provider (agrégateur Algérie : CIB + EDAHABIA via SATIM)
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com>
3
+ // Ref: https://developers.slick-pay.com/ · SDK npm @slick-pay-algeria/slickpay-npm
4
+ //
5
+ // API v2 : auth par clé publique (Bearer), création d'« invoice » qui redirige le
6
+ // payeur vers la page de paiement, puis confirmation par interrogation du statut.
7
+ // Les chemins/URL sont PILOTABLES PAR ENV (corrigeables sans toucher au code, §10)
8
+ // — valeurs par défaut conformes à la doc v2, à confirmer en certification GIE.
9
+ import { AbstractPaymentProvider } from '../core/abstract-provider.js';
10
+ import { getEnv } from '@mostajs/config';
11
+ export class SlickPayProvider extends AbstractPaymentProvider {
12
+ config;
13
+ name = 'slickpay';
14
+ supportedCurrencies = ['DZD'];
15
+ supportedMethods = ['cib', 'edahabia'];
16
+ baseUrl;
17
+ invoicePath;
18
+ constructor(config) {
19
+ super();
20
+ this.config = config;
21
+ this.baseUrl = config.baseUrl ?? (config.testMode
22
+ ? 'https://devapi.slick-pay.com/api/v2'
23
+ : 'https://prodapi.slick-pay.com/api/v2');
24
+ this.invoicePath = config.invoicePath ?? '/users/invoices';
25
+ }
26
+ headers() {
27
+ return {
28
+ 'Authorization': `Bearer ${this.config.publicKey}`,
29
+ 'Content-Type': 'application/json',
30
+ 'Accept': 'application/json',
31
+ };
32
+ }
33
+ /** URL de retour avec orderId propagé (matching au retour). */
34
+ returnWithOrder(url, orderId) {
35
+ const sep = url.includes('?') ? '&' : '?';
36
+ return `${url}${sep}orderId=${encodeURIComponent(orderId)}`;
37
+ }
38
+ async doCheckout(params) {
39
+ const url = this.returnWithOrder(params.successUrl ?? this.config.returnUrl ?? '/', params.orderId);
40
+ const res = await fetch(`${this.baseUrl}${this.invoicePath}`, {
41
+ method: 'POST',
42
+ headers: this.headers(),
43
+ body: JSON.stringify({
44
+ amount: params.amount, // DZD (montant réel, pas centimes)
45
+ url, // retour navigateur après paiement
46
+ webhook_url: params.webhookUrl, // notification serveur (si supporté)
47
+ note: params.description ?? `Commande ${params.orderId}`,
48
+ }),
49
+ });
50
+ if (!res.ok) {
51
+ const err = await res.json().catch(() => ({}));
52
+ throw new Error(`[slickpay] Checkout failed: ${err.message ?? res.statusText}`);
53
+ }
54
+ const data = await res.json();
55
+ // v2 : { success, url|redirect_url, id }
56
+ return { url: data.url ?? data.redirect_url ?? null, sessionId: String(data.id ?? data.uuid ?? '') };
57
+ }
58
+ /** Statut d'une invoice par id (confirmation serveur). */
59
+ async getInvoice(id) {
60
+ const res = await fetch(`${this.baseUrl}${this.invoicePath}/${id}`, { headers: this.headers() });
61
+ if (!res.ok)
62
+ throw new Error(`[slickpay] Get invoice failed: ${res.statusText}`);
63
+ return res.json();
64
+ }
65
+ /** Mappe un statut SlickPay vers un type d'event normalisé (pur, testable). */
66
+ static mapStatus(raw) {
67
+ const v = raw?.completed ?? raw?.status ?? raw?.state;
68
+ const s = String(v).toLowerCase();
69
+ if (v === 1 || v === true || s === 'completed' || s === 'paid' || s === 'success')
70
+ return 'payment.success';
71
+ if (s === 'failed' || s === 'cancelled' || s === 'canceled' || s === 'declined')
72
+ return 'payment.failed';
73
+ if (s === 'refunded')
74
+ return 'payment.refunded';
75
+ return 'payment.pending';
76
+ }
77
+ async doVerifyWebhook(body, _signature) {
78
+ // SlickPay : confirmation par retour + interrogation statut (pas de HMAC).
79
+ // Accepte un JSON déjà résolu ({orderId,status/completed} — testable hors-ligne)
80
+ // ou un JSON {id} → interrogation API.
81
+ let raw = {};
82
+ try {
83
+ raw = JSON.parse(body);
84
+ }
85
+ catch {
86
+ raw = Object.fromEntries(new URLSearchParams(body));
87
+ }
88
+ let status = raw;
89
+ const id = raw.id ?? raw.invoice ?? raw.uuid;
90
+ if (raw.completed === undefined && raw.status === undefined && raw.state === undefined && id) {
91
+ status = await this.getInvoice(String(id));
92
+ status = status.data ?? status;
93
+ }
94
+ return {
95
+ type: SlickPayProvider.mapStatus(status),
96
+ data: {
97
+ orderId: raw.orderId ?? status.orderId ?? status.merchant_order_id,
98
+ invoiceId: id ?? status.id,
99
+ amount: status.amount,
100
+ currency: 'DZD',
101
+ status: status.completed ?? status.status ?? status.state,
102
+ },
103
+ raw: status,
104
+ };
105
+ }
106
+ }
107
+ /**
108
+ * Crée un provider SlickPay depuis l'environnement (cascade @mostajs/config).
109
+ * Env : SLICKPAY_PUBLIC_KEY, SLICKPAY_TEST_MODE, SLICKPAY_BASE_URL,
110
+ * SLICKPAY_INVOICE_PATH, SLICKPAY_RETURN_URL.
111
+ */
112
+ export function createSlickPayProvider(config) {
113
+ return new SlickPayProvider({
114
+ publicKey: config?.publicKey ?? getEnv('SLICKPAY_PUBLIC_KEY', ''),
115
+ testMode: config?.testMode ?? getEnv('SLICKPAY_TEST_MODE') !== 'false',
116
+ baseUrl: config?.baseUrl ?? getEnv('SLICKPAY_BASE_URL'),
117
+ invoicePath: config?.invoicePath ?? getEnv('SLICKPAY_INVOICE_PATH'),
118
+ returnUrl: config?.returnUrl ?? getEnv('SLICKPAY_RETURN_URL', '/payment/success'),
119
+ });
120
+ }
121
+ //# sourceMappingURL=slickpay.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slickpay.provider.js","sourceRoot":"","sources":["../../src/providers/slickpay.provider.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -15,6 +15,10 @@ export { StripeProvider, createStripeProvider } from './providers/stripe.provide
15
15
  export type { StripeConfig } from './providers/stripe.provider.js';
16
16
  export { ManualProvider, createManualProvider } from './providers/manual.provider.js';
17
17
  export type { ManualConfig } from './providers/manual.provider.js';
18
+ export { SlickPayProvider, createSlickPayProvider } from './providers/slickpay.provider.js';
19
+ export type { SlickPayConfig } from './providers/slickpay.provider.js';
20
+ export { GuiddiniProvider, createGuiddiniProvider } from './providers/guiddini.provider.js';
21
+ export type { GuiddiniConfig } from './providers/guiddini.provider.js';
18
22
  export { createStripeClient, createCheckoutSession, handleWebhook, createBillingSession, createPortalSession, handleBillingWebhook, } from './lib/stripe.js';
19
23
  export type { WebhookHandlers } from './lib/stripe.js';
20
24
  export { getPaymentRepo, resetPaymentRepo } from './lib/payment-factory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAC/D,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAClE,aAAa,EAAE,YAAY,GAC5B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EACjD,aAAa,EAAE,sBAAsB,EAAE,cAAc,GACtD,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAGrE,OAAO,EACL,qBAAqB,EAAE,wBAAwB,GAChD,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,mBAAmB,GACxC,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EACL,wBAAwB,EAAE,sBAAsB,EAAE,qBAAqB,GACxE,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAGlE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAEhE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAGlE,OAAO,EACL,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EACxD,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,GAChE,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,YAAY,EACZ,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAC/D,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAClE,aAAa,EAAE,YAAY,GAC5B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EACjD,aAAa,EAAE,sBAAsB,EAAE,cAAc,GACtD,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAGrE,OAAO,EACL,qBAAqB,EAAE,wBAAwB,GAChD,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,mBAAmB,EAAE,oBAAoB,EACzC,kBAAkB,EAAE,mBAAmB,GACxC,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EACL,wBAAwB,EAAE,sBAAsB,EAAE,qBAAqB,GACxE,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAGlE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAEhE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrF,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAGlE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,YAAY,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAGtE,OAAO,EACL,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EACxD,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,GAChE,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,YAAY,EACZ,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA"}
package/dist/server.js CHANGED
@@ -13,6 +13,9 @@ export { ChargilyProvider, createChargilyProvider } from './providers/chargily.p
13
13
  export { PayPalProvider, createPayPalProvider } from './providers/paypal.provider.js';
14
14
  export { StripeProvider, createStripeProvider } from './providers/stripe.provider.js';
15
15
  export { ManualProvider, createManualProvider } from './providers/manual.provider.js';
16
+ // Agrégateurs Algérie (CIB/EDAHABIA via SATIM) — v0.7
17
+ export { SlickPayProvider, createSlickPayProvider } from './providers/slickpay.provider.js';
18
+ export { GuiddiniProvider, createGuiddiniProvider } from './providers/guiddini.provider.js';
16
19
  // ─── Legacy Stripe functions (backward compat) ─
17
20
  export { createStripeClient, createCheckoutSession, handleWebhook, createBillingSession, createPortalSession, handleBillingWebhook, } from './lib/stripe.js';
18
21
  // ─── Repository ─────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,wCAAwC;AASxC,OAAO,EACL,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EACjD,aAAa,EAAE,sBAAsB,EAAE,cAAc,GACtD,MAAM,0BAA0B,CAAA;AAEjC,4EAA4E;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAErE,4DAA4D;AAC5D,OAAO,EACL,qBAAqB,EAAE,wBAAwB,GAChD,MAAM,4BAA4B,CAAA;AAMnC,qEAAqE;AACrE,OAAO,EACL,wBAAwB,EAAE,sBAAsB,EAAE,qBAAqB,GACxE,MAAM,yBAAyB,CAAA;AAGhC,mDAAmD;AACnD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAGlF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAG3F,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAGrF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAGrF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAGrF,kDAAkD;AAClD,OAAO,EACL,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EACxD,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,GAChE,MAAM,iBAAiB,CAAA;AAGxB,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3E,mDAAmD;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,wDAAwD;AACxD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AAOjC,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,wCAAwC;AASxC,OAAO,EACL,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EACjD,aAAa,EAAE,sBAAsB,EAAE,cAAc,GACtD,MAAM,0BAA0B,CAAA;AAEjC,4EAA4E;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAErE,4DAA4D;AAC5D,OAAO,EACL,qBAAqB,EAAE,wBAAwB,GAChD,MAAM,4BAA4B,CAAA;AAMnC,qEAAqE;AACrE,OAAO,EACL,wBAAwB,EAAE,sBAAsB,EAAE,qBAAqB,GACxE,MAAM,yBAAyB,CAAA;AAGhC,mDAAmD;AACnD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAGlF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAG3F,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAGrF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAGrF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAGrF,sDAAsD;AACtD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAG3F,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAG3F,kDAAkD;AAClD,OAAO,EACL,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EACxD,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,GAChE,MAAM,iBAAiB,CAAA;AAGxB,mDAAmD;AACnD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3E,mDAAmD;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,wDAAwD;AACxD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,0BAA0B,CAAA;AAOjC,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA"}
package/llms.txt CHANGED
@@ -1,11 +1,11 @@
1
1
  # @mostajs/payment — fiche LLM
2
2
  > Module de paiement multi-provider (Stripe, Satim/CIB, Chargily, PayPal, Manuel), multi-méthode, multi-devise.
3
3
 
4
- - Version: 0.6.0 · Licence: AGPL-3.0-or-later · Auteur: Dr Hamid MADANI <drmdh@msn.com>
4
+ - Version: 0.7.0 · Licence: AGPL-3.0-or-later · Auteur: Dr Hamid MADANI <drmdh@msn.com>
5
5
  - Chemin: mostajs/mosta-payment · Statut audit: complet (dist/)
6
6
 
7
7
  ## RÔLE
8
- Abstraction unifiée du paiement pour l'écosystème `@mostajs/*`. Un contrat `PaymentProvider` commun couvre 5 providers (Stripe, Satim, Chargily, PayPal, Manuel). Fournit checkout, webhooks normalisés, billing/abonnements (Stripe), schéma ORM `Payment`, composant React `PaymentPage` et handlers de routes Next.js App Router. Sélection automatique du provider par devise (DZD → Chargily, autres → Stripe).
8
+ Abstraction unifiée du paiement pour l'écosystème `@mostajs/*`. Un contrat `PaymentProvider` commun couvre **7 dialectes** (Stripe, Satim, Chargily, PayPal, Manuel, **SlickPay**, **Guiddini**). Fournit checkout, webhooks normalisés, billing/abonnements (Stripe), schéma ORM `Payment`, composant React `PaymentPage` et handlers de routes Next.js App Router. Sélection automatique du provider par devise (DZD → Chargily par défaut, autres → Stripe ; cibler SATIM/SlickPay/Guiddini via `providerName`).
9
9
 
10
10
  ## MODÈLE DIALECTE (v0.6) — calqué sur @mostajs/orm
11
11
  Chaque **fournisseur = un dialecte de paiement**, exactement comme un dialecte ORM :
@@ -30,7 +30,7 @@ Entrée `@mostajs/payment/server` (serveur uniquement) :
30
30
  - Dialecte base (v0.6): `AbstractPaymentProvider` (classe abstraite — étendue par les 5 providers)
31
31
  - Orchestration (v0.6): `createPaymentCheckout(input)`, `settlePaymentFromWebhook(input)` + types `CreateCheckoutInput`/`CreateCheckoutOutput`/`SettleWebhookInput`/`SettleWebhookOutput`
32
32
  - Auto-enregistrement (v0.5.4+): `registerProvidersFromEnv(opts?)`, `ensureProvidersFromEnv(opts?)`, `resetEnsuredProviders()` + type `AutoRegisterOptions`
33
- - Providers (classes + factories env): `StripeProvider`/`createStripeProvider`, `SatimProvider`/`createSatimProvider`, `ChargilyProvider`/`createChargilyProvider`, `PayPalProvider`/`createPayPalProvider`, `ManualProvider`/`createManualProvider`
33
+ - Providers/dialectes (classes + factories env): `StripeProvider`/`createStripeProvider`, `SatimProvider`/`createSatimProvider`, `ChargilyProvider`/`createChargilyProvider`, `PayPalProvider`/`createPayPalProvider`, `ManualProvider`/`createManualProvider`, **`SlickPayProvider`/`createSlickPayProvider`**, **`GuiddiniProvider`/`createGuiddiniProvider`** (+ configs `SlickPayConfig`/`GuiddiniConfig`). SATIM expose `getOrderStatusExtended` + statique `mapOrderStatus(code)` ; SlickPay/Guiddini exposent `mapStatus(raw)`.
34
34
  - Stripe bas niveau: `createStripeClient`, `createCheckoutSession`, `handleWebhook`, `createBillingSession`, `createPortalSession`, `handleBillingWebhook`
35
35
  - Webhook helpers: `handleProviderWebhook`, `pickSignatureHeader`, `getProviderByName`, `isPaidEvent`, `isFailedEvent`, `isRefundedEvent`, `extractOrderId`, `pickProviderByCurrency`, `isKnownProvider`, constantes `KNOWN_PROVIDERS`, `CURRENCY_TO_PROVIDER`
36
36
  - Repo: `getPaymentRepo`, `resetPaymentRepo`
@@ -57,7 +57,7 @@ Interface `PaymentProvider` : `name`, `supportedCurrencies`, `supportedMethods`,
57
57
  ## TYPES CLÉS
58
58
  - `PaymentStatus = 'pending'|'paid'|'refunded'|'failed'`
59
59
  - `PaymentMethodType = 'card'|'transfer'|'cash'|'tpe'`
60
- - `ProviderName = 'chargily'|'stripe'|'satim'|'paypal'|'manual'`
60
+ - `ProviderName = 'chargily'|'stripe'|'satim'|'paypal'|'manual'|'slickpay'|'guiddini'`
61
61
  - `PaymentConfig { currency: string; defaultCurrency?; stripeSecretKey?; stripePublicKey?; stripeWebhookSecret?; successUrlTemplate: string; cancelUrlTemplate: string; methods?: PaymentMethodType[]; bankInfo?: { rib; bankName; holder } }` — templates avec `{orderId}` substitué
62
62
  - `LineItem { name; description?; unitAmount: number; quantity: number }` — unitAmount en unités de base (PAS en centimes)
63
63
  - `CheckoutRequest { orderId; lineItems: LineItem[]; currency?; returnUrl?; metadata? }`
@@ -110,6 +110,7 @@ if (s.status === 'paid') { /* activer la campagne sponsor (métier) */ }
110
110
  - Sélection devise : `CURRENCY_TO_PROVIDER` mappe DZD → Chargily, le reste → Stripe ; pour CIB-only Algérie sans Chargily, passer `fallback` à `pickProviderByCurrency`.
111
111
  - Les factories `create*Provider` lisent l'env en fallback (cascade `@mostajs/config`) ; defaults testMode : Chargily test-on (`!== 'false'`), Satim test-off (`=== 'true'`), PayPal test-on.
112
112
  - `ChargilyProvider` : préférer `CHARGILY_SECRET_KEY` ; `CHARGILY_API_KEY` est un alias legacy.
113
+ - **Dialectes DZ (v0.7)** : `SatimProvider` (acquéreur direct, codes BPC OrderStatus, matching par `OrderNumber`), `SlickPayProvider` (env `SLICKPAY_PUBLIC_KEY` + base/chemins `SLICKPAY_BASE_URL`/`_INVOICE_PATH`), `GuiddiniProvider` (env `GUIDDINI_APP_KEY`/`_APP_SECRET` + `GUIDDINI_BASE_URL`/`_INITIATE_PATH`/`_STATUS_PATH`). DZD partagé : par défaut → Chargily ; cibler SATIM/SlickPay/Guiddini via `providerName` (ou ordre/`setDefault`). Confirmation par retour+statut (pas de HMAC) ; chemins SlickPay/Guiddini provisoires, pilotés par env, à confirmer en certification GIE.
113
114
  - `getPaymentRepo` met en cache via WeakMap par identité de dialect — un changement de dialect reconstruit le repo ; `resetPaymentRepo` est un no-op de rétro-compat.
114
115
  - Méthodes optionnelles de `PaymentProvider` (subscriptions, refunds…) : seul Stripe les implémente toutes ; vérifier la présence avant appel sur Satim/Chargily/Manual.
115
116
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/payment",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Payment module for @mostajs — Multi-provider (Stripe, Satim/CIB, Chargily, PayPal), multi-method, multi-currency",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "AGPL-3.0-or-later",