Saltar al contenido principal
En esta página

initElements abre una experiencia de credenciales enfocada sin necesidad del Widget de Pago. Úselo para almacenar una tarjeta, iniciar Click to Pay o lanzar una billetera nativa configurada.

Seleccione un tipo de Elementos#

TipoPropósitoIdentidad o contexto del pedido
vaultTokenice o seleccione una tarjeta almacenada. Esto es el valor predeterminado cuando types se omite.userToken para un usuario autenticado, o userInfo; un orderToken puede agregar el contexto de la cantidad y las cuotas.
click_to_payInicie la experiencia de Click to Pay.Se requiere la identidad del cliente y la configuración del comercio.
APPLE_PAYInicie Apple Pay después de que la disponibilidad tenga éxito.Contexto del pedido y credenciales de la billetera configurada.
GOOGLE_PAYInicie Google Pay después de que la disponibilidad tenga éxito.Contexto del pedido y credenciales de la billetera configurada.

Almacene una tarjeta#

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

Flujo de experiencia#

Diagrama de flujo
1Initialize Web SDK2-- APPLE_PAY /GOOGLE_PAY3Enter or selectcredential4Complete Click toPay5Open native walletsheet6onSuccess credentialresult7Continue merchantbackend flow
ResultadoComercio o cliente

Pre-cargue de 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});

Los parámetros de inicialización y la llamada posterior se combinan mediante el SDK. Coloque la configuración estable en la entrada de pre-carga y los tokens más recientes en initElements.

Parámetros#

ParámetroRequeridoPropósito
typesNoSelección de experiencia; por defecto, se utiliza el almacenamiento.
orderTokenDependiente del flujoContexto del pedido para la cantidad, las cuotas, el pago o el lanzamiento de la billetera.
userTokenDependiente del flujoContexto de usuario de DEUNA autenticado.
userInfoDependiente del flujoIdentificación parcial del cliente: firstName, lastNamey email.
callbacksNo, recomendadoÉxito, error, cerrar, evento, redimensionar, BIN y manejadores de pagos a plazos.
mode + targetNoPresentación de destino integrada en lugar de la ventana modal predeterminada.
walletConfigAvanzadoConfiguración explícita de Apple Pay o Google Pay aprobada.
behaviorNoSoporte para tokenización, compra, división de tarjetas y comportamiento de visibilidad.
language, styleFile, widgetExperienceNoLocalización y opciones de personalización de la apariencia.
domainNoReemplazo de host controlado; omitir en las integraciones estándar de producción.

Tokenización o compra.#

El comportamiento de la tarjeta de crédito Elements es compatible con tokenize o purchase:

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

Uso tokenize cuando el flujo del comerciante solo necesita un dato de autenticación reutilizable, utilice purchase Solo con la configuración y los parámetros necesarios para el comerciante. El backend será el responsable de determinar cómo se utilizarán las credenciales.

Carteras nativas#

Verifique la disponibilidad antes de mostrar el botón, y luego inicie el tipo correspondiente directamente a partir de la acción 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,
  });
});

Ver Disponibilidad de billetera para valores de plataforma, almacenamiento en caché y resolución de problemas.

Modos integrado y controlado#

Uso mode: 'target', targety onResize para una experiencia integrada. Cuando su página es la responsable de la acción principal, configure hidePayButton: true, llamar isValid(), luego espera submit(). Deshabilitar el botón principal mientras la operación está en curso.

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 seguros heredados#

La documentación anterior describía modularPaymentCredentialsStorage, mountPaymentCredentialStorage, y una sdk.deuna.io Paquete de campos seguros. Estos nombres no están presentes en los tipos públicos o en la implementación actual del Web SDK auditado. No copie los fragmentos de inicialización o montaje de campos heredados en una nueva integración.

La superficie de credenciales mantenida se aloja a través de Elements. DeunaSDK.initElements:

Diagrama de flujo
1Legacy per-fieldintegration2Inventory identity,order, styling, andsubmit ownership3Initialize currentWeb SDK4Open types: [{name:'vault'}]5Handle dedicatedcallbacks6Continue through themerchant backend
Comercio o cliente
Responsabilidad tradicionalEnfoque actual
Carga sdk.deuna.io/.../main.min.jsCargar el módulo actual cdn.deuna.io/web-sdk/.../index.js desde Comenzar
Inicializar una Deuna o deunaSDK.init instanciallamar DeunaSDK.initialize una vez con la clave pública y el entorno especificado
Implement campos independientes para el PAN, la fecha de vencimiento o el CVVImplementar en modo anfitrión initElements({types: [{name: 'vault'}]}) en modo modal o embebido
Poseer un botón de envío para el comercianteUso hidePayButton, isValid()y submit() en el modo controlado compatible
Analizar un evento de credenciales heredadoUso onSuccess, onError, onClosed, y las llamadas de retorno dedicadas de BIN/instalmentos
Reutilizar una sesión de pago heredadaPasar la información orderToken, userTokeno userInfo requerida por el flujo seleccionado

Los elementos alojados son responsables de la interfaz de usuario para la información sensible. El SDK público actual no expone una API de uno a uno para montar cada campo de tarjeta en nodos DOM independientes del comerciante. Si su alcance PCI o diseño de producto aprobado requiere la propiedad independiente de los campos, detenga la migración y confirme una arquitectura compatible con DEUNA antes de la implementación.

Al migrar, ejecute la experiencia antigua y nueva únicamente en cohortes de prueba controladas separadas. Nunca inicie ambas contra la misma acción del cliente o intente copiar valores de los marcos seguros heredados en los elementos.

Seguridad y operaciones#

  • No leer, reflejar ni registrar los datos de las tarjetas mostrados por Elements.
  • Enviar el resultado únicamente a la operación de backend del comerciante que lo necesite.
  • Cerrar las sesiones del comerciante y el estado del SDK cuando el cliente cierra sesión.
  • Reconciliar un pedido después de una interrupción en el flujo de compra.
  • Trate onSuccess Como resultado para el cliente, no se permite el uso de credenciales fuera del consentimiento del cliente y del contrato con el comerciante.