JavaScript SDK
Le SDK JavaScript officiel pour intégrer SahelPay côté serveur (Node.js, TypeScript).Installation
fetch global : Node.js 18 ou plus récent. Version actuelle du dépôt : 1.1.0 (changements).
Configuration
Créer un paiement
X-Idempotency-Keyest obligatoire côté API. Fournissez une clé stable (liée à votre commande) pour que les retries ne créent jamais de doublon ; à défaut, le SDK en génère une aléatoire à chaque appel.hosted_checkoutvauttruepar défaut :redirect_url(etcheckout_url) pointe vers le checkout SahelPay.- Après un paiement confirmé, le client est renvoyé automatiquement vers
return_url. - Partenaires SPAY : passez
items: [{ product_id, quantity }](voir Programme Partenaires SPAY).
Tester sans appel opérateur
L’optionmock active le simulateur SahelPay : aucun appel opérateur, et le
statut final est piloté par le montant (4000 réussi, 4001 échoué, 4002 en
attente, 4003 erreur opérateur). À ne pas confondre avec sandbox, qui appelle
l’environnement de test de l’opérateur. Les deux sont refusées avec une clé live.
Vérifier le statut
Liens de paiement
OPEN, bornes min_amount / max_amount).
Livraisons webhook
Paiement sécurisé
Vérifier un webhook
Gestion des erreurs
Fonctions à éviter pour l’instant
Billing 1.3.0
Clients sans téléphone viacustomer_external_ref/customer_email/customer_id,
essais (trial_end), périodes (current_period_start/end), lecture par ID et import.
Les trois SDK exposent aussi les factures et la pagination. ACTIVE ≠ paid : lire la
facture et l’abonnement canoniques avant d’accorder des droits payés.
Voir le guide Billing français/anglais pour les signatures,
les garanties de rejeu et le parcours TEST sans numéro inventé.
La version Billing 1.3.0 est disponible dans les sources taguées javascript-v1.3.0.
Avant d’installer @sahelpay/sdk@^1.3.0, vérifiez npm view @sahelpay/sdk version.
Si npm indique encore 1.1.0, clonez ce tag, exécutez npm ci puis npm run build
dans javascript et installez ce dossier local. La publication npm dépend des accès
au registre ; une version source taguée n’implique pas sa disponibilité sur npm.