Pular para o conteúdo principal
Nesta página

initElements Inicia uma experiência de credenciais focada, sem a necessidade do Payment Widget. Utilize-o para armazenar um cartão, iniciar o Click to Pay ou lançar uma carteira nativa configurada.

Selecione o tipo de Elemento#

TipoObjetivoContexto de identidade ou de pedido
vaultTokenize ou selecione um cartão armazenado. Esta é a opção padrão quando types é omitido.userToken para um usuário autenticado, ou userInfo; um orderToken pode adicionar o valor e o contexto de parcelamento.
click_to_payInicie a experiência do Click to Pay.A identidade do cliente e a configuração do comerciante são necessárias.
APPLE_PAYLance o Apple Pay após a verificação de disponibilidade.Contexto do pedido e credenciais da carteira configurada.
GOOGLE_PAYLance o Google Pay após a verificação de disponibilidade.Contexto do pedido e credenciais da carteira configurada.

Armazene um cartão#

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

Fluxo da experiência#

Diagrama de fluxo
1Initialize Web SDK2-- APPLE_PAY /GOOGLE_PAY3Enter or selectcredential4Complete Click toPay5Open native walletsheet6onSuccess credentialresult7Continue merchantbackend flow
ResultadoComerciante ou cliente

Carregue os Elementos#

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

Os parâmetros de inicialização e a chamada subsequente são combinados pelo SDK. Coloque a configuração estável na entrada de pré-carregamento e os tokens mais recentes em initElements.

Parâmetros#

ParâmetroObrigatórioObjetivo
typesNãoSeleção da experiência; por padrão, armazena.
orderTokenDependente do fluxoContexto do pedido para valor, parcelamento, pagamento ou lançamento da carteira.
userTokenDependente do fluxoContexto do usuário DEUNA autenticado.
userInfoDependente do fluxoIdentidade parcial do cliente: firstName, lastNamee email.
callbacksNão, recomendadoSucesso, erro, fechar, evento, redimensionar, BIN e tratamento de parcelamento.
mode + targetNãoApresentação do alvo integrada, em vez da janela padrão.
walletConfigAvançadoConfiguração explícita do Apple Pay ou Google Pay aprovada.
behaviorNãoSuporte para tokenização, compra, divisão de cartão e comportamento de visibilidade.
language, styleFile, widgetExperienceNãoLocalização e personalização da aparência.
domainNãoSobrescrevo do host controlado; omitir em integrações de produção padrão.

Tokenize ou compra#

O comportamento dos elementos de cartão suporta tokenize ou purchase:

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

Uso tokenize quando o fluxo do comerciante só precisa de um credencial reutilizável. Use purchase apenas com o pedido e a configuração do comerciante necessários. Deixe o backend responsável por decidir como o credencial pode ser usado.

Carteiras nativas#

Verifique a disponibilidade antes de renderizar o botão, e inicie o tipo correspondente diretamente a partir da ação do 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,
  });
});

Veja Disponibilidade da carteira digital para valores da plataforma, cache e solução de problemas.

Modos integrados e controlados#

Uso mode: 'target', targete onResize para uma experiência integrada. Quando a sua página é responsável pela ação principal, defina hidePayButton: true, chame isValid()e aguarde submit(). Desative o botão externo enquanto a submissão estiver pendente.

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

Migrar campos de segurança legados#

A documentação anterior descreveu modularPaymentCredentialsStorage, mountPaymentCredentialStorage, e um sdk.deuna.io Pacote de campos seguros. Esses nomes não estão presentes nos tipos públicos ou na implementação atuais do Web SDK auditado. Não copie os trechos de inicialização ou montagem de campos legados em uma nova integração.

A superfície de credenciais mantida é hospedada pela Elements. DeunaSDK.initElements:

Diagrama de fluxo
1Legacy per-fieldintegration2Inventory identity,order, styling, andsubmit ownership3Initialize currentWeb SDK4Open types: [{name:'vault'}]5Handle dedicatedcallbacks6Continue through themerchant backend
Comerciante ou cliente
Responsabilidade tradicionalAbordagem mantida
Carga sdk.deuna.io/.../main.min.jsCarregar o módulo atual cdn.deuna.io/web-sdk/.../index.js do Começar
Inicializar uma Deuna ou deunaSDK.init instânciaLigar DeunaSDK.initialize com a chave API pública e o ambiente especificado
Implement campos independentes para PAN, data de validade ou CVVHospedar initElements({types: [{name: 'vault'}]}) em modo de janela pop-up ou incorporado
Possuir um botão de envio do comercianteUso hidePayButton, isValid()e submit() no modo controlado suportado
Processar um evento de credenciais legadoUso onSuccess, onError, onClosede callbacks dedicados para BIN/parcelamento
Reutilizar uma sessão de checkout legadoPassar as informações orderToken, userToken, ou userInfo necessárias para o fluxo selecionado

Os elementos hospedados possuem controle sobre a interface de entrada sensível. O SDK público atual não expõe uma API direta para anexar cada campo de cartão a nós DOM independentes do merchant. Se o seu escopo PCI ou design de produto aprovado exigir controle independente sobre os campos, interrompa a migração e confirme uma arquitetura suportada pela DEUNA antes da implementação.

Durante a migração, execute as versões antiga e nova apenas em grupos de testes separados e controlados. Nunca inicialize ambas simultaneamente ou tente copiar valores de estruturas seguras legadas para os Elementos.

Segurança e operações#

  • Não leia, espelhe ou registre campos de cartão exibidos pelos elementos.
  • Envie o resultado apenas para a operação de backend do comerciante que o necessita.
  • Expire as sessões e o estado do SDK do cliente quando o cliente faz logout.
  • Reconcilie um pedido após um fluxo interrompido de compra.
  • Trate onSuccess como um resultado do cliente, não como permissão para usar um credencial fora do consentimento do cliente e do contrato com o comerciante.