Passa al contenuto principale
In questa pagina

initElements Avvia un'esperienza di credenziali focalizzata senza richiedere il Payment Widget. Utilizzalo per salvare una carta, avviare Click to Pay o lanciare un portafoglio nativo configurato.

Seleziona un tipo di Elements#

TipoOggettoContesto di identità o ordine
vaultTokenizza o seleziona una carta salvata. Questo è il valore predefinito quando types viene omesso.userToken per un utente autenticato, oppure userInfo; un orderToken può aggiungere informazioni sull'importo e sulle rate.
click_to_payAvvia l'esperienza Click to Pay.Sono richiesti l'identità del cliente e la configurazione del commerciante.
APPLE_PAYAvvia Apple Pay dopo che la disponibilità ha avuto successo.Contesto dell'ordine e credenziali del portafoglio configurato.
GOOGLE_PAYAvvia Google Pay dopo che la disponibilità ha avuto successo.Contesto dell'ordine e credenziali del portafoglio configurato.

Salva una carta#

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),
  },
});

Flusso di esperienza#

Diagramma di flusso
1Initialize Web SDK2-- APPLE_PAY /GOOGLE_PAY3Enter or selectcredential4Complete Click toPay5Open native walletsheet6onSuccess credentialresult7Continue merchantbackend flow
RisultatoCommerciante o cliente

Carica gli elementi DEUNA#

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});

I parametri di inizializzazione e la chiamata successiva vengono uniti dall'SDK. Metti la configurazione stabile nell'elemento di precaricamento e i token più recenti in initElements.

Parametri#

ParametroObbligatorioOggetto
typesNo.Selezione dell'esperienza; predefinito è il salvataggio.
orderTokenDipendente dal flussoContesto dell'ordine per importo, rate, pagamento o lancio del portafoglio.
userTokenDipendente dal flussoContesto dell'utente DEUNA autenticato.
userInfoDipendente dal flussoIdentità del cliente parziale: firstName, lastNamee email.
callbacksNo, consigliatoSuccesso, errore, chiusura, evento, ridimensionamento, BIN e gestione degli acquisti a rate.
mode + targetNo.Presentazione del target integrata invece della finestra di dialogo predefinita.
walletConfigAvanzatoConfigurazione esplicita di Apple Pay o Google Pay approvata.
behaviorNo.Supporto per tokenizzazione, acquisto, suddivisione della carta e gestione della visibilità.
language, styleFile, widgetExperienceNo.Localizzazione e override dell'aspetto supportati.
domainNo.Override dell'host controllato; omettere nelle integrazioni standard di produzione.

Tokenizzazione o acquisto#

Il comportamento degli elementi di pagamento supporta tokenize o purchase:

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

Uso tokenize quando il flusso del commerciante necessita solo di un credential riutilizzabile. Utilizzare purchase solo con l'ordine e la configurazione del commerciante richiesti. Lasciare che il backend gestisca la decisione su come utilizzare il credential.

Portafogli nativi#

Verificare la disponibilità prima di visualizzare il pulsante, quindi avviare direttamente il tipo corrispondente dall'azione del cliente:

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,
  });
});

Vedi Disponibilità del portafoglio per valori di piattaforma, caching e risoluzione dei problemi.

Modalità integrate e controllate#

Uso mode: 'target', targete onResize per un'esperienza integrata. Quando la pagina è responsabile dell'azione principale, impostare hidePayButton: true, chiamare isValid()e attendere submit(). Disabilitare il pulsante esterno durante l'elaborazione.

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,
  },
});

Migra i campi di sicurezza legacy#

La documentazione precedente descrive modularPaymentCredentialsStorage, mountPaymentCredentialStorage, e un'altra sdk.deuna.io Pacchetto di campi protetti. Questi nomi non sono presenti nei tipi pubblici o nell'implementazione corrente del Web SDK. Non copiare frammenti di inizializzazione o di montaggio dei campi legacy in una nuova integrazione.

La superficie di autenticazione gestita è ospitata tramite Elements. DeunaSDK.initElements:

Diagramma di flusso
1Legacy per-fieldintegration2Inventory identity,order, styling, andsubmit ownership3Initialize currentWeb SDK4Open types: [{name:'vault'}]5Handle dedicatedcallbacks6Continue through themerchant backend
Commerciante o cliente
Gestione di sistemi legacyApproccio consolidato
Carico sdk.deuna.io/.../main.min.jsCarica il valore corrente salvato. cdn.deuna.io/web-sdk/.../index.js pacchetto da Inizia
Inizializza Deuna o deunaSDK.init istanzaChiamata DeunaSDK.initialize Una volta ottenuti la chiave API pubblica e l'ambiente specificato.
Implement campi indipendenti per PAN, data di scadenza o CVVUtilizzo di un ambiente ospitato initElements({types: [{name: 'vault'}]}) in modalità o embedded
Possedere un pulsante di invio per il merchantUso hidePayButton, isValid()e submit() nel modo supportato
Elaborare un evento di credenziale legacyUso onSuccess, onError, onClosede le callback dedicate BIN/installamento
Riutilizzare una sessione di checkout legacyPassare i dati orderToken, userTokeno userInfo richiesti dal flusso scelto

Gli elementi ospitati gestiscono l'interfaccia utente per l'inserimento dei dati sensibili. L'attuale SDK pubblico non espone un'API uno-a-uno per il montaggio di ogni campo di carta in nodi DOM indipendenti del merchant. Se il vostro ambito PCI o la vostra progettazione del prodotto richiedono la proprietà indipendente dei campi, interrompete la migrazione e confermate un'architettura supportata con DEUNA prima dell'implementazione.

Durante la migrazione, eseguite l'esperienza precedente e quella nuova solo in coorti di test separate e controllate. Non inizializzare mai entrambe contro la stessa azione del cliente o tentare di copiare valori da frame sicuri legacy in Elements.

Sicurezza e operazioni#

  • Non leggere, riflettere o registrare i campi della carta visualizzati dagli elementi.
  • Inviare il risultato solo all'operazione backend del commerciante che ne ha bisogno.
  • Scadere le sessioni del commerciante e lo stato dell'SDK quando il cliente esce.
  • Riconciliare un ordine dopo un flusso di acquisto interrotto.
  • Considera onSuccess come risultato del cliente, non come autorizzazione all'utilizzo di un credential al di fuori del consenso del cliente e del contratto con il commerciante.