Aller au contenu principal
Sur cette page

initElements Ouvre une expérience de gestion des informations sans nécessiter de widget de paiement. Utilisez-le pour stocker une carte, lancer Click to Pay ou lancer un portefeuille natif configuré.

Choisissez un type d'éléments#

TapezObjectifContexte d'identité ou de commande
vaultTokenisez ou sélectionnez une carte stockée. C'est l'option par défaut lorsque types est omis.userToken pour un utilisateur authentifié, ou userInfo; un orderToken peut ajouter le montant et le contexte des échéances.
click_to_payLancez l'expérience Click to Pay.L'identité du client et la configuration du commerçant sont requises.
APPLE_PAYLancez Apple Pay après vérification de la disponibilité.Contexte de commande et informations d'identification du portefeuille configuré.
GOOGLE_PAYLancez Google Pay après vérification de la disponibilité.Contexte de commande et informations d'identification du portefeuille configuré.

Stockez une carte#

JavaScript
await DeunaSDK.initElements({
  orderToken,
  userInfo: {
    firstName: 'Ada',
    lastName: 'Lovelace',
    email: 'ada@example.com',
  },
  types: [{name: 'vault'}],
  callbacks: {
    onSuccess: (credential) => useCredentialResult(credential),
    onError: ({type, metadata}) => showRecovery(type, metadata.code),
    onClosed: () => restorePaymentMethods(),
    onCardBinDetected: ({cardBin, cardBrand}) => updateCardOffers(cardBin, cardBrand),
    onInstallmentSelected: ({installmentPlanOptionId}) => rememberPlan(installmentPlanOptionId),
  },
});

Flux d'expérience#

Diagramme de flux
1Initialize Web SDK2-- APPLE_PAY /GOOGLE_PAY3Enter or selectcredential4Complete Click toPay5Open native walletsheet6onSuccess credentialresult7Continue merchantbackend flow
RésultatMarchand ou client

Préparez les éléments#

JavaScript
await DeunaSDK.initialize({
  publicApiKey: 'YOUR_PUBLIC_API_KEY',
  env: 'sandbox',
  preloadWidgets: [
    {
      widget: 'elements',
      params: {
        types: [{name: 'vault'}],
        language: 'en',
        callbacks,
      },
    },
  ],
});

// Add the order or user context and reveal the prepared experience.
await DeunaSDK.initElements({orderToken, userToken});

Les paramètres d'initialisation et l'appel ultérieur sont fusionnés par le SDK. Placez la configuration stable dans l'entrée de préchargement et les jetons les plus récents dans initElements.

Paramètres#

ParamètreObligatoireObjectif
typesNonSélection d'expérience ; par défaut, stockage.
orderTokenDépend du fluxContexte de commande pour le montant, les échéances, le paiement ou le lancement du portefeuille.
userTokenDépend du fluxContexte DEUNA authentifié
userInfoDépend du fluxIdentité partielle du client : firstName, lastNameet email.
callbacksNon, recommandéSuccès, erreur, fermeture, événement, redimensionnement, BIN (numéro de carte), et gestion des échéances.
mode + targetNonPrésentation ciblée intégrée au lieu de la fenêtre modale par défaut.
walletConfigAvancéConfiguration explicite Apple Pay ou Google Pay approuvée.
behaviorNonFonctionnalités de tokenisation, de paiement, de partage de carte et de visibilité prises en charge.
language, styleFile, widgetExperienceNonLocalisation et personnalisation de l'apparence.
domainNonSurdéfinition de l'hôte contrôlée ; à omettre dans les intégrations de production standard.

Tokeniser ou effectuer un achat#

Le comportement des cartes de crédit Elements est compatible avec tokenize ou purchase:

JavaScript
behavior: {
  paymentMethods: {
    creditCard: {
      flow: 'tokenize',
    },
  },
}

Utilisation tokenize lorsque le flux du commerçant n'a besoin que d'un identifiant réutilisable. Utilisez purchase Uniquement avec la configuration de commande et du commerçant requises. Laisser le backend décider de la manière dont le credential peut être utilisé.

Portefeuilles natifs#

Vérifiez la disponibilité avant d'afficher votre bouton, puis lancez le type correspondant directement à partir de l'action du client :

JavaScript
const wallets = await DeunaSDK.getWalletsAvailable({orderToken, userInfo});
applePayButton.hidden = !wallets.includes('APPLE_PAY');

applePayButton.addEventListener('click', () => {
  DeunaSDK.initElements({
    orderToken,
    userInfo,
    types: [{name: 'APPLE_PAY'}],
    callbacks,
  });
});

Voir Disponibilité du portefeuille Pour les valeurs de la plateforme, la mise en cache et le dépannage.

Mode intégré et contrôlé#

Utilisation mode: 'target', targetet onResize Pour une intégration transparente. Lorsque votre page est responsable de l'action principale, définissez hidePayButton: true, appeler isValid(), puis attendre submit(). Désactiver le bouton externe pendant que la soumission est en cours.

JavaScript
await DeunaSDK.initElements({
  orderToken,
  types: [{name: 'vault'}],
  mode: 'target',
  target: '#credential-entry',
  hidePayButton: true,
  callbacks: {
    onResize: ({height}) => {
      document.querySelector('#credential-entry').style.height = `${height}px`;
    },
    onSuccess: useCredentialResult,
    onError: showRecovery,
  },
});

Migrer les champs sécurisés hérités#

La documentation précédente décrivait modularPaymentCredentialsStorage, mountPaymentCredentialStorage, et une sdk.deuna.io Bundle de champs sécurisés. Ces noms ne sont pas présents dans les types publics et l'implémentation actuelle du Web SDK audité. Ne copiez pas les snippets d'initialisation ou de montage de champs hérités dans une nouvelle intégration.

La surface de données sécurisée est hébergée par Elements. DeunaSDK.initElements:

Diagramme de flux
1Legacy per-fieldintegration2Inventory identity,order, styling, andsubmit ownership3Initialize currentWeb SDK4Open types: [{name:'vault'}]5Handle dedicatedcallbacks6Continue through themerchant backend
Marchand ou client
Responsabilité des systèmes existantsApproche maintenue
Charge sdk.deuna.io/.../main.min.jsCharger le bundle actuel cdn.deuna.io/web-sdk/.../index.js à partir de Commencer
Initialiser une Deuna ou deunaSDK.init instanceAppeler DeunaSDK.initialize une seule fois avec la clé API publique et l'environnement spécifié
Mettre en place des champs indépendants pour le numéro PAN, la date d'expiration ou le CVVUtiliser une solution hébergée initElements({types: [{name: 'vault'}]}) en mode modal ou intégré
Posséder un bouton de soumission pour le commerçantUtilisation hidePayButton, isValid()et submit() dans le mode contrôlé pris en charge
Analyser un événement de saisie de données existantUtilisation onSuccess, onError, onClosedet les callbacks BIN/paiement en plusieurs fois dédiés
Réutiliser une session de paiement existanteTransmettre les informations orderToken, userToken, ou userInfo requises pour le flux choisi

Les éléments hébergés gèrent l'interface utilisateur sensible. L'SDK public actuel ne fournit pas d'API unique pour attacher chaque champ de carte à des nœuds DOM distincts du commerçant. Si votre portée PCI ou votre conception de produit approuvées exigent une propriété de champ indépendante, arrêtez la migration et confirmez une architecture prise en charge avec DEUNA avant la mise en œuvre.

Lors de la migration, exécutez les anciennes et les nouvelles expériences uniquement dans des cohortes de test distinctes et contrôlées. Ne démarrez jamais les deux simultanément ou n'essayez pas de copier des valeurs à partir de cadres sécurisés hérités vers les éléments.

Sécurité et opérations#

  • Ne pas lire, copier ou enregistrer les données des cartes affichées par Elements.
  • Envoyer le résultat uniquement au système de back-end du commerçant qui en a besoin.
  • Annuler les sessions et l'état de l'SDK du commerçant lorsque le client se déconnecte.
  • Réconcilier une commande après une interruption du processus d'achat.
  • Considérez onSuccess En tant que résultat pour le client, et non comme autorisation d'utiliser un identifiant en dehors du consentement du client et du contrat avec le commerçant.