tupay 0.5.2
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 +358 -0
- package/dist/cjs/client.d.ts +48 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +165 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/errors.d.ts +66 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +105 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.d.ts +86 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +110 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/liste.d.ts +54 -0
- package/dist/cjs/liste.d.ts.map +1 -0
- package/dist/cjs/liste.js +36 -0
- package/dist/cjs/liste.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/resources/events.d.ts +64 -0
- package/dist/cjs/resources/events.d.ts.map +1 -0
- package/dist/cjs/resources/events.js +104 -0
- package/dist/cjs/resources/events.js.map +1 -0
- package/dist/cjs/resources/merchants.d.ts +19 -0
- package/dist/cjs/resources/merchants.d.ts.map +1 -0
- package/dist/cjs/resources/merchants.js +29 -0
- package/dist/cjs/resources/merchants.js.map +1 -0
- package/dist/cjs/resources/payment-intents.d.ts +29 -0
- package/dist/cjs/resources/payment-intents.d.ts.map +1 -0
- package/dist/cjs/resources/payment-intents.js +22 -0
- package/dist/cjs/resources/payment-intents.js.map +1 -0
- package/dist/cjs/resources/payment-links.d.ts +38 -0
- package/dist/cjs/resources/payment-links.d.ts.map +1 -0
- package/dist/cjs/resources/payment-links.js +56 -0
- package/dist/cjs/resources/payment-links.js.map +1 -0
- package/dist/cjs/resources/refunds.d.ts +27 -0
- package/dist/cjs/resources/refunds.d.ts.map +1 -0
- package/dist/cjs/resources/refunds.js +33 -0
- package/dist/cjs/resources/refunds.js.map +1 -0
- package/dist/cjs/resources/test-helpers.d.ts +42 -0
- package/dist/cjs/resources/test-helpers.d.ts.map +1 -0
- package/dist/cjs/resources/test-helpers.js +50 -0
- package/dist/cjs/resources/test-helpers.js.map +1 -0
- package/dist/cjs/resources/transactions.d.ts +29 -0
- package/dist/cjs/resources/transactions.d.ts.map +1 -0
- package/dist/cjs/resources/transactions.js +65 -0
- package/dist/cjs/resources/transactions.js.map +1 -0
- package/dist/cjs/resources/webhook-endpoints.d.ts +43 -0
- package/dist/cjs/resources/webhook-endpoints.d.ts.map +1 -0
- package/dist/cjs/resources/webhook-endpoints.js +71 -0
- package/dist/cjs/resources/webhook-endpoints.js.map +1 -0
- package/dist/cjs/types.d.ts +166 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +10 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/webhooks.d.ts +31 -0
- package/dist/cjs/webhooks.d.ts.map +1 -0
- package/dist/cjs/webhooks.js +81 -0
- package/dist/cjs/webhooks.js.map +1 -0
- package/dist/esm/client.d.ts +48 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +161 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/errors.d.ts +66 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +90 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +86 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +90 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/liste.d.ts +54 -0
- package/dist/esm/liste.d.ts.map +1 -0
- package/dist/esm/liste.js +32 -0
- package/dist/esm/liste.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/resources/events.d.ts +64 -0
- package/dist/esm/resources/events.d.ts.map +1 -0
- package/dist/esm/resources/events.js +100 -0
- package/dist/esm/resources/events.js.map +1 -0
- package/dist/esm/resources/merchants.d.ts +19 -0
- package/dist/esm/resources/merchants.d.ts.map +1 -0
- package/dist/esm/resources/merchants.js +25 -0
- package/dist/esm/resources/merchants.js.map +1 -0
- package/dist/esm/resources/payment-intents.d.ts +29 -0
- package/dist/esm/resources/payment-intents.d.ts.map +1 -0
- package/dist/esm/resources/payment-intents.js +18 -0
- package/dist/esm/resources/payment-intents.js.map +1 -0
- package/dist/esm/resources/payment-links.d.ts +38 -0
- package/dist/esm/resources/payment-links.d.ts.map +1 -0
- package/dist/esm/resources/payment-links.js +52 -0
- package/dist/esm/resources/payment-links.js.map +1 -0
- package/dist/esm/resources/refunds.d.ts +27 -0
- package/dist/esm/resources/refunds.d.ts.map +1 -0
- package/dist/esm/resources/refunds.js +29 -0
- package/dist/esm/resources/refunds.js.map +1 -0
- package/dist/esm/resources/test-helpers.d.ts +42 -0
- package/dist/esm/resources/test-helpers.d.ts.map +1 -0
- package/dist/esm/resources/test-helpers.js +46 -0
- package/dist/esm/resources/test-helpers.js.map +1 -0
- package/dist/esm/resources/transactions.d.ts +29 -0
- package/dist/esm/resources/transactions.d.ts.map +1 -0
- package/dist/esm/resources/transactions.js +61 -0
- package/dist/esm/resources/transactions.js.map +1 -0
- package/dist/esm/resources/webhook-endpoints.d.ts +43 -0
- package/dist/esm/resources/webhook-endpoints.d.ts.map +1 -0
- package/dist/esm/resources/webhook-endpoints.js +67 -0
- package/dist/esm/resources/webhook-endpoints.js.map +1 -0
- package/dist/esm/types.d.ts +166 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +9 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/webhooks.d.ts +31 -0
- package/dist/esm/webhooks.d.ts.map +1 -0
- package/dist/esm/webhooks.js +77 -0
- package/dist/esm/webhooks.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Merchants = void 0;
|
|
4
|
+
class Merchants {
|
|
5
|
+
client;
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Profil du marchand associé à la clé.
|
|
11
|
+
*
|
|
12
|
+
* Utile au démarrage : `kyb_status` doit valoir `validated` pour
|
|
13
|
+
* encaisser en mode live, et `id` est le `merchantId` attendu par
|
|
14
|
+
* `paymentIntents.create`.
|
|
15
|
+
*
|
|
16
|
+
* La mise à jour du profil (nom, IBAN) n'est pas exposée : elle exige
|
|
17
|
+
* une session humaine sur le dashboard, parce que changer l'IBAN
|
|
18
|
+
* redirige les virements.
|
|
19
|
+
*/
|
|
20
|
+
async me() {
|
|
21
|
+
const { data } = await this.client.request({
|
|
22
|
+
method: 'GET',
|
|
23
|
+
path: '/merchants/me',
|
|
24
|
+
});
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.Merchants = Merchants;
|
|
29
|
+
//# sourceMappingURL=merchants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merchants.js","sourceRoot":"","sources":["../../../src/resources/merchants.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAS;IACS;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB;YAC7D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe;SACtB,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AArBD,8BAqBC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TupayClient } from '../client.js';
|
|
2
|
+
import type { PaymentIntent } from '../types.js';
|
|
3
|
+
export interface CreatePaymentIntentParams {
|
|
4
|
+
/** Entier XPF, entre 100 et 10 000 000. */
|
|
5
|
+
amountXpf: number;
|
|
6
|
+
/**
|
|
7
|
+
* Facultatif — le marchand est déduit de votre clé API.
|
|
8
|
+
*
|
|
9
|
+
* Ne le fournissez que si vous tenez à ce que le serveur vérifie que
|
|
10
|
+
* vous visez bien le compte attendu : un `merchantId` qui ne
|
|
11
|
+
* correspond pas à la clé répond 403.
|
|
12
|
+
*/
|
|
13
|
+
merchantId?: string;
|
|
14
|
+
paymentLinkId?: string;
|
|
15
|
+
metadata?: Record<string, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Clé d'idempotence. Omise, le SDK en génère une (UUID v4) : la requête
|
|
18
|
+
* devient rejouable sans risque de double débit. Fournissez la vôtre si
|
|
19
|
+
* vous voulez qu'un retry applicatif ultérieur retombe sur le même
|
|
20
|
+
* résultat — par exemple une clé dérivée de votre numéro de commande.
|
|
21
|
+
*/
|
|
22
|
+
idempotencyKey?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class PaymentIntents {
|
|
25
|
+
private readonly client;
|
|
26
|
+
constructor(client: TupayClient);
|
|
27
|
+
create(params: CreatePaymentIntentParams): Promise<PaymentIntent>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=payment-intents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-intents.d.ts","sourceRoot":"","sources":["../../../src/resources/payment-intents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAE1C,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;CAUxE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PaymentIntents = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
class PaymentIntents {
|
|
6
|
+
client;
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
async create(params) {
|
|
11
|
+
const { idempotencyKey, ...body } = params;
|
|
12
|
+
const { data } = await this.client.request({
|
|
13
|
+
method: 'POST',
|
|
14
|
+
path: '/payments/intent',
|
|
15
|
+
body,
|
|
16
|
+
idempotencyKey: idempotencyKey ?? client_js_1.TupayClient.idempotencyKey(),
|
|
17
|
+
});
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.PaymentIntents = PaymentIntents;
|
|
22
|
+
//# sourceMappingURL=payment-intents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../../src/resources/payment-intents.ts"],"names":[],"mappings":";;;AAAA,4CAA0C;AAyB1C,MAAa,cAAc;IACI;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,MAAM,CAAC,MAAiC;QAC5C,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YAClE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB;YACxB,IAAI;YACJ,cAAc,EAAE,cAAc,IAAI,uBAAW,CAAC,cAAc,EAAE;SAC/D,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAbD,wCAaC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, PaymentLink } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface CreatePaymentLinkParams {
|
|
5
|
+
/** Entier XPF, entre 100 et 10 000 000. Le XPF n'a pas de centimes. */
|
|
6
|
+
amountXpf: number;
|
|
7
|
+
description: string;
|
|
8
|
+
/**
|
|
9
|
+
* Où renvoyer le client après paiement. Tupay y ajoute
|
|
10
|
+
* `?tupay_transaction=<uuid>&tupay_status=<statut>`.
|
|
11
|
+
*
|
|
12
|
+
* ⚠️ Ces paramètres transitent par le navigateur du client : ils sont
|
|
13
|
+
* falsifiables. Ne validez jamais une commande dessus — seul le
|
|
14
|
+
* webhook signé fait foi.
|
|
15
|
+
*/
|
|
16
|
+
returnUrl?: string;
|
|
17
|
+
/** Vos identifiants (n° de commande…), relisibles via `retrieve()`. */
|
|
18
|
+
metadata?: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
export declare class PaymentLinks {
|
|
21
|
+
#private;
|
|
22
|
+
private readonly client;
|
|
23
|
+
constructor(client: TupayClient);
|
|
24
|
+
/**
|
|
25
|
+
* Crée un lien de paiement partageable.
|
|
26
|
+
*
|
|
27
|
+
* Non rejouable automatiquement : l'API n'accepte pas d'en-tête
|
|
28
|
+
* d'idempotence ici, une reprise créerait un second lien. En cas de
|
|
29
|
+
* timeout, listez avant de recréer.
|
|
30
|
+
*/
|
|
31
|
+
create(params: CreatePaymentLinkParams): Promise<PaymentLink>;
|
|
32
|
+
retrieve(id: string): Promise<PaymentLink>;
|
|
33
|
+
list(params?: ListParams): Promise<ListResult<PaymentLink>>;
|
|
34
|
+
/** Désactive le lien : il n'est plus payable, mais reste consultable. */
|
|
35
|
+
deactivate(id: string): Promise<PaymentLink>;
|
|
36
|
+
activate(id: string): Promise<PaymentLink>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=payment-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-links.d.ts","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,qBAAa,YAAY;;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAS7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAUrE,yEAAyE;IACnE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAYjD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PaymentLinks = void 0;
|
|
4
|
+
const liste_js_1 = require("../liste.js");
|
|
5
|
+
class PaymentLinks {
|
|
6
|
+
client;
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Crée un lien de paiement partageable.
|
|
12
|
+
*
|
|
13
|
+
* Non rejouable automatiquement : l'API n'accepte pas d'en-tête
|
|
14
|
+
* d'idempotence ici, une reprise créerait un second lien. En cas de
|
|
15
|
+
* timeout, listez avant de recréer.
|
|
16
|
+
*/
|
|
17
|
+
async create(params) {
|
|
18
|
+
const { data } = await this.client.request({
|
|
19
|
+
method: 'POST',
|
|
20
|
+
path: '/payment-links',
|
|
21
|
+
body: params,
|
|
22
|
+
});
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
async retrieve(id) {
|
|
26
|
+
const { data } = await this.client.request({
|
|
27
|
+
method: 'GET',
|
|
28
|
+
path: `/payment-links/${encodeURIComponent(id)}`,
|
|
29
|
+
});
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
async list(params = {}) {
|
|
33
|
+
return (0, liste_js_1.normaliserListe)(await this.client.request({
|
|
34
|
+
method: 'GET',
|
|
35
|
+
path: '/payment-links',
|
|
36
|
+
query: (0, liste_js_1.parametresListe)(params),
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
/** Désactive le lien : il n'est plus payable, mais reste consultable. */
|
|
40
|
+
async deactivate(id) {
|
|
41
|
+
return this.#setActive(id, false);
|
|
42
|
+
}
|
|
43
|
+
async activate(id) {
|
|
44
|
+
return this.#setActive(id, true);
|
|
45
|
+
}
|
|
46
|
+
async #setActive(id, active) {
|
|
47
|
+
const { data } = await this.client.request({
|
|
48
|
+
method: 'PATCH',
|
|
49
|
+
path: `/payment-links/${encodeURIComponent(id)}`,
|
|
50
|
+
body: { active },
|
|
51
|
+
});
|
|
52
|
+
return data;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.PaymentLinks = PaymentLinks;
|
|
56
|
+
//# sourceMappingURL=payment-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-links.js","sourceRoot":"","sources":["../../../src/resources/payment-links.ts"],"names":[],"mappings":";;;AAEA,0CAKoB;AAmBpB,MAAa,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,MAA+B;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACjD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,IAAA,0BAAe,EAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,MAAe;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAtDD,oCAsDC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, Refund } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface CreateRefundParams {
|
|
5
|
+
transactionId: string;
|
|
6
|
+
/**
|
|
7
|
+
* Montant à rembourser, en XPF entiers. **Omis = tout le reliquat.**
|
|
8
|
+
*
|
|
9
|
+
* Les remboursements partiels s'accumulent : après un remboursement
|
|
10
|
+
* partiel, `transaction.status` reste `succeeded` et c'est
|
|
11
|
+
* `refundedAmountXpf` qui reflète le cumul.
|
|
12
|
+
*/
|
|
13
|
+
amountXpf?: number;
|
|
14
|
+
reason?: string;
|
|
15
|
+
/** Omise, le SDK génère un UUID v4 — la requête devient rejouable. */
|
|
16
|
+
idempotencyKey?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ListRefundsParams extends ListParams {
|
|
19
|
+
transactionId?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class Refunds {
|
|
22
|
+
private readonly client;
|
|
23
|
+
constructor(client: TupayClient);
|
|
24
|
+
create(params: CreateRefundParams): Promise<Refund>;
|
|
25
|
+
list(params?: ListRefundsParams): Promise<ListResult<Refund>>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=refunds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refunds.d.ts","sourceRoot":"","sources":["../../../src/resources/refunds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAE1C,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnD,IAAI,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAYxE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Refunds = void 0;
|
|
4
|
+
const client_js_1 = require("../client.js");
|
|
5
|
+
const liste_js_1 = require("../liste.js");
|
|
6
|
+
class Refunds {
|
|
7
|
+
client;
|
|
8
|
+
constructor(client) {
|
|
9
|
+
this.client = client;
|
|
10
|
+
}
|
|
11
|
+
async create(params) {
|
|
12
|
+
const { idempotencyKey, ...body } = params;
|
|
13
|
+
const { data } = await this.client.request({
|
|
14
|
+
method: 'POST',
|
|
15
|
+
path: '/refunds',
|
|
16
|
+
body,
|
|
17
|
+
idempotencyKey: idempotencyKey ?? client_js_1.TupayClient.idempotencyKey(),
|
|
18
|
+
});
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
async list(params = {}) {
|
|
22
|
+
return (0, liste_js_1.normaliserListe)(await this.client.request({
|
|
23
|
+
method: 'GET',
|
|
24
|
+
path: '/refunds',
|
|
25
|
+
query: {
|
|
26
|
+
...(0, liste_js_1.parametresListe)(params),
|
|
27
|
+
transactionId: params.transactionId,
|
|
28
|
+
},
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Refunds = Refunds;
|
|
33
|
+
//# sourceMappingURL=refunds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refunds.js","sourceRoot":"","sources":["../../../src/resources/refunds.ts"],"names":[],"mappings":";;;AAAA,4CAA0C;AAE1C,0CAKoB;AAqBpB,MAAa,OAAO;IACW;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,MAAM,CAAC,MAA0B;QACrC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAmB;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,cAAc,EAAE,cAAc,IAAI,uBAAW,CAAC,cAAc,EAAE;SAC/D,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAA4B,EAAE;QACvC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE;gBACL,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC;gBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF;AA1BD,0BA0BC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { Transaction } from '../types.js';
|
|
3
|
+
export type SimulateOutcome = 'succeeded' | 'failed' | 'processing';
|
|
4
|
+
export interface SimulateResult extends Transaction {
|
|
5
|
+
simulated: true;
|
|
6
|
+
eventId?: string;
|
|
7
|
+
endpointsNotified?: number;
|
|
8
|
+
alreadyInState?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Utilitaires réservés au **mode test**.
|
|
12
|
+
*
|
|
13
|
+
* Le bac à sable ne résout pas les paiements tout seul : c'est vous qui
|
|
14
|
+
* décidez de l'issue. C'est ce qui permet de tester les chemins d'échec
|
|
15
|
+
* et de recevoir de vrais webhooks signés sans qu'un centime bouge.
|
|
16
|
+
*/
|
|
17
|
+
export declare class TestHelpers {
|
|
18
|
+
private readonly client;
|
|
19
|
+
constructor(client: TupayClient);
|
|
20
|
+
/**
|
|
21
|
+
* Force l'issue d'un paiement de test et déclenche le webhook associé.
|
|
22
|
+
*
|
|
23
|
+
* Rejouer la même issue ne réémet pas d'événement (`alreadyInState`).
|
|
24
|
+
*
|
|
25
|
+
* @throws {TupayError} si le client a été construit avec une clé live —
|
|
26
|
+
* on échoue localement plutôt que d'envoyer une requête vouée au 403.
|
|
27
|
+
*/
|
|
28
|
+
simulatePayment(transactionId: string, outcome: SimulateOutcome): Promise<SimulateResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Montants XPF qui provoquent un échec **dès la création** de l'intent.
|
|
31
|
+
* Pratique pour tester vos écrans d'erreur.
|
|
32
|
+
*/
|
|
33
|
+
static readonly magicAmounts: {
|
|
34
|
+
/** → `card_declined` */
|
|
35
|
+
readonly cardDeclined: 402;
|
|
36
|
+
/** → `insufficient_funds` */
|
|
37
|
+
readonly insufficientFunds: 403;
|
|
38
|
+
/** → `rate_limited` (marquée réessayable) */
|
|
39
|
+
readonly rateLimited: 429;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAA;AAEnE,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,SAAS,EAAE,IAAI,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;;OAOG;IACG,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC;IAgB1B;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY;QAC1B,wBAAwB;;QAExB,6BAA6B;;QAE7B,6CAA6C;;MAErC;CACX"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestHelpers = void 0;
|
|
4
|
+
const errors_js_1 = require("../errors.js");
|
|
5
|
+
/**
|
|
6
|
+
* Utilitaires réservés au **mode test**.
|
|
7
|
+
*
|
|
8
|
+
* Le bac à sable ne résout pas les paiements tout seul : c'est vous qui
|
|
9
|
+
* décidez de l'issue. C'est ce qui permet de tester les chemins d'échec
|
|
10
|
+
* et de recevoir de vrais webhooks signés sans qu'un centime bouge.
|
|
11
|
+
*/
|
|
12
|
+
class TestHelpers {
|
|
13
|
+
client;
|
|
14
|
+
constructor(client) {
|
|
15
|
+
this.client = client;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Force l'issue d'un paiement de test et déclenche le webhook associé.
|
|
19
|
+
*
|
|
20
|
+
* Rejouer la même issue ne réémet pas d'événement (`alreadyInState`).
|
|
21
|
+
*
|
|
22
|
+
* @throws {TupayError} si le client a été construit avec une clé live —
|
|
23
|
+
* on échoue localement plutôt que d'envoyer une requête vouée au 403.
|
|
24
|
+
*/
|
|
25
|
+
async simulatePayment(transactionId, outcome) {
|
|
26
|
+
if (this.client.livemode) {
|
|
27
|
+
throw new errors_js_1.TupayError('simulatePayment est réservé au mode test. Construisez le client avec une clé tpk_test_.', { code: 'livemode_mismatch' });
|
|
28
|
+
}
|
|
29
|
+
const { data } = await this.client.request({
|
|
30
|
+
method: 'POST',
|
|
31
|
+
path: '/test/simulate',
|
|
32
|
+
body: { transactionId, outcome },
|
|
33
|
+
});
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Montants XPF qui provoquent un échec **dès la création** de l'intent.
|
|
38
|
+
* Pratique pour tester vos écrans d'erreur.
|
|
39
|
+
*/
|
|
40
|
+
static magicAmounts = {
|
|
41
|
+
/** → `card_declined` */
|
|
42
|
+
cardDeclined: 402,
|
|
43
|
+
/** → `insufficient_funds` */
|
|
44
|
+
insufficientFunds: 403,
|
|
45
|
+
/** → `rate_limited` (marquée réessayable) */
|
|
46
|
+
rateLimited: 429,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
exports.TestHelpers = TestHelpers;
|
|
50
|
+
//# sourceMappingURL=test-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/resources/test-helpers.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAazC;;;;;;GAMG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,aAAqB,EACrB,OAAwB;QAExB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,sBAAU,CAClB,yFAAyF,EACzF,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAA;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA2B;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;SACjC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAU,YAAY,GAAG;QAC7B,wBAAwB;QACxB,YAAY,EAAE,GAAG;QACjB,6BAA6B;QAC7B,iBAAiB,EAAE,GAAG;QACtB,6CAA6C;QAC7C,WAAW,EAAE,GAAG;KACR,CAAA;;AAzCZ,kCA0CC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, Transaction, TransactionStatus } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface ListTransactionsParams extends ListParams {
|
|
5
|
+
status?: TransactionStatus;
|
|
6
|
+
/** Date ISO 8601 — ne renvoie que les transactions postérieures. */
|
|
7
|
+
createdAfter?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class Transactions {
|
|
10
|
+
private readonly client;
|
|
11
|
+
constructor(client: TupayClient);
|
|
12
|
+
retrieve(id: string): Promise<Transaction>;
|
|
13
|
+
list(params?: ListTransactionsParams): Promise<ListResult<Transaction>>;
|
|
14
|
+
/**
|
|
15
|
+
* Parcourt toutes les pages, une transaction à la fois.
|
|
16
|
+
*
|
|
17
|
+
* Avance par CURSEUR et non plus par décalage : une transaction qui
|
|
18
|
+
* naît pendant le parcours ne décale plus la fenêtre, et rien n'est
|
|
19
|
+
* sauté. `offset` reste accepté par `list()`, mais l'itérateur ne s'y
|
|
20
|
+
* appuie plus.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* for await (const tx of tupay.transactions.autoPagingEach({ status: 'succeeded' })) {
|
|
24
|
+
* total += tx.amountXpf
|
|
25
|
+
* }
|
|
26
|
+
*/
|
|
27
|
+
autoPagingEach(params?: ListTransactionsParams): AsyncGenerator<Transaction, void, undefined>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=transactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../src/resources/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,sBAAuB,SAAQ,UAAU;IACxD,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAE1C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1C,IAAI,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAcjF;;;;;;;;;;;;OAYG;IACI,cAAc,CACnB,MAAM,GAAE,sBAA2B,GAClC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC;CAqBhD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Transactions = void 0;
|
|
4
|
+
const liste_js_1 = require("../liste.js");
|
|
5
|
+
class Transactions {
|
|
6
|
+
client;
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
async retrieve(id) {
|
|
11
|
+
const { data } = await this.client.request({
|
|
12
|
+
method: 'GET',
|
|
13
|
+
path: `/transactions/${encodeURIComponent(id)}`,
|
|
14
|
+
});
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
async list(params = {}) {
|
|
18
|
+
return (0, liste_js_1.normaliserListe)(await this.client.request({
|
|
19
|
+
method: 'GET',
|
|
20
|
+
path: '/transactions',
|
|
21
|
+
query: {
|
|
22
|
+
...(0, liste_js_1.parametresListe)(params),
|
|
23
|
+
status: params.status,
|
|
24
|
+
created_after: params.createdAfter,
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parcourt toutes les pages, une transaction à la fois.
|
|
30
|
+
*
|
|
31
|
+
* Avance par CURSEUR et non plus par décalage : une transaction qui
|
|
32
|
+
* naît pendant le parcours ne décale plus la fenêtre, et rien n'est
|
|
33
|
+
* sauté. `offset` reste accepté par `list()`, mais l'itérateur ne s'y
|
|
34
|
+
* appuie plus.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* for await (const tx of tupay.transactions.autoPagingEach({ status: 'succeeded' })) {
|
|
38
|
+
* total += tx.amountXpf
|
|
39
|
+
* }
|
|
40
|
+
*/
|
|
41
|
+
async *autoPagingEach(params = {}) {
|
|
42
|
+
const limit = params.limit ?? 100;
|
|
43
|
+
let startingAfter = params.startingAfter;
|
|
44
|
+
let precedent;
|
|
45
|
+
for (;;) {
|
|
46
|
+
const page = await this.list({ ...params, limit, offset: undefined, startingAfter });
|
|
47
|
+
for (const transaction of page.data)
|
|
48
|
+
yield transaction;
|
|
49
|
+
const dernier = page.data[page.data.length - 1];
|
|
50
|
+
// Une page vide signifie la fin, même si le serveur annonçait
|
|
51
|
+
// `hasMore` : ceinture et bretelles contre une boucle infinie.
|
|
52
|
+
if (!page.hasMore || !dernier)
|
|
53
|
+
return;
|
|
54
|
+
// Et si le curseur n'avance pas, on s'arrête aussi. Une API plus
|
|
55
|
+
// ancienne que ce SDK ignorerait `starting_after` et rendrait
|
|
56
|
+
// indéfiniment la première page.
|
|
57
|
+
if (dernier.id === precedent)
|
|
58
|
+
return;
|
|
59
|
+
precedent = dernier.id;
|
|
60
|
+
startingAfter = dernier.id;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.Transactions = Transactions;
|
|
65
|
+
//# sourceMappingURL=transactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../../src/resources/transactions.ts"],"names":[],"mappings":";;;AAEA,0CAKoB;AAQpB,MAAa,YAAY;IACM;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAChE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,iBAAiB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAChD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiC,EAAE;QAC5C,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA0B;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE;gBACL,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,YAAY;aACnC;SACF,CAAC,CACH,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,cAAc,CACnB,SAAiC,EAAE;QAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAA;QACjC,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAA;QACxC,IAAI,SAA6B,CAAA;QAEjC,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;YACpF,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,WAAW,CAAA;YAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAC/C,8DAA8D;YAC9D,+DAA+D;YAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;gBAAE,OAAM;YACrC,iEAAiE;YACjE,8DAA8D;YAC9D,iCAAiC;YACjC,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;gBAAE,OAAM;YACpC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAA;YACtB,aAAa,GAAG,OAAO,CAAC,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;CACF;AA7DD,oCA6DC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { TupayClient } from '../client.js';
|
|
2
|
+
import type { ListResult, WebhookDelivery, WebhookEndpoint, WebhookEndpointWithSecret, WebhookEventType } from '../types.js';
|
|
3
|
+
import { type ListParams } from '../liste.js';
|
|
4
|
+
export interface CreateWebhookEndpointParams {
|
|
5
|
+
/** HTTPS et port 443 obligatoires en mode live. */
|
|
6
|
+
url: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
/** Défaut `['*']` (tout recevoir). */
|
|
9
|
+
enabledEvents?: (WebhookEventType | '*')[];
|
|
10
|
+
}
|
|
11
|
+
export interface UpdateWebhookEndpointParams {
|
|
12
|
+
url?: string;
|
|
13
|
+
description?: string | null;
|
|
14
|
+
enabledEvents?: (WebhookEventType | '*')[];
|
|
15
|
+
status?: 'enabled' | 'disabled';
|
|
16
|
+
}
|
|
17
|
+
export interface ListDeliveriesParams extends ListParams {
|
|
18
|
+
status?: WebhookDelivery['status'];
|
|
19
|
+
eventType?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class WebhookEndpoints {
|
|
22
|
+
private readonly client;
|
|
23
|
+
constructor(client: TupayClient);
|
|
24
|
+
/**
|
|
25
|
+
* Déclare un endpoint.
|
|
26
|
+
*
|
|
27
|
+
* ⚠️ La réponse est le **seul** endroit où `secret` apparaît. Stockez-le
|
|
28
|
+
* immédiatement (variable d'environnement, coffre) : il n'est plus jamais
|
|
29
|
+
* lisible ensuite. Perdu = supprimer l'endpoint et en recréer un.
|
|
30
|
+
*/
|
|
31
|
+
create(params: CreateWebhookEndpointParams): Promise<WebhookEndpointWithSecret>;
|
|
32
|
+
retrieve(id: string): Promise<WebhookEndpoint>;
|
|
33
|
+
list(params?: ListParams): Promise<ListResult<WebhookEndpoint>>;
|
|
34
|
+
update(id: string, params: UpdateWebhookEndpointParams): Promise<WebhookEndpoint>;
|
|
35
|
+
/** Désactivation logique — l'historique de livraison reste consultable. */
|
|
36
|
+
del(id: string): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Historique de livraison — l'outil de débogage n°1 d'une intégration.
|
|
39
|
+
* Filtrez sur `status: 'failed'` pour voir ce que votre serveur a renvoyé.
|
|
40
|
+
*/
|
|
41
|
+
listDeliveries(id: string, params?: ListDeliveriesParams): Promise<ListResult<WebhookDelivery>>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=webhook-endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-endpoints.d.ts","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,2BAA2B;IAC1C,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAA;IAC1C,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;CAChC;AAED,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEhD;;;;;;OAMG;IACG,MAAM,CACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,yBAAyB,CAAC;IAW/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ9C,IAAI,CAAC,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAUnE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,eAAe,CAAC;IAS3B,2EAA2E;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC;;;OAGG;IACG,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAaxC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebhookEndpoints = void 0;
|
|
4
|
+
const liste_js_1 = require("../liste.js");
|
|
5
|
+
class WebhookEndpoints {
|
|
6
|
+
client;
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Déclare un endpoint.
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ La réponse est le **seul** endroit où `secret` apparaît. Stockez-le
|
|
14
|
+
* immédiatement (variable d'environnement, coffre) : il n'est plus jamais
|
|
15
|
+
* lisible ensuite. Perdu = supprimer l'endpoint et en recréer un.
|
|
16
|
+
*/
|
|
17
|
+
async create(params) {
|
|
18
|
+
const { data } = await this.client.request({
|
|
19
|
+
method: 'POST',
|
|
20
|
+
path: '/webhook-endpoints',
|
|
21
|
+
body: params,
|
|
22
|
+
});
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
async retrieve(id) {
|
|
26
|
+
const { data } = await this.client.request({
|
|
27
|
+
method: 'GET',
|
|
28
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}`,
|
|
29
|
+
});
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
async list(params = {}) {
|
|
33
|
+
return (0, liste_js_1.normaliserListe)(await this.client.request({
|
|
34
|
+
method: 'GET',
|
|
35
|
+
path: '/webhook-endpoints',
|
|
36
|
+
query: (0, liste_js_1.parametresListe)(params),
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
async update(id, params) {
|
|
40
|
+
const { data } = await this.client.request({
|
|
41
|
+
method: 'PATCH',
|
|
42
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}`,
|
|
43
|
+
body: params,
|
|
44
|
+
});
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
/** Désactivation logique — l'historique de livraison reste consultable. */
|
|
48
|
+
async del(id) {
|
|
49
|
+
await this.client.request({
|
|
50
|
+
method: 'DELETE',
|
|
51
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Historique de livraison — l'outil de débogage n°1 d'une intégration.
|
|
56
|
+
* Filtrez sur `status: 'failed'` pour voir ce que votre serveur a renvoyé.
|
|
57
|
+
*/
|
|
58
|
+
async listDeliveries(id, params = {}) {
|
|
59
|
+
return (0, liste_js_1.normaliserListe)(await this.client.request({
|
|
60
|
+
method: 'GET',
|
|
61
|
+
path: `/webhook-endpoints/${encodeURIComponent(id)}/deliveries`,
|
|
62
|
+
query: {
|
|
63
|
+
...(0, liste_js_1.parametresListe)(params),
|
|
64
|
+
status: params.status,
|
|
65
|
+
eventType: params.eventType,
|
|
66
|
+
},
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.WebhookEndpoints = WebhookEndpoints;
|
|
71
|
+
//# sourceMappingURL=webhook-endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-endpoints.js","sourceRoot":"","sources":["../../../src/resources/webhook-endpoints.ts"],"names":[],"mappings":";;;AAQA,0CAKoB;AAsBpB,MAAa,gBAAgB;IACE;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAEvC;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAqB,EAAE;QAChC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,IAAA,0BAAe,EAAC,MAAM,CAAC;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,MAAmC;QAEnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA4B;YACpE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;YACpD,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAU;YACjC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE;SACrD,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,EAAU,EACV,SAA+B,EAAE;QAEjC,OAAO,IAAA,0BAAe,EACpB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAA8B;YACrD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,aAAa;YAC/D,KAAK,EAAE;gBACL,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF;AAjFD,4CAiFC"}
|