Aller au contenu

Référence API

Tous les exports, options, méthodes, types, états et codes d'erreur de @wajub/js.

Toute la surface de @wajub/js@1.4.0. Les guides expliquent quand utiliser chaque élément. Cette page les répertorie tous.

Deux façons d'accéder à la même API

Le runtime est un objet unique. Vous pouvez importer des helpers qui le chargent pour vous, ou le conserver vous-même.

Les helpers ou le runtime
import { mount, open, checkout, components, confirmPayment } from '@wajub/js';

import { loadWajub } from '@wajub/js/pure';
const rt = await loadWajub();
rt?.wajub.mount('#checkout', { sessionId });
Export de @wajub/jsRenvoieRemarques
mount(container, config)Promise<CheckoutInstance | null>null sur le serveur
open(config)Promise<PopupInstance | null>null sur le serveur
checkout(config)Promise<void | null>Redirige la page
components(sessionId, options?)Promise<ComponentsFactory | null>null sur le serveur
confirmPayment(options)Promise<{ status, transaction? }>Rejette avec WajubError
fetchSession(sessionId)Promise<SessionPreview>Fonctionne avant tout montage
preload(sessionId, options?)Promise<void | null>{ iframe?: boolean }
getVersion()Promise<string | null>La version du runtime chargé
getCheckoutOrigin()Promise<string | null>L'origine qui sert le checkout
loadWajub(options?)Promise<WajubRuntime | null>{ jsOrigin?, jsUrl? }
WajubErrorClasseChaque rejet en est une instance

loadWajub.setLoadParameters({ jsOrigin }) définit l'origine une fois, avant le premier appel.

Le runtime WajubRuntime

La valeur résolue par loadWajub() et placée dans window par le script du CDN.

MembreDescription
wajubL'objet du SDK, décrit dans le tableau ci-dessous
WajubLa fabrique de clients
WajubErrorLa classe d'erreur

L'objet wajub

MembreSignature
mount(container, config) => CheckoutInstance
open(config) => PopupInstance
checkout(config) => void
components(sessionId, options?) => ComponentsFactory
confirmPayment(options) => Promise<{ status }>
fetchSession(sessionId) => Promise<SessionPreview>
preload(sessionId, options?) => void
createLa fabrique Wajub, le même objet
versionLa chaîne de version du runtime
sdkMajorLa version majeure
checkoutOriginL'origine des iframes
createHeadlessSupprimé dans la version 2.1, déclenche une erreur lors d'un appel

Ces méthodes sont synchrones, car le runtime est déjà chargé lorsque vous y accédez.

Le client Wajub()

Un client conserve une clé publique, une session ou les deux pour éviter de les répéter.

AppelRésultat
Wajub('pk_test.…')Un client capable d'appeler createPayment()
Wajub.session(token)Un client lié à une session existante
Wajub({ publishableKey, sessionId })Les deux à la fois
OptionRôle
sessionIdLe authorization_token de votre serveur
publishableKeyVotre clé pk. ou pk_test.
apiKeyAlias obsolète de publishableKey
apiBaseRemplace l'origine de l'API. Valeur par défaut : https://api.wajub.com
paymentsUrlRemplace l'URL complète de POST /payments
useCheckoutProxyPasse par le propre endpoint /api/payments du checkout
componentOriginOrigine canonique des champs de paiement

Membres du client

MembreRôle
publishableKey, sessionId, environmentLes valeurs actuellement conservées par le client
apiBase, checkoutOriginLes origines contactées
useSession(sessionId)Lie une autre session et renvoie le client
createPayment(params)POST /payments avec la clé publique
initCheckout(options)Crée et affiche le paiement en un appel
fetchSession(sessionId?)Aperçu de la session
preload(sessionId?, options?)Précharge le runtime
mount, open, checkoutLes trois modes hébergés, avec la session déjà liée
components(sessionIdOrConfig?, config?)La fabrique de champs
confirmPayment(options?)Soumet un composant monté

Méthodes statiques de la fabrique

MembreRôle
Wajub.session(sessionId, options?)Un client lié à une session
Wajub.parsePublishableKey(key){ key, environment }, déclenche une erreur avec une clé secrète
Wajub.createPayment(key, params, options?)Un appel unique, sans client à conserver

La configuration EmbeddedConfig

Utilisée par mount(), par CheckoutEmbed dans chaque framework et comme base de PopupConfig.

OptionTypeValeur par défaut
sessionIdstringObligatoire
localestringValeur par défaut de la session
layoutCheckoutLayoutValeur par défaut de la session
appearanceAppearanceConfigIdentité visuelle de la session
embedOriginstringOrigine de la page actuelle
loadingTextstringVide
showLoadingbooleantrue
themeEmbedThemeDérivé de appearance, obsolète
CallbackReçoit
onReadyCheckoutInstance
onSuccessRecord<string, unknown>, la transaction
onErrorWajubError
onLoadErrorWajubError
onCancelRien
onExpiredRien
onStateChange{ state?: CheckoutState, method?: string }
onMethodChange{ methodId?, method_id? }
onBreakdownEmbedBreakdown
onResizeheight: number, uniquement en ligne
onCloseRien, uniquement en superposition

La configuration PopupConfig

Tout le contenu de EmbeddedConfig, avec la fenêtre modale en plus.

OptionTypeValeur par défaut
widthnumber920
heightnumber680
closeOnOverlaybooleanfalse
closeOnEscapebooleantrue
closeOnSuccessbooleantrue
closeOnCancelbooleantrue
closeOnExpiredbooleantrue

Les trois options de résultat closeOn s'exécutent après votre callback, jamais avant.

Les instances CheckoutInstance et PopupInstance

MéthodeRôle
mount()Remonte l'instance après unmount()
unmount()Retire l'élément du DOM et conserve l'instance
destroy()Détruit entièrement l'instance
update(partial)locale, appearance, currency, layout et theme, qui est obsolète
getState()Le CheckoutState actuel
submit()Soumet le formulaire
cancel()Annule le paiement en cours
retry()Lance une nouvelle tentative après un échec
selectMethod(methodId)Change de moyen de paiement
close()Ferme la superposition
isOpen()Indique si la fenêtre modale est visible, uniquement en superposition

La configuration ComponentConfig

Transmise à wajub.components(sessionId, options) comme valeurs par défaut et à factory.create(type, config) pour chaque composant.

OptionTypeS'applique à
sessionIdstringObligatoire
localestringTous
appearanceAppearanceConfigTous
layoutCheckoutLayoutpayment
componentOriginstringTous, avec l'origine de la page comme valeur par défaut
collectAddressshipping or billingpayment
addressModeshipping or billingaddress
collectNamebooleanpayment, address
fields.phonealways, auto, neverpayment, address
CallbackReçoit
onReadyComponentInstance
onChangeComponentChangeEvent
onFocus, onBlurRien
onLoadErrorWajubError
onSuccessLa transaction
onErrorWajubError
onMethodChange{ methodId? }

La fabrique ComponentsFactory

MembreDescription
sessionIdLa session héritée par chaque composant
create(type, config?)Une nouvelle ComponentInstance

Types. card, mobileMoney, wallet, payment, address.

L'instance ComponentInstance

Chaque méthode, sauf les méthodes de lecture, renvoie l'instance. Les appels peuvent donc être enchaînés.

MéthodeRenvoie
mount(container)L'instance
unmount(), destroy()Rien
on(event, fn), off(event, fn)L'instance
update({ locale, appearance, layout })L'instance
focus(), blur(), submit()L'instance
selectMethod(methodId)L'instance
getState()CheckoutState
isComplete()boolean
getError()WajubError or null
getValue()ComponentAddressValue or null

Événements

ÉvénementPayload
readyComponentInstance
changeComponentChangeEvent
focus, blurRien
loaderrorWajubError
resize{ height }
successLa transaction
errorWajubError
statechange{ state, method }
methodchange{ methodId }

Les options ConfirmPaymentOptions

OptionTypeValeur par défaut
sessionIdstringObligatoire
componentsComponentInstanceObligatoire, un composant monté
timeoutnumber60000 millisecondes, 0 attend indéfiniment
callbackstringObsolète, jamais lu

Se résout avec { status, transaction }. Rejette avec une WajubError contenant missing_component, wallet_not_supported, address_not_payment ou confirmation_timeout.

Les paramètres CreatePaymentParams

Les données envoyées par client.createPayment(). Il s'agit des mêmes champs que POST /payments, limités à ceux qu'un navigateur peut définir.

ChampType
amountnumber, obligatoire
currencystring, obligatoire
referencestring
descriptionstring
customer{ email?, name?, phone?, country? }
bearermerchant ou customer, la personne qui paie les frais
callbackURL HTTPS, uniquement pour le flux avec redirection
metadataRecord<string, string>

Le résultat CreatePaymentResult

ChampDescription
sessionIdPassez cette valeur à mount, open ou components
authorizationTokenLa même valeur, sous le nom utilisé par l'API
authorizationUrlLa page hébergée ou null
transactionL'objet de transaction ou null
rawLa réponse brute de l'API

Les options InitCheckoutOptions

Crée et affiche le paiement en un seul appel. Tout le contenu de EmbeddedConfig s'applique aussi.

OptionTypeRôle
modeinline, overlay, redirectMode d'affichage du checkout
containerstring ou HTMLElementObligatoire pour inline
sessionIdstringIgnore createPayment()
paymentCreatePaymentParamsUtilisé en l'absence de sessionId
checkoutPartial<EmbeddedConfig>Options de l'intégration elle-même

Se résout avec { session, instance } et déclenche missing_container lorsque le mode inline n'a aucun emplacement de montage.

L'aperçu SessionPreview

La valeur résolue par fetchSession(sessionId). Lisez-la avant le montage pour afficher un montant, le nom d'un marchand ou une bannière de sandbox.

ChampType
session_idstring
statusstring
environmentsandbox ou live
amountnumber
currencystring
merchant_namestring
payment_methodsArray<{ id, type, label }>
saved_methodsArray<{ id, type, label }>, pour les clients existants
featuresRecord<string, boolean>

La configuration AppearanceConfig

La liste complète des clés, les préréglages et les règles de filtrage se trouvent dans Apparence.

GroupeClés
Préréglagetheme : stripe, night, flat, none
CouleurprimaryColor, secondaryColor, backgroundColor, buttonTextColor, inputBackgroundColor, inputBorderColor, textMutedColor, successColor, errorColor
FormefontFamily, borderRadius, shadow
ComportementcolorScheme, labels, disableAnimations
Jetonsvariables, seize clés associées à --wj-*
Sélecteursrules, uniquement .Input et .Label

États

getState() et onStateChange utilisent tous deux ce vocabulaire.

CheckoutState
INITIATED → COLLECTING_DETAILS → PROCESSING → SUCCESS
                                ↘ OTP_REQUIRED, 3DS_REQUIRED, USSD_REQUIRED
                                ↘ APPROVAL_REQUIRED, VERIFYING, PENDING
                                ↘ FAILED, CANCELLED, EXPIRED

Une nouvelle instance indique INITIATED tant que le checkout ne signale pas un autre état.

L'erreur WajubError

Chaque rejet et chaque callback d'erreur en reçoit une.

ChampType
messagestring, rédigé pour une personne
typeapi_error, authentication_error, invalid_request_error, payment_error, rate_limit_error
codestring, le nom interprété par la machine
decline_codestring ou null, envoyé par le prestataire
retryableboolean
paramstring ou null, le champ en cause

WajubError.fromPayload(payload) en construit une depuis un objet brut, et toJSON() le restitue.

Codes déclenchés par le SDK

Ces erreurs n'atteignent jamais le réseau. Elles signalent des erreurs d'intégration.

CodeCause
secret_key_in_browserUne clé sk. passée à Wajub()
invalid_publishable_keyUne clé qui n'est pas publique
invalid_initUne clé secrète passée au constructeur du client
missing_publishable_keycreatePayment() appelé sans clé
missing_session_tokenUn appel qui exige une session alors qu'aucune n'est définie
missing_sessionAucun sessionId sur le client
missing_containerinitCheckout en mode inline sans emplacement de montage
missing_componentconfirmPayment sans composant pouvant être soumis
wallet_not_supportedconfirmPayment sur un composant wallet
address_not_paymentconfirmPayment sur un composant address
confirmation_timeoutAucun résultat avant la fin de timeout
components_unavailableLe runtime des composants ne s'est pas chargé
load_errorÉchec du chargement de l'iframe du checkout

Packages des frameworks

Les trois wrappers exportent le même ensemble en respectant les conventions de chaque framework.

ExportDescription
WajubProviderCharge le runtime une fois pour une sous-arborescence
CheckoutEmbedLe checkout hébergé, affiché en ligne
CardComponent, MobileMoneyComponent, WalletComponent, PaymentComponent, AddressComponentUn groupe de champs chacun
ComponentEmbedLa même chose, avec type comme prop
useWajub, useWajubOptional, useLoadWajubDonnent accès au runtime
useConfirmPaymentSoumet un composant de champs
Prop du wrapperS'applique àValeur par défaut
className dans React et Svelte, class dans VueLes deuxaucune
styleLes deuxaucune
minHeightCheckoutEmbed480
minHeightComposants de champs200
onInstanceComposants de champsaucune, appelée avec null au démontage

Chaque package possède sa propre page, car leurs différences sont réelles : React, Vue, Svelte.

Que pensez-vous de ce contenu ?