@paywallex/node 1.1.0 → 1.2.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 +10 -1
- package/dist/index.d.ts +46 -1
- package/dist/index.js +4 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,6 +39,15 @@ const session = await paywallex.checkoutSessions.create({
|
|
|
39
39
|
|
|
40
40
|
Les montants sont en XOF entiers : `2500` veut dire 2 500 F.
|
|
41
41
|
|
|
42
|
+
### Facturation à l'usage
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
const plan = await paywallex.plans.create({ name: "Formule SMS", amount: 2000, currency: "XOF", interval: "monthly",
|
|
46
|
+
usage: { mode: "metered", unit: "SMS", unit_amount: 5, cap: 10000 } });
|
|
47
|
+
await paywallex.subscriptions.reportUsage(subscriptionId, { quantity: 120 }, { idempotencyKey: "sms-2026-10-25" });
|
|
48
|
+
// 402 usage_cap_reached : l'abonné doit relever son plafond dans Paywallex.
|
|
49
|
+
```
|
|
50
|
+
|
|
42
51
|
### Paiements partagés (plateformes)
|
|
43
52
|
|
|
44
53
|
Indiquez la part de chaque vendeur par son @identifiant : elle part sur son solde dès que l'argent de la vente est disponible chez vous. Vous gardez le reste, frais Paywallex déduits.
|
|
@@ -117,7 +126,7 @@ await paywallex.refunds.create({ payment: "…" }, { idempotencyKey: `remboursem
|
|
|
117
126
|
| `files` | `upload` (justificatifs PDF, PNG, JPEG de 5 Mo au plus) |
|
|
118
127
|
| `payouts`, `events`, `statements` | `list`, `retrieve` (`statements.csv`) |
|
|
119
128
|
| `customers`, `paymentLinks`, `invoices`, `pots` | `list`, `create`, `retrieve`, `update`, `action` |
|
|
120
|
-
| `plans`, `coupons`, `subscriptions` | création, lecture, `cancel`, `pause`, `resume`, `changePlan`, `manageLink` |
|
|
129
|
+
| `plans`, `coupons`, `subscriptions` | création, lecture, `cancel`, `pause`, `resume`, `changePlan`, `manageLink`, `reportUsage`, `usage` |
|
|
121
130
|
| `webhookEndpoints` | `list`, `create`, `del`, `rotateSecret` |
|
|
122
131
|
| client | `account()`, `balance()`, `networkStatus()` |
|
|
123
132
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.2.0";
|
|
2
2
|
/** Erreur de l'API : testez `code` (stable), jamais le message. */
|
|
3
3
|
export declare class PaywallexError extends Error {
|
|
4
4
|
readonly status: number;
|
|
@@ -42,6 +42,42 @@ export type LineItem = {
|
|
|
42
42
|
unit_amount: number;
|
|
43
43
|
quantity?: number;
|
|
44
44
|
};
|
|
45
|
+
/** DV7 : facturation à l'usage d'une offre (metered : fin de période + plafond ; credits : packs prépayés). */
|
|
46
|
+
export type UsagePlan = {
|
|
47
|
+
mode: "metered";
|
|
48
|
+
unit: string;
|
|
49
|
+
unit_amount: number;
|
|
50
|
+
cap: number;
|
|
51
|
+
} | {
|
|
52
|
+
mode: "credits";
|
|
53
|
+
unit: string;
|
|
54
|
+
pack_units: number;
|
|
55
|
+
pack_amount: number;
|
|
56
|
+
};
|
|
57
|
+
export type UsageSummary = {
|
|
58
|
+
mode: "metered" | "credits";
|
|
59
|
+
unit: string;
|
|
60
|
+
currency: string;
|
|
61
|
+
unit_amount: number | null;
|
|
62
|
+
cap: number | null;
|
|
63
|
+
unbilled_amount: number | null;
|
|
64
|
+
unbilled_quantity: number | null;
|
|
65
|
+
credits_remaining: number | null;
|
|
66
|
+
pack: {
|
|
67
|
+
units: number;
|
|
68
|
+
amount: number;
|
|
69
|
+
} | null;
|
|
70
|
+
};
|
|
71
|
+
export type UsageRecord = Obj & {
|
|
72
|
+
subscription: string;
|
|
73
|
+
mode: "metered" | "credits";
|
|
74
|
+
quantity: number;
|
|
75
|
+
amount: number;
|
|
76
|
+
description: string | null;
|
|
77
|
+
status: "unbilled" | "billed" | "credited" | "waived";
|
|
78
|
+
period: number;
|
|
79
|
+
usage?: UsageSummary | null;
|
|
80
|
+
};
|
|
45
81
|
/** DV7 : part d'un vendeur (paiements partagés). La plateforme garde le reste, frais Paywallex déduits. */
|
|
46
82
|
export type SplitInput = {
|
|
47
83
|
destination: string;
|
|
@@ -247,6 +283,15 @@ export declare class Paywallex {
|
|
|
247
283
|
manageLink: (id: string) => Promise<Obj & {
|
|
248
284
|
url: string;
|
|
249
285
|
}>;
|
|
286
|
+
reportUsage: (id: string, p: {
|
|
287
|
+
quantity: number;
|
|
288
|
+
description?: string;
|
|
289
|
+
}, o?: RequestOptions) => Promise<UsageRecord>;
|
|
290
|
+
usage: (id: string, p?: {
|
|
291
|
+
limit?: number;
|
|
292
|
+
}) => Promise<List<UsageRecord> & {
|
|
293
|
+
usage: UsageSummary | null;
|
|
294
|
+
}>;
|
|
250
295
|
};
|
|
251
296
|
readonly webhookEndpoints: {
|
|
252
297
|
list: () => Promise<List<Obj>>;
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Côté serveur uniquement : ne mettez jamais une clé secrète pwx_sk_… dans un navigateur ou une app mobile.
|
|
3
3
|
// Référence : https://api.paywallex.app/api/developer/openapi-v1.json. Signé : Superagent (DV3, 24 oct. 2026).
|
|
4
4
|
import { createHmac, randomUUID, timingSafeEqual } from "node:crypto";
|
|
5
|
-
export const VERSION = "1.
|
|
5
|
+
export const VERSION = "1.2.0";
|
|
6
6
|
/** Erreur de l'API : testez `code` (stable), jamais le message. */
|
|
7
7
|
export class PaywallexError extends Error {
|
|
8
8
|
status;
|
|
@@ -134,6 +134,9 @@ export class Paywallex {
|
|
|
134
134
|
/** Une hausse doit être acceptée par l'abonné dans Paywallex. */
|
|
135
135
|
changePlan: (id, p) => r.post(`/v1/subscriptions/${enc(id)}/change_plan`, p),
|
|
136
136
|
manageLink: (id) => r.post(`/v1/subscriptions/${enc(id)}/manage_link`, {}),
|
|
137
|
+
// DV7 : facturation à l'usage. 402 usage_cap_reached / usage_credits_exhausted si l'abonné doit agir dans Paywallex.
|
|
138
|
+
reportUsage: (id, p, o) => r.post(`/v1/subscriptions/${enc(id)}/usage`, p, o),
|
|
139
|
+
usage: (id, p) => r.get(`/v1/subscriptions/${enc(id)}/usage`, p),
|
|
137
140
|
};
|
|
138
141
|
this.webhookEndpoints = {
|
|
139
142
|
list: () => r.get("/v1/webhook_endpoints"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paywallex/node",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "SDK serveur officiel de l'API Paywallex /v1 : sessions de paiement Mobile Money, remboursements, litiges, abonnements, webhooks signés.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|