Éléments et coffre-fort de cartes pour le Web
Intégrez les éléments DEUNA pour le stockage des cartes, Click to Pay, Apple Pay et Google Pay sur des expériences web responsives.
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#
| Tapez | Objectif | Contexte d'identité ou de commande |
|---|---|---|
vault | Tokenisez 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_pay | Lancez l'expérience Click to Pay. | L'identité du client et la configuration du commerçant sont requises. |
APPLE_PAY | Lancez Apple Pay après vérification de la disponibilité. | Contexte de commande et informations d'identification du portefeuille configuré. |
GOOGLE_PAY | Lancez Google Pay après vérification de la disponibilité. | Contexte de commande et informations d'identification du portefeuille configuré. |
Stockez une carte#
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#
Préparez les éléments#
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ètre | Obligatoire | Objectif |
|---|---|---|
types | Non | Sélection d'expérience ; par défaut, stockage. |
orderToken | Dépend du flux | Contexte de commande pour le montant, les échéances, le paiement ou le lancement du portefeuille. |
userToken | Dépend du flux | Contexte DEUNA authentifié |
userInfo | Dépend du flux | Identité partielle du client : firstName, lastNameet email. |
callbacks | Non, recommandé | Succès, erreur, fermeture, événement, redimensionnement, BIN (numéro de carte), et gestion des échéances. |
mode + target | Non | Présentation ciblée intégrée au lieu de la fenêtre modale par défaut. |
walletConfig | Avancé | Configuration explicite Apple Pay ou Google Pay approuvée. |
behavior | Non | Fonctionnalités de tokenisation, de paiement, de partage de carte et de visibilité prises en charge. |
language, styleFile, widgetExperience | Non | Localisation et personnalisation de l'apparence. |
domain | Non | Surdé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:
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 :
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.
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:
| Responsabilité des systèmes existants | Approche maintenue |
|---|---|
Charge sdk.deuna.io/.../main.min.js | Charger le bundle actuel cdn.deuna.io/web-sdk/.../index.js à partir de Commencer |
Initialiser une Deuna ou deunaSDK.init instance | Appeler 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 CVV | Utiliser une solution hébergée initElements({types: [{name: 'vault'}]}) en mode modal ou intégré |
| Posséder un bouton de soumission pour le commerçant | Utilisation hidePayButton, isValid()et submit() dans le mode contrôlé pris en charge |
| Analyser un événement de saisie de données existant | Utilisation onSuccess, onError, onClosedet les callbacks BIN/paiement en plusieurs fois dédiés |
| Réutiliser une session de paiement existante | Transmettre 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
onSuccessEn 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.