@sandpay/node est le SDK officiel TypeScript pour Node.js 20+. Il enveloppe l’API HTTP, normalise les erreurs et expose un helper de vérification des signatures webhook.
Installation
Import et constructeur
| Option | Type | Défaut | Description |
|---|---|---|---|
apiKey | string | — | Requis. Clé sp_sk_test_.... |
baseUrl | string | https://api.sandpay.dev | URL racine de l’API. Pour pointer un environnement custom. |
payments.create(input)
Crée un paiement simulé.
| Champ | Type | Requis | Notes |
|---|---|---|---|
amount | number | oui | Entier positif, unité minimale (FCFA = unité entière). |
currency | string | oui | FCFA, XOF, XAF, RWF… |
operator | mtn/orange/moov/airtel | oui | Voir guides opérateurs. |
country | string (2 lettres) | oui | ISO-3166. CI, BJ, TG, RW. |
msisdn | string | oui | Format E.164 (+225…). |
reference | string | oui | Votre référence interne (idempotence). |
description | string | non | Description libre (max 200 caractères). |
scenario | PaymentScenario | non | Voir Scénarios. |
payments.get(id)
Payment que create. Lève SandPayApiError avec status: 404 si l’id est inconnu.
payments.list(params?)
| Param | Type | Défaut | Notes |
|---|---|---|---|
limit | number (1–100) | 50 | |
country | string | — | Filtre 2 lettres. |
operator | PaymentOperator | — | |
status | PaymentStatus | — | Voir scénarios pour les 11 valeurs. |
cursor | string | — | Opaque, fourni par la page précédente. |
webhooks.verify(header, payload, secret)
Vérifie la signature HMAC-SHA256 d’un webhook. Le payload doit être le corps brut, exactement comme reçu.
Récupérer le rawBody
webhooks.parseEvent(rawBody)
Parse un corps webhook déjà vérifié en payload typé WebhookPayload. Appeler après verify(...).
Error si :
- le corps n’est pas du JSON valide (
Invalid JSON in webhook body), - le corps n’est pas un objet JSON (
Webhook body must be a JSON object), - le nom d’événement est inconnu (
Unknown webhook event: ...), - un champ requis est manquant ou n’a pas le bon type (
Missing or invalid field: ...).
Types exportés
WebhookEventName— union littérale des noms d’événements ("payment.completed"aujourd’hui).WebhookPayload— interface du payload renvoyé parparseEvent.
SandPayApiError
Lancée sur tout statut HTTP non-2xx.
| Propriété | Type | Description |
|---|---|---|
status | number | Status HTTP (400, 401, 402, 404, 429, 5xx). |
code | string | Code machine (voir Erreurs). |
message | string | Texte humain. |
detail | unknown | Payload structuré optionnel. |
requestId | string? | En-tête X-Request-Id de la réponse (utile pour le support). |