Skip to main content
Esta página asume que ya leíste la Descripción general de Secure Elements: ahí se cubre la carga del SDK y el flujo compartido de client-token, ambos aplican aquí.

Velo en vivo

La demo genera su propio token y monta los campos automáticamente. Ingresa cualquier número de tarjeta que pase una verificación de Luhn, completa el nombre del titular y envía. Usa Remint token & remount si el formulario deja de responder. Ábrela en su propia pestaña →

Genera un token de tokenización

Llama a POST /v1/client-token con "purpose": "tokenization":
A diferencia de un token de revelado, este no necesita un virtualCardId. Sí requiere un alcance diferente en tu token de acceso — MANAGE_PAYMENT, no CREATE_VIRTUALCARD — y tiene una vida útil más larga (30 minutos por defecto) ya que un usuario tarda más llenando un formulario de tarjeta que haciendo un clic de revelado.

Renderiza los campos

renderFieldsForTokenization no tiene la opción fields: PAN, vencimiento y CVV siempre se montan juntos como un solo iframe combinado, porque la validación del CVV es sensible a la marca (el CVV de Amex tiene 4 dígitos; el de las demás marcas, 3), lo que solo funciona si el campo conoce el número de tarjeta escrito en el campo contiguo dentro del frame. No puedes montarlos de forma independiente como se puede con los campos de createCardViewer.
Una Google Font pasada en style.fontFamily se renderiza en los campos de Card Reveal pero aquí se omite en silencio: estos campos se renderizan dentro de un iframe de un proveedor con bóveda, sin forma de cargar CSS externo. Solo la allowlist de fuentes del sistema (system-ui, Arial, Georgia, monospace, etc.) realmente aplica una fuente en esta capacidad.

Móntalo

Misma forma que en Card Reveal: rechaza con FluzElementsError por INVALID_STYLE, MOUNT_TIMEOUT o MOUNT_FAILED (el frame no cargó, o esta instancia ya está montada). frameHostOrigin se valida de forma sincrónica cuando llamas a renderFieldsForTokenization, igual que en createCardViewer: un origen no reconocido lanza INVALID_FRAME_HOST_ORIGIN antes de llegar a mount().

Rastrea el estado de los campos

Se activa en cada pulsación dentro del frame. brand solo aparece en el estado de pan, detectada a partir de los dígitos ingresados hasta el momento: amex, visa, mastercard, discover, diners o jcb. Usa isValid para controlar tu propio botón de envío y para los mensajes de validación inline: ninguno de estos campos expone el valor subyacente a tu página. excludedCardBrands (p. ej. ["amex"]) no bloquea la escritura: fuerza que isValid de pan sea false cuando se detecta una marca coincidente, por lo que el usuario aún puede ingresar el número pero submit() no tendrá éxito hasta que use una tarjeta distinta.

Enviar

Recopila el nombre del titular y la dirección de facturación como inputs normales en tu propia página: el SDK no los renderiza dentro de un frame alojado por Fluz porque no son datos de tarjeta. Si manejarlos tú afecta tu propio alcance PCI DSS depende de tu entorno más amplio de datos de titulares de tarjeta; confírmalo con tu QSA.
cardholderName se divide en nombre y apellido solo por el primer espacio: "Mary Ann Smith" se convierte en nombre "Mary", apellido "Ann Smith"; un nombre de una sola palabra se usa como ambos. Para reutilizar una dirección ya existente en la cuenta en lugar de recopilar una nueva, pasa billingAddress: { userAddressId: "<uuid>" }.
submit() casi nunca rechaza, y nunca por una denegación. Solo lanza sincrónicamente por MOUNT_FAILED (aún no montado) o SUBMIT_FAILED (“ya hay una llamada a submit() en curso”: ignora una segunda llamada mientras hay una en progreso). Cualquier otro resultado — éxito, denegación, fallo de validación, timeout — se resuelve normalmente y llega a través de los callbacks de abajo.

Maneja los resultados

onSuccess se activa cuando la tarjeta se agrega como fuente de fondos. onDeclined se activa para una tarjeta que el procesador rechazó: sigue siendo un resultado normal y esperado, no un error: onError es para todo lo que no es una denegación normal:

Limpieza

Quita el frame y desuscribe todos los listeners. Llama esto al desmontar, o antes de generar un token nuevo para reintentar.

Ejemplo completo

/mint-tokenization-token es tu propia ruta de backend: la que llama a POST /v1/client-token con "purpose": "tokenization" y tu token de acceso OAuth de Fluz.

Próximos pasos

Descripción general de Secure Elements

Generación de tokens, carga del SDK y CSP.

Card Reveal

La otra capacidad de Secure Elements: mostrar a un usuario los datos de su propia tarjeta.

Demo en vivo

Prueba el formulario para agregar tarjeta ejecutándose contra staging.

Integraciones de ejemplo

Ejemplos ejecutables en HTML plano y React de entrada segura de tarjeta con un servidor que genera tokens.