Wajub.js
Le package principal pour navigateur, ce qu'il charge, ce qu'il exporte et comment l'appeler.
Tous les checkouts Wajub reposent sur le package @wajub/js. Les packages React, Vue et Svelte
l'enveloppent. Cette page présente uniquement le package principal : ce qu'il charge, ce qu'il
exporte et les trois façons d'accéder à la même API.
@wajub/js
Stable · GAnpm + CDN
- Version
- 1.4.0
- Runtime
- Any modern browser (ES2020+)
Couvre
- Paiements
- Liens de paiement
Absent de ce paquet : Facturation, Transferts, Sync, Shield, Taxes.
Le package npm est un chargeur, pas l'environnement d'exécution
L'installation de @wajub/js n'ajoute pas le checkout à votre bundle. Ce petit chargeur récupère
le véritable environnement d'exécution depuis https://js.wajub.com lors du premier appel.
| Élément installé | Taille | Contenu |
|---|---|---|
@wajub/js depuis npm | Environ 11 Ko | Chargeur, types et helpers exportés |
https://js.wajub.com | Environ 168 Ko | Checkout lui-même, iframes, moyens de paiement et états |
Il n'existe aucun build hors ligne
Les deux parcours aboutissent à la même origine. Une correction liée aux cartes ou un nouvel
opérateur atteint votre checkout sans nouveau déploiement de votre côté, c'est l'objectif. En
revanche, un navigateur qui ne peut pas accéder à js.wajub.com ne dispose d'aucun checkout.
Prenez cette origine en compte comme vous le faites pour l'API.
Trois points d'entrée
Ils fournissent la même API. Seuls le moment du chargement de l'environnement d'exécution et la nécessité d'un bundler changent.
| Point d'entrée | Chargement de l'environnement d'exécution | Cas d'utilisation |
|---|---|---|
@wajub/js | Lors de l'importation | Vous utilisez un bundler et la page affiche toujours un checkout |
@wajub/js/pure | Uniquement lors de l'appel de loadWajub() | Vous effectuez un rendu serveur ou le checkout s'ouvre après un clic |
https://js.wajub.com | Lors du chargement du script | Aucun bundler, HTML simple |
Installez le package avec votre gestionnaire habituel. Il est uniquement distribué comme module ES.
Un appel CommonJS require() ne peut donc pas le résoudre.
npm install @wajub/jsSans bundler, la balise script ajoute wajub, Wajub et WajubError à window. Le build .mjs
utilise le même environnement d'exécution avec des exports nommés.
<script src="https://js.wajub.com"></script>
<!-- or, as a module -->
<script type="module">
import { mount } from 'https://js.wajub.com/wajub.mjs';
</script>Trois façons d'appeler la même API
Chaque méthode ci-dessous existe sous les trois formes. Choisissez-en une par projet et conservez-la. Leur mélange rend l'ordre de chargement difficile à comprendre.
Les helpers nommés constituent la solution la plus courte. Chacun charge et attend lui-même l'environnement d'exécution.
import { mount, open, checkout, fetchSession, confirmPayment } from '@wajub/js';
const instance = await mount('#checkout', { sessionId });loadWajub() vous remet plutôt l'environnement d'exécution. Le chargement intervient donc au moment
que vous choisissez. Il renvoie null en l'absence de window, ce qui sécurise le rendu serveur.
import { loadWajub } from '@wajub/js/pure';
const rt = await loadWajub();
if (rt) {
const instance = await rt.wajub.mount('#checkout', { sessionId });
}Depuis le CDN, les mêmes objets se trouvent sur window et rien ne doit être attendu.
const instance = await wajub.mount('#checkout', { sessionId });Éléments exportés par le package
Trois objets, une classe d'erreur et les helpers qui reproduisent l'environnement d'exécution.
| Export | Description |
|---|---|
loadWajub() | Renvoie { wajub, Wajub, WajubError }, ou null sur le serveur |
wajub | Objet de l'environnement d'exécution avec toutes les méthodes ci-dessous |
Wajub | Fabrique du client associée à une clé ou une session |
WajubError | Classe dont chaque erreur est une instance |
mount, open, checkout, components, confirmPayment | Quatre modes avec l'envoi des champs |
fetchSession, preload | Lit une session ou prépare l'environnement d'exécution avant son utilisation |
getVersion(), getCheckoutOrigin() | Version chargée de l'environnement d'exécution et son origine |
Retenez surtout preload() : appelez cette fonction lorsque le client atteint le panier afin que
l'environnement d'exécution se trouve déjà en cache au moment du paiement.
Le client Wajub()
Les méthodes de l'environnement d'exécution nécessitent un sessionId à chaque appel. Le client le
conserve plutôt une seule fois. Il constitue aussi le seul moyen de créer un paiement depuis le navigateur.
const client = Wajub('pk.mT9xW2kQ7vB4nL6hR1cY8dF3jS5aG0eU2pA…');
const client = Wajub.session(sessionId);
const client = Wajub({ publishableKey: 'pk.mT9xW2kQ…', sessionId });| Méthode | Fonction |
|---|---|
createPayment(params) | Appelle POST /payments avec la clé publique et renvoie la session |
useSession(sessionId) | Associe un jeton existant au client |
fetchSession() | Montant, devise, nom du marchand, moyens de paiement enregistrés et options |
preload() | Charge l'environnement d'exécution avant son utilisation |
mount(el, config), open(config), checkout(config) | Les trois modes hébergés |
components(config) | Fabrique des champs |
confirmPayment(options) | Envoie un composant de champ et attend le résultat |
initCheckout(options) | Crée le paiement et le monte en un appel |
initCheckout couvre tout le flux sans backend. Il nécessite une clé publique, car la page définit le montant.
await Wajub('pk.mT9xW2kQ7vB4nL6hR1cY8dF3jS5aG0eU2pA…').initCheckout({
mode: 'inline',
container: '#checkout',
payment: { amount: 35000, currency: 'XOF', customer: { email: 'buyer@example.com' } },
onSuccess: (transaction) => console.log('paid', transaction),
});Une clé secrète dans un navigateur est refusée et signalée
Toute requête qui contient sk. ou sk_test. avec un en-tête Origin ou Referer reçoit une
réponse 403. Le propriétaire de la clé reçoit une alerte par e-mail. Utilisez pk. ici, ou créez
la session sur votre serveur et envoyez uniquement le jeton au navigateur.
Sur le serveur
loadWajub() et chaque helper renvoient null en l'absence de window. Le rendu serveur ne génère
donc jamais d'erreur. La différence concerne l'importation : @wajub/js charge le script comme effet
de bord, tandis que @wajub/js/pure ne fait rien avant son appel.
import { loadWajub } from '@wajub/js/pure';
payButton.addEventListener('click', async () => {
const rt = await loadWajub();
await rt?.wajub.open({ sessionId });
});Les trois packages de framework importent déjà /pure pour vous. Ce point est important lorsque
vous intégrez vous-même le package principal.
Où chaque sujet est documenté
Cette page se limite au package. Chaque fonctionnalité de l'environnement d'exécution possède sa propre page.
| Votre objectif | Documentation à lire |
|---|---|
| Monter, ouvrir ou rediriger avec toutes les options et tous les callbacks | Checkout hébergé |
| Créer votre propre mise en page autour des champs | Champs de paiement |
| Créer la session et connaître les possibilités du jeton | Sessions et sécurité |
| Modifier les couleurs, le thème, la locale et la mise en page | Apparence |
| Consulter chaque méthode, type et état du checkout | Référence API |
| Utiliser les bons types avec ou sans npm | TypeScript |
| Comprendre pourquoi rien ne s'affiche | Dépannage de Wajub Components |
Utiliser un framework