Aller au contenu

SDK Node.js

Le SDK @sangho/node est le client officiel Sangho pour Node.js 18+. Il supporte les modes ESM et CommonJS et est optimisé pour les environnements serveur, Edge Functions et serverless.

Installation

bash
# Avec NPM
npm install @sangho/node
# Avec PNPM
pnpm add @sangho/node
# Avec YARN
yarn add @sangho/node

Modules disponibles

appsaddressespaymentIntentscheckoutSessionstransactionsrefundspaymentLinkscustomerspaymentMethodsproductsinvoicesreceiptssubscriptionswebhookssecurityterminal
Node.js & Edge

Le SDK est entièrement typé. Les interfaces sont exportées directement — importez PaymentIntent, Customer, ListResponse, etc. depuis @sangho/node sans configuration supplémentaire.

Initialisation

javascript
import Sangho from '@sangho/node';
// Clé directe (déconseillé en production)
const sangho = new Sangho('sk_live_xxxxxxxxxxxx');
// Depuis variable d'environnement (recommandé)
const sangho = new Sangho(process.env.SANGHO_SECRET_KEY!);
// Options avancées
const sangho = new Sangho('sk_live_xxxx', {
  baseURL: 'https://api.sangho.com/v1/',
  timeout: 30_000,
  maxRetries: 3,
});

Gestion des erreurs

Toutes les erreurs levées par le SDK héritent de SanghoError. Utilisez instanceof pour différencier les cas métier.

Pagination

Les endpoints de liste retournent un objet ListResponse<T> avec les champs count, next, previous et results. Utilisez les paramètres page et page_size pour naviguer.

Retry automatique

Le SDK retente automatiquement les erreurs 429 (rate limit) et 5xx avec un backoff exponentiel. Configurez maxRetries à l’initialisation (défaut : 3).

Gestion des erreurs

javascript
import Sangho, { SanghoError } from '@sangho/node';
const sangho = new Sangho(process.env.SANGHO_SECRET_KEY!);
try {
  const intent = await sangho.paymentIntents.create({
    amount: 5000,
    currency: 'XAF',
    payment_method_types: ['mobile_money'],
  });
  console.log(intent.id);
} catch (err) {
  if (err instanceof SanghoError) {
    console.error(err.code);    // Code métier Sangho
    console.error(err.message); // Message lisible
    console.error(err.status);  // Code HTTP (400, 401, 422…)
  }
}

Pagination

javascript
// Page 1
const page1 = await sangho.transactions.list({
  status: 'completed',
  page: 1,
  page_size: 20,
});
console.log(page1.count);    // Total de résultats
console.log(page1.results);  // Tableau de la page courante
// Page suivante
if (page1.next) {
  const page2 = await sangho.transactions.list({
    status: 'completed',
    page: 2,
    page_size: 20,
  });
}