Saltar al contenido principal
En esta página

El SDK Web de DEUNA es un script para navegadores que renderiza experiencias de pago en un modal o en un elemento objetivo adaptable. Su backend crea pedidos y protege las credenciales privadas; el navegador recibe una clave API pública y un token de pedido de corta duración.

Arquitectura de integración#

Diagrama de secuencia
1Browser2Merchant backend3DEUNA API4DEUNA Web SDKStart checkoutCreate order with privateAPI keyorder_tokenPublic key context + ordertokeninitialize + initPaymentWidgetCallbacks and lifecycle eventsRetrieve final order state
Comercio o clienteDEUNA
01 · backend
Crear el pedido
Mantenga las claves API, los totales y las reglas de negocio en el servidor.
02 · browser
Inicialice una sola vez
Cargue el script CDN y configure el entorno explícito.
03 · customer
Abra una única experiencia
Widget de pago, Elementos, Voucher o Acción Siguiente.
04 · backend
Verifique el estado final
Reconcilie antes del cumplimiento.

1. Cargar una versión específica#

HTML
<script
  crossorigin
  src="https://cdn.deuna.io/web-sdk/v1.7/index.js">
</script>

El script expone window.DeunaSDK. Asegurar la versión en producción y realizar pruebas de actualización en el entorno de pruebas. No modificar silenciosamente la URL del CDN en tiempo de ejecución a partir de fuentes no confiables.

Para una aplicación de una sola página, cargue el script una vez a nivel de documento. Si lo carga dinámicamente, resuelva una promesa compartida para evitar que las rutas concurrentes agreguen etiquetas duplicadas.

JavaScript
function loadDeunaSdk() {
  if (window.DeunaSDK) return Promise.resolve(window.DeunaSDK);
  if (window.__deunaSdkPromise) return window.__deunaSdkPromise;

  window.__deunaSdkPromise = new Promise((resolve, reject) => {
    const script = document.createElement('script');
    script.src = 'https://cdn.deuna.io/web-sdk/v1.7/index.js';
    script.crossOrigin = 'anonymous';
    script.onload = () => resolve(window.DeunaSDK);
    script.onerror = () => reject(new Error('DEUNA Web SDK failed to load'));
    document.head.append(script);
  });

  return window.__deunaSdkPromise;
}

2. Inicializar el entorno#

JavaScript
await DeunaSDK.initialize({
  publicApiKey: 'YOUR_PUBLIC_API_KEY',
  env: 'sandbox',
});

Uso sandbox para pruebas de integración y production Para tráfico en tiempo real. El SDK es la opción predeterminada para producción, pero se puede configurar env Previene explícitamente el uso accidental de tokens y credenciales en diferentes entornos.

3. Seleccione la estrategia de carga#

EstrategiaUtilice cuandoCompromiso
Cargar un widget probableLa página de pago puede iniciarse antes del clic final.Carga rápida; consume recursos de red y del navegador de forma temprana.
Iniciar, y abrir según sea necesarioLa experiencia se utiliza raramente o la página debe minimizar el trabajo inicial.Ciclo de vida más simple; el cliente ve el estado de carga del widget.
Widget de Pago: Cargar previamenteJavaScript
await DeunaSDK.initialize({
  publicApiKey: 'YOUR_PUBLIC_API_KEY',
  env: 'sandbox',
  preloadWidgets: [
    {
      widget: 'payment',
      params: {
        language: 'en',
        callbacks,
      },
    },
  ],
});

// Once your backend returns the token, reveal the prepared widget.
await DeunaSDK.initPaymentWidget({orderToken});

Cargar previamente únicamente la experiencia que el cliente probablemente abrirá. La fuente actual admite payment, elements, vouchery nextAction entradas de carga previa.

4. Abrir una experiencia#

Política de Seguridad de Contenido#

Comenzar con la política existente de su aplicación y permitir únicamente los orígenes de DEUNA utilizados por el entorno y las funciones seleccionados. El SDK de producción se carga desde https://cdn.deuna.io; los marcos de widget utilizan los hosts de Checkout o Elements de producción, mientras que las conexiones de API y almacenamiento utilizan los endpoints de producción de DEUNA. El entorno de pruebas utiliza los correspondientes *.sandbox.deuna.io hosts.

Base orientada a la producción; fusionar con su política existenteHTTP
Content-Security-Policy:
  script-src 'self' https://cdn.deuna.io;
  frame-src https://checkout-ux.deuna.com https://elements.deuna.com https://cdn.getduna.com;
  connect-src 'self' https://api.deuna.io https://apigw.getduna.com https://elements.deuna.com;

Los monederos, los proveedores de fraude, las APMs, las fuentes, las imágenes y los archivos de estilo personalizados pueden requerir orígenes específicos del proveedor. Añadir únicamente los orígenes utilizados por su integración configurada; verificar la consola del navegador en el entorno de pruebas y mantener la política bajo control de versiones. No añadir comodines amplios para evitar errores.

Host adaptable y accesibilidad#

El modo modal utiliza el viewport en pantallas de hasta 600 px de ancho. Para el modo embebido, proporcionar un host fluido y actualizar su altura desde onResize.

CSS
#deuna-payment {
  width: 100%;
  min-width: 0;
  min-height: 32rem;
}

@media (max-width: 600px) {
  #deuna-payment { min-height: 100dvh; }
}

Mantener la función de zoom activada, no bloquear el foco fuera del widget, restaurar el foco después de cerrar, y probar la navegación con teclado y un zoom de texto del 200%.

Lista de verificación para el entorno de pruebas#

  • El script se carga una vez y el fallo produce una interfaz de usuario recuperable.
  • Las claves y los tokens de pedido del entorno de pruebas nunca llegan a la producción, ni viceversa.
  • Los modos modal y de destino funcionan con un ancho de 320 px y con un teclado únicamente.
  • Se gestionan los casos de éxito, rechazo, cierre, tiempo de espera, actualización y interrupción de la red.
  • Los popups o redirecciones de 3DS y APM no están bloqueados por la CSP o el sandboxing de iframe.
  • Los registros excluyen tokens, detalles del cliente y datos de pago.
  • Su backend, y no la devolución, decide si se permite la finalización de la transacción.

Próximos pasos#