SDKs
Tous les packages Wajub officiels, ce qu'il leur faut pour fonctionner et celui dont votre stack a besoin.
Il existe une seule API Wajub. Chaque package de cette page est une enveloppe légère qui respecte les conventions de son langage. Aucun ne fait donc plus que l'API REST. Ces enveloppes gèrent pour vous l'authentification, les nouvelles tentatives, l'idempotence, les erreurs typées et la pagination que vous devriez sinon réécrire dans chaque projet.
La majeure partie de la décision s'impose d'elle-même. Le package dépend de l'endroit où votre code s'exécute et le langage de celui que vous utilisez déjà. Il vous reste à vérifier la compatibilité de votre environnement d'exécution et la couverture de vos besoins par le package.
Où s'exécute votre code
Cette seule question détermine le package à choisir.
| Emplacement de votre code | Solution | Raison |
|---|---|---|
| Sur votre serveur | Un SDK serveur | Il détient la clé secrète et peut donc tout faire |
| Dans un navigateur | Wajub Components | Il affiche et confirme un checkout, rien de plus |
| Dans une application mobile | Un SDK mobile | Il affiche une interface de paiement native |
| Dans un terminal | La CLI | Transfert local des webhooks et événements de test, avec une clé restreinte rk. |
| Sur WordPress | Un plugin | Aucun code d'intégration |
| Nulle part pour le moment | Liens de paiement ou Factures | Un lien payable, sans code ni package |
| Partout ailleurs | L'API REST | Tous les endpoints documentés pour le HTTP brut |
La plupart des intégrations utilisent deux packages : un SDK serveur pour créer le paiement et un package pour navigateur ou mobile afin de l'encaisser. Cette séparation ne relève pas du style, elle dépend de l'endroit où la clé secrète peut être utilisée.
Une règle s'applique à toute la liste
La clé secrète reste sur votre serveur. Les navigateurs et les applications mobiles reçoivent un
jeton de session limité à un seul paiement, généré par un SDK serveur. Aucun package de cette page
ne change cette règle. L'API répond 403 et envoie un e-mail au propriétaire lorsqu'une clé sk.
provient d'un navigateur. Consultez Sessions et sécurité.
SDKs serveur
Sept langages pour une seule interface. Ils exposent les mêmes ressources. Seule leur syntaxe diffère, pas leurs possibilités. PHP est en 2.0.1, Node.js et C# en 2.0.0, Ruby en 1.3.0, les autres en 1.2.1.
| Langage | Package | Registre | Version | Environnement d'exécution |
|---|---|---|---|---|
| Node.js | @wajub/node | npm | 2.0.0 | Node 18+ |
| Python | wajub | PyPI | 1.2.1 | Python 3.10+, httpx |
| PHP | wajub/wajub-php | Packagist | 2.0.1 | PHP 8.4+, Guzzle 8.2 |
| Go | github.com/wajubhq/wajub-go | Go modules | v1.2.1 | Go 1.22+ |
| Ruby | wajub | RubyGems | 1.3.0 | Ruby 3.1+, aucune gem d'exécution |
| Java | com.wajub:wajub-java | Maven Central | 1.1.1 | Java 17+, OkHttp |
| C# and .NET | Wajub | NuGet | 1.1.1 | .NET 8+ |
Si votre version est inférieure au minimum, appelez directement l'API REST. Elle utilise HTTPS et JSON. Chaque endpoint de ce site fournit un exemple brut.
Python : installez la 1.2.1 ou une version ultérieure
wajub 1.1.0 et 1.1.1 ont été publiés sous la forme d'un wheel vide, un marqueur py.typed sans
aucun module. import wajub générait donc ModuleNotFoundError. La 1.2.1 est la première version
qui contient le package : pip install "wajub>=1.2.1". Changez toute version encore fixée sur
les deux précédentes.
Le même appel de sept façons
Créez un paiement, puis recevez un jeton pour le navigateur et une URL de redirection. Tous les SDKs serveur partagent cette structure.
curl https://api.wajub.com/payments \
-H "Authorization: sk_test.xxxxxxxxxxxxxxxx…" \
-H "Content-Type: application/json" \
-d '{"amount": 15000, "currency": "XAF", "customer": {"email": "buyer@example.com"}}'Ruby, Java et C# fonctionnent de la même façon selon leurs propres conventions. Chacun dispose de sa page : Ruby, Java, C#.
Fonctionnalités de chaque SDK serveur
Le client est organisé par ressources. Chaque ressource de l'API possède un objet dont le nom reste identique partout.
| Groupe | Ressources |
|---|---|
| Entrées d'argent | payments, refunds, disputes, links, invoices |
| Sorties d'argent | transfers, beneficiaries, balance |
| Personnes et comptes | customers, accounts, identity |
| Risque et conformité | shield, tax |
| Infrastructure | events, webhooks, webhookEndpoints, listen, global |
Ils fournissent aussi les comportements que vous devriez autrement recréer dans chaque projet.
- Une
Idempotency-Keyest générée pour chaque appel de modification, mais vous pouvez fournir la vôtre. - Nouvelles tentatives sur
429et5xx, avec attente exponentielle. - Une classe d'erreur par type d'échec pour distinguer l'authentification, la validation, la limite de requêtes et le transport avant même de lire le message.
- Pagination par pages avec un itérateur qui récupère la page suivante pour vous.
- Vérification de signature des webhooks pour sécuriser en un appel l'endpoint qui reçoit les événements.
- Une référence de compte Sync par requête pour les plateformes qui débitent au nom de leurs marchands.
Le nommage suit chaque langage : snake_case en Python et Ruby, camelCase ailleurs (méthodes PHP
comprises, listRefunds). Le format
d'échange reste en snake_case. Consultez les Conventions de nommage des SDKs.
Dans le navigateur
Ces packages affichent un checkout. Ils ne détiennent jamais de clé et ne peuvent ni rembourser, ni effectuer un payout, ni lister quoi que ce soit. Votre serveur crée d'abord la session.
| Package | Framework | Version minimale | Version |
|---|---|---|---|
@wajub/js | Vanilla, bundler ou CDN | Un navigateur compatible ES2020, avec un bundler ESM ou le script CDN | 1.8.1 |
@wajub/react | React 18+, Next.js | React 18, React DOM 18 | 1.8.1 |
@wajub/vue | Vue 3.3+, Nuxt | Vue 3.3 | 1.8.1 |
@wajub/svelte | Svelte, SvelteKit | Svelte 4 ou 5 | 1.8.1 |
@wajub/angular | Angular 17+, Angular SSR | Angular 17, @angular/core et @angular/common | 1.8.1 |
Les quatre packages de framework nécessitent l'installation de @wajub/js à leurs côtés, en
version 1.8.0 ou ultérieure pour @wajub/angular. Il s'agit d'une dépendance homologue, non
intégrée.
Les quatre packages de framework enveloppent @wajub/js, lui-même un petit chargeur qui récupère
l'environnement d'exécution du checkout depuis https://js.wajub.com. Toute la section possède sa propre arborescence :
Wajub Components.
Dans une application mobile
Une interface de paiement native utilise une session créée par votre serveur. Le client choisit un opérateur, saisit un numéro et approuve depuis son téléphone sans quitter votre application.
| Package | Plateforme | Version | Version minimale |
|---|---|---|---|
wajub_mobile | Flutter | 1.1.1 | Flutter 3.24, Dart 3.5 |
@wajub/react-native | React Native | 1.1.1 | React Native 0.74, React 18, @react-native-community/netinfo et @react-native-async-storage/async-storage. @stripe/stripe-react-native pour les cartes Stripe uniquement |
com.wajub:wajub-mobile-core | Kotlin, toute JVM | 1.2.1 | Java 17, Kotlin 2.0 |
com.wajub:wajub-mobile-compose | Android | 1.2.1 | Android 7.0, API 24, et Jetpack Compose |
WajubMobileUI, WajubMobile | iOS | 1.0.0 | iOS 15, Swift 5.9, Xcode 15 |
Android fournit deux artefacts, généralement nécessaires ensemble
wajub-mobile-core est une bibliothèque Kotlin et JVM simple, sans dépendance Android ni manifeste.
Elle contient le client de l'API et la logique du checkout. wajub-mobile-compose est l'archive Android qui contient
l'interface de paiement Material 3 et dépend du package principal. Utilisez uniquement le package
principal si vous créez vous-même l'interface de paiement.
Une interface de paiement, pas un client marchand
Les SDKs mobiles couvrent uniquement les paiements. Les remboursements, payouts, la Facturation, Sync, Shield et les Taxes restent sur votre serveur, avec la clé secrète. L'architecture commune est décrite dans SDKs mobiles.
iOS est un package Swift
Deux produits d'un même package Swift, ajoutés avec Swift Package Manager. WajubMobileUI contient
l'interface de paiement SwiftUI et apporte WajubMobile, le client de l'API et la logique du
checkout, qui ne dépend que de Foundation. Utilisez WajubMobile seul si vous créez vous-même
l'interface de paiement. Aucun des deux ne dépend de Stripe : une carte Stripe passe par un
CardCollector que votre application écrit. Consultez iOS.
Ce que couvre chaque package
La couverture dépend de l'endroit où le code s'exécute, pas du langage. Les sept SDKs serveur exposent les dix-huit mêmes ressources sous les mêmes noms. Les fonctionnalités ne justifient donc pas d'en privilégier un.
| Produit | SDKs serveur | Navigateur | Mobile |
|---|---|---|---|
| Paiements | payments, refunds, disputes, links | Checkout uniquement | Interface de paiement uniquement |
| Facturation | invoices | Non | Non |
| Transferts | transfers, beneficiaries, balance | Non | Non |
| Sync | accounts, avec une référence de compte par requête | Non | Non |
| Shield | shield | Non | Non |
| Taxes | tax | Non | Non |
Chaque SDK serveur propose également customers, identity, events, webhooks,
webhookEndpoints, listen et global.
Les packages pour navigateur et mobile ne sont pas des clients marchands
Ils affichent un paiement pour une session déjà créée par votre serveur. Ils ne permettent ni remboursement, ni payout, ni facture, ni liste de comptes. Ces opérations nécessitent la clé secrète, qui ne quitte jamais votre serveur. Consultez Sessions et sécurité.
Un label d'aperçu ou de bêta concerne le produit, jamais le SDK. Les clients ne bloquent aucune
fonctionnalité. shield et tax sont donc accessibles dès maintenant depuis chaque langage. La
page du produit indique s'il est disponible pour votre compte.
Contraintes à connaître avant de choisir
Deux autres points sont à connaître. La liste des packages ne permet pas de les deviner.
Le chemin du module Go n'est pas celui qu'il semble être
Le chemin d'importation est github.com/wajubhq/wajub-go. L'organisation s'appelle wajubhq.
github.com/wajub/wajub-go ne correspond à rien.
Le groupe Android est nommé com.wajub
Les deux artefacts Android sont publiés sous com.wajub, pas co.wajub. Une coordonnée Gradle
qui utilise le mauvais groupe ne peut tout simplement pas être résolue.
En ligne de commande
@wajub/cli est le seul package de cette page qui n'est pas destiné au code de production. Il
transfère les webhooks vers votre machine, déclenche des événements de test et lit les ressources
de votre API pendant le développement.
| Package | Registry | Version | Runtime |
|---|---|---|---|
@wajub/cli | npm, Homebrew, Scoop | 1.7.3 | Node 22+ |
L'installation et toutes les commandes figurent dans les pages de la CLI.
Sans SDK
Aucun élément de cette page n'est obligatoire. Chaque SDK ajoute quelques milliers de lignes au-dessus de HTTPS et JSON. La référence API documente chaque endpoint avec des exemples de requêtes et de réponses. Utilisez-la pour un langage sans package officiel, un environnement qui n'accepte pas de nouvelle dépendance ou si vous préférez voir directement les échanges.
Deux autres décisions à prendre
Choisir le package ne revient pas à choisir l'intégration. Il reste deux décisions distinctes, chacune présentée sur sa propre page.
| Décision | Documentation |
|---|---|
| Page hébergée, intégration en ligne, superposition ou champs personnalisés | Choisir une intégration |
| Adaptation des noms de champs de l'API à votre langage | Conventions de nommage des SDKs |
Pages associées
- Démarrage rapide des SDKsVotre premier appel d'API dans chaque langage, présenté côte à côte.
- Wajub ComponentsCheckout hébergé et champs de paiement dans le navigateur.
- Conventions de nommage des SDKsL'adaptation des champs API en snake_case à chaque langage.
- Projets d'exempleClonez un projet fonctionnel et configurez-le avec vos clés.
- AuthentificationClés publiques, secrètes et restreintes.
- SDKs mobilesLe contrat commun aux quatre SDKs mobiles.
- Vue d'ensemble de la référence APIAucun package nécessaire, tous les endpoints sont accessibles en HTTP brut.