@mostajs/payment 0.4.2 → 0.5.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/dist/lib/webhook-helpers.d.ts +62 -0
- package/dist/lib/webhook-helpers.d.ts.map +1 -0
- package/dist/lib/webhook-helpers.js +135 -0
- package/dist/lib/webhook-helpers.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { PaymentProvider, WebhookEvent } from '../core/provider.interface.js';
|
|
2
|
+
export type ProviderName = 'chargily' | 'stripe' | 'satim' | 'paypal' | 'manual';
|
|
3
|
+
/**
|
|
4
|
+
* Sélectionne le header signature attendu pour chaque provider.
|
|
5
|
+
* Headers normalisés en lowercase (Headers.get est case-insensitive).
|
|
6
|
+
*/
|
|
7
|
+
export declare function pickSignatureHeader(headers: Headers | Record<string, string>, providerName: ProviderName): string;
|
|
8
|
+
/**
|
|
9
|
+
* Instancie un PaymentProvider à partir de son nom (lit env via le constructor).
|
|
10
|
+
* Utile pour le webhook handler qui n'a pas besoin de connaître la config.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getProviderByName(name: ProviderName): PaymentProvider;
|
|
13
|
+
export interface HandleProviderWebhookArgs {
|
|
14
|
+
/** Body brut de la requête (req.text() avant parse). Crucial : signature
|
|
15
|
+
* computed sur les bytes exacts envoyés par le provider. */
|
|
16
|
+
body: string;
|
|
17
|
+
/** Headers de la requête HTTP. */
|
|
18
|
+
headers: Headers | Record<string, string>;
|
|
19
|
+
/** Nom du provider. */
|
|
20
|
+
providerName: ProviderName;
|
|
21
|
+
}
|
|
22
|
+
export type HandleProviderWebhookResult = {
|
|
23
|
+
ok: true;
|
|
24
|
+
event: WebhookEvent;
|
|
25
|
+
} | {
|
|
26
|
+
ok: false;
|
|
27
|
+
reason: 'bad_signature' | 'malformed' | 'unknown_provider';
|
|
28
|
+
error: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Vérifie le webhook reçu d'un provider de paiement et retourne l'event
|
|
32
|
+
* normalisé. La logique métier (créer une Subscription, marquer une
|
|
33
|
+
* Registration, etc.) reste à la charge du caller.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const r = await handleProviderWebhook({
|
|
37
|
+
* body: await req.text(),
|
|
38
|
+
* headers: req.headers,
|
|
39
|
+
* providerName: 'chargily',
|
|
40
|
+
* })
|
|
41
|
+
* if (!r.ok) return NextResponse.json({ error: r.error }, { status: 400 })
|
|
42
|
+
* if (isPaidEvent(r.event)) {
|
|
43
|
+
* // ... mettre à jour DB métier ...
|
|
44
|
+
* }
|
|
45
|
+
*/
|
|
46
|
+
export declare function handleProviderWebhook(args: HandleProviderWebhookArgs): Promise<HandleProviderWebhookResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Vrai si l'event indique un paiement réussi, peu importe le provider.
|
|
49
|
+
* Couvre les variantes de naming entre Chargily / Stripe / Satim / PayPal.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isPaidEvent(event: WebhookEvent): boolean;
|
|
52
|
+
/** Vrai si l'event indique un échec ou une annulation de paiement. */
|
|
53
|
+
export declare function isFailedEvent(event: WebhookEvent): boolean;
|
|
54
|
+
/** Vrai si l'event indique un remboursement. */
|
|
55
|
+
export declare function isRefundedEvent(event: WebhookEvent): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Extrait l'`orderId` (= clef de matching côté app, ex: registrationId)
|
|
58
|
+
* depuis le payload event, peu importe le provider. Cherche dans plusieurs
|
|
59
|
+
* positions usuelles.
|
|
60
|
+
*/
|
|
61
|
+
export declare function extractOrderId(event: WebhookEvent): string | null;
|
|
62
|
+
//# sourceMappingURL=webhook-helpers.d.ts.map
|
|
@@ -0,0 +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;;;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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// @mostajs/payment — Webhook helpers (provider-agnostic) — v0.5.0+
|
|
2
|
+
// Author: Dr Hamid MADANI <drmdh@msn.com>
|
|
3
|
+
//
|
|
4
|
+
// Mutualise le code de vérification signature + normalisation event
|
|
5
|
+
// type entre les apps consumers (octonet-cloud, iquesta, etc.).
|
|
6
|
+
// Chaque app garde sa logique métier (Subscription / Registration / …)
|
|
7
|
+
// dans son route handler, mais la vérif HMAC et le mapping
|
|
8
|
+
// event-type sont centralisés ici.
|
|
9
|
+
import { createChargilyProvider } from '../providers/chargily.provider.js';
|
|
10
|
+
import { createStripeProvider } from '../providers/stripe.provider.js';
|
|
11
|
+
import { createSatimProvider } from '../providers/satim.provider.js';
|
|
12
|
+
import { createPayPalProvider } from '../providers/paypal.provider.js';
|
|
13
|
+
import { createManualProvider } from '../providers/manual.provider.js';
|
|
14
|
+
/**
|
|
15
|
+
* Sélectionne le header signature attendu pour chaque provider.
|
|
16
|
+
* Headers normalisés en lowercase (Headers.get est case-insensitive).
|
|
17
|
+
*/
|
|
18
|
+
export function pickSignatureHeader(headers, providerName) {
|
|
19
|
+
const get = (key) => {
|
|
20
|
+
if (headers instanceof Headers)
|
|
21
|
+
return headers.get(key) ?? '';
|
|
22
|
+
return headers[key] ?? headers[key.toLowerCase()] ?? '';
|
|
23
|
+
};
|
|
24
|
+
switch (providerName) {
|
|
25
|
+
case 'chargily':
|
|
26
|
+
// Chargily envoie `signature` (header officiel docs) ;
|
|
27
|
+
// certains proxies passent `chargily-signature` (legacy).
|
|
28
|
+
return get('chargily-signature') || get('signature') || '';
|
|
29
|
+
case 'stripe':
|
|
30
|
+
return get('stripe-signature') || '';
|
|
31
|
+
case 'satim':
|
|
32
|
+
return get('x-satim-signature') || get('signature') || '';
|
|
33
|
+
case 'paypal':
|
|
34
|
+
// PayPal utilise plusieurs headers ; le caller doit traiter à part.
|
|
35
|
+
return get('paypal-transmission-sig') || '';
|
|
36
|
+
case 'manual':
|
|
37
|
+
return get('x-signature') || '';
|
|
38
|
+
default:
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Instancie un PaymentProvider à partir de son nom (lit env via le constructor).
|
|
44
|
+
* Utile pour le webhook handler qui n'a pas besoin de connaître la config.
|
|
45
|
+
*/
|
|
46
|
+
export function getProviderByName(name) {
|
|
47
|
+
switch (name) {
|
|
48
|
+
case 'chargily': return createChargilyProvider();
|
|
49
|
+
case 'stripe': return createStripeProvider();
|
|
50
|
+
case 'satim': return createSatimProvider();
|
|
51
|
+
case 'paypal': return createPayPalProvider();
|
|
52
|
+
case 'manual': return createManualProvider();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Vérifie le webhook reçu d'un provider de paiement et retourne l'event
|
|
57
|
+
* normalisé. La logique métier (créer une Subscription, marquer une
|
|
58
|
+
* Registration, etc.) reste à la charge du caller.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* const r = await handleProviderWebhook({
|
|
62
|
+
* body: await req.text(),
|
|
63
|
+
* headers: req.headers,
|
|
64
|
+
* providerName: 'chargily',
|
|
65
|
+
* })
|
|
66
|
+
* if (!r.ok) return NextResponse.json({ error: r.error }, { status: 400 })
|
|
67
|
+
* if (isPaidEvent(r.event)) {
|
|
68
|
+
* // ... mettre à jour DB métier ...
|
|
69
|
+
* }
|
|
70
|
+
*/
|
|
71
|
+
export async function handleProviderWebhook(args) {
|
|
72
|
+
let provider;
|
|
73
|
+
try {
|
|
74
|
+
provider = getProviderByName(args.providerName);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
return { ok: false, reason: 'unknown_provider', error: e?.message ?? String(e) };
|
|
78
|
+
}
|
|
79
|
+
const signature = pickSignatureHeader(args.headers, args.providerName);
|
|
80
|
+
try {
|
|
81
|
+
const event = await provider.verifyWebhook(args.body, signature);
|
|
82
|
+
return { ok: true, event };
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
const msg = String(e?.message ?? e);
|
|
86
|
+
if (/signature/i.test(msg))
|
|
87
|
+
return { ok: false, reason: 'bad_signature', error: msg };
|
|
88
|
+
return { ok: false, reason: 'malformed', error: msg };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ─── Event type normalization ─────────────────────────────────────────
|
|
92
|
+
/**
|
|
93
|
+
* Vrai si l'event indique un paiement réussi, peu importe le provider.
|
|
94
|
+
* Couvre les variantes de naming entre Chargily / Stripe / Satim / PayPal.
|
|
95
|
+
*/
|
|
96
|
+
export function isPaidEvent(event) {
|
|
97
|
+
const t = String(event?.type ?? '');
|
|
98
|
+
return t === 'payment.success' // Chargily, Satim
|
|
99
|
+
|| t === 'checkout.paid' // legacy alias
|
|
100
|
+
|| t === 'checkout.session.completed' // Stripe Checkout
|
|
101
|
+
|| t === 'payment_intent.succeeded' // Stripe PaymentIntent
|
|
102
|
+
|| t === 'PAYMENT.CAPTURE.COMPLETED'; // PayPal
|
|
103
|
+
}
|
|
104
|
+
/** Vrai si l'event indique un échec ou une annulation de paiement. */
|
|
105
|
+
export function isFailedEvent(event) {
|
|
106
|
+
const t = String(event?.type ?? '');
|
|
107
|
+
return t === 'payment.failed'
|
|
108
|
+
|| t === 'payment.canceled'
|
|
109
|
+
|| t === 'checkout.failed'
|
|
110
|
+
|| t === 'checkout.session.expired'
|
|
111
|
+
|| t === 'payment_intent.payment_failed'
|
|
112
|
+
|| t === 'PAYMENT.CAPTURE.DENIED'
|
|
113
|
+
|| t === 'PAYMENT.CAPTURE.REFUNDED';
|
|
114
|
+
}
|
|
115
|
+
/** Vrai si l'event indique un remboursement. */
|
|
116
|
+
export function isRefundedEvent(event) {
|
|
117
|
+
const t = String(event?.type ?? '');
|
|
118
|
+
return t === 'payment.refunded'
|
|
119
|
+
|| t === 'charge.refunded'
|
|
120
|
+
|| t === 'PAYMENT.CAPTURE.REFUNDED';
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Extrait l'`orderId` (= clef de matching côté app, ex: registrationId)
|
|
124
|
+
* depuis le payload event, peu importe le provider. Cherche dans plusieurs
|
|
125
|
+
* positions usuelles.
|
|
126
|
+
*/
|
|
127
|
+
export function extractOrderId(event) {
|
|
128
|
+
const data = event?.data ?? {};
|
|
129
|
+
return String(data?.metadata?.orderId
|
|
130
|
+
?? data?.metadata?.registrationId
|
|
131
|
+
?? data?.orderId
|
|
132
|
+
?? data?.client_reference_id
|
|
133
|
+
?? '') || null;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=webhook-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-helpers.js","sourceRoot":"","sources":["../../src/lib/webhook-helpers.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,oEAAoE;AACpE,gEAAgE;AAChE,uEAAuE;AACvE,2DAA2D;AAC3D,mCAAmC;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAKtE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAyC,EAAE,YAA0B;IACvG,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE;QAClC,IAAI,OAAO,YAAY,OAAO;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IACzD,CAAC,CAAA;IACD,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,UAAU;YACb,uDAAuD;YACvD,0DAA0D;YAC1D,OAAO,GAAG,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAC5D,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;QACtC,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAC3D,KAAK,QAAQ;YACX,oEAAoE;YACpE,OAAO,GAAG,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAA;QAC7C,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;QACjC;YACE,OAAO,EAAE,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU,CAAC,CAAC,OAAO,sBAAsB,EAAE,CAAA;QAChD,KAAK,QAAQ,CAAC,CAAG,OAAO,oBAAoB,EAAE,CAAA;QAC9C,KAAK,OAAO,CAAC,CAAI,OAAO,mBAAmB,EAAE,CAAA;QAC7C,KAAK,QAAQ,CAAC,CAAG,OAAO,oBAAoB,EAAE,CAAA;QAC9C,KAAK,QAAQ,CAAC,CAAG,OAAO,oBAAoB,EAAE,CAAA;IAChD,CAAC;AACH,CAAC;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAA+B;IACzE,IAAI,QAAyB,CAAA;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAClF,CAAC;IACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;IACtE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAChE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IAC5B,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAA;QACnC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;QACrF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IACvD,CAAC;AACH,CAAC;AAED,yEAAyE;AAEzE;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IACnC,OAAO,CAAC,KAAK,iBAAiB,CAAiB,kBAAkB;WAC1D,CAAC,KAAK,eAAe,CAAoB,eAAe;WACxD,CAAC,KAAK,4BAA4B,CAAO,kBAAkB;WAC3D,CAAC,KAAK,0BAA0B,CAAS,uBAAuB;WAChE,CAAC,KAAK,2BAA2B,CAAA,CAAQ,SAAS;AAC3D,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,KAAmB;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IACnC,OAAO,CAAC,KAAK,gBAAgB;WACtB,CAAC,KAAK,kBAAkB;WACxB,CAAC,KAAK,iBAAiB;WACvB,CAAC,KAAK,0BAA0B;WAChC,CAAC,KAAK,+BAA+B;WACrC,CAAC,KAAK,wBAAwB;WAC9B,CAAC,KAAK,0BAA0B,CAAA;AACzC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,eAAe,CAAC,KAAmB;IACjD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IACnC,OAAO,CAAC,KAAK,kBAAkB;WACxB,CAAC,KAAK,iBAAiB;WACvB,CAAC,KAAK,0BAA0B,CAAA;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,MAAM,IAAI,GAAQ,KAAK,EAAE,IAAI,IAAI,EAAE,CAAA;IACnC,OAAO,MAAM,CACX,IAAI,EAAE,QAAQ,EAAE,OAAO;WACpB,IAAI,EAAE,QAAQ,EAAE,cAAc;WAC9B,IAAI,EAAE,OAAO;WACb,IAAI,EAAE,mBAAmB;WACzB,EAAE,CACN,IAAI,IAAI,CAAA;AACX,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export type { WebhookHandlers } from './lib/stripe.js';
|
|
|
15
15
|
export { getPaymentRepo, resetPaymentRepo } from './lib/payment-factory.js';
|
|
16
16
|
export { createCheckoutHandler } from './api/checkout.route.js';
|
|
17
17
|
export { createPaymentHandlers } from './api/payments.route.js';
|
|
18
|
+
export { handleProviderWebhook, pickSignatureHeader, getProviderByName, isPaidEvent, isFailedEvent, isRefundedEvent, extractOrderId, } from './lib/webhook-helpers.js';
|
|
19
|
+
export type { ProviderName, HandleProviderWebhookArgs, HandleProviderWebhookResult, } from './lib/webhook-helpers.js';
|
|
18
20
|
export { getSchemas, moduleInfo } from './lib/module-info.js';
|
|
19
21
|
export { paymentModuleRegistration } from './register.js';
|
|
20
22
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -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,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,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,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,GACf,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
|
@@ -14,6 +14,8 @@ export { getPaymentRepo, resetPaymentRepo } from './lib/payment-factory.js';
|
|
|
14
14
|
// ─── API handlers ───────────────────────────────
|
|
15
15
|
export { createCheckoutHandler } from './api/checkout.route.js';
|
|
16
16
|
export { createPaymentHandlers } from './api/payments.route.js';
|
|
17
|
+
// ─── Webhook helpers (provider-agnostic) — v0.5.0+ ───
|
|
18
|
+
export { handleProviderWebhook, pickSignatureHeader, getProviderByName, isPaidEvent, isFailedEvent, isRefundedEvent, extractOrderId, } from './lib/webhook-helpers.js';
|
|
17
19
|
// ─── Module info ────────────────────────────────
|
|
18
20
|
export { getSchemas, moduleInfo } from './lib/module-info.js';
|
|
19
21
|
export { paymentModuleRegistration } from './register.js';
|
package/dist/server.js.map
CHANGED
|
@@ -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,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,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,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,GACf,MAAM,0BAA0B,CAAA;AAOjC,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mostajs/payment",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.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",
|