Skip to content

Personalizacion del Checkout

Personaliza la apariencia del modal de Checkout.js para que se integre con la identidad visual de tu marca.

Configuracion basica

Usa Taypi.configure() antes de llamar a Taypi.open():

js
Taypi.publicKey = 'taypi_pk_test_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4';

Taypi.configure({
    theme: 'light',
    colors: {
        primary: '#6366F1',
        background: '#FFFFFF',
    },
});

Temas

Checkout.js incluye dos temas predefinidos:

TemaDescripcion
lightFondo claro con texto oscuro (por defecto)
darkFondo oscuro con texto claro
js
Taypi.configure({
    theme: 'dark',
});

Colores personalizados

Sobreescribe los colores del tema activo con la propiedad colors:

PropiedadDescripcionValor por defecto
primaryColor principal: botones, enlaces, barra de progreso#6366F1 (indigo)
backgroundColor de fondo del modal#FFFFFF (blanco)
textColor del texto principal#1F2937 (gris oscuro)
borderColor de los bordes#E5E7EB (gris claro)
successColor del estado de pago exitoso#10B981 (verde)
errorColor del estado de error#EF4444 (rojo)

Ejemplo

js
Taypi.configure({
    theme: 'light',
    colors: {
        primary: '#FF6B00',     // Naranja de tu marca
        background: '#FFF8F0',  // Fondo calido
        success: '#22C55E',     // Verde personalizado
    },
});

TIP

Solo necesitas especificar los colores que quieras cambiar. Los demas usaran los valores por defecto del tema seleccionado.

Textos personalizados

Personaliza los textos del modal con la propiedad locale:

js
Taypi.configure({
    locale: {
        title: 'Completar pago',
        subtitle: 'Escanea el codigo QR con tu app favorita',
        instructions: 'Abre Yape, Plin o tu app bancaria y escanea el codigo',
        expiresIn: 'Expira en',
        successTitle: 'Pago exitoso',
        successMessage: 'Tu pago ha sido procesado correctamente',
        expiredTitle: 'QR expirado',
        expiredMessage: 'El tiempo para pagar ha terminado',
        closeButton: 'Cerrar',
    },
});

WARNING

Los textos del checkout siempre deben estar en espanol, ya que TAYPI opera exclusivamente en Peru.

Comportamiento del modal

Configura el comportamiento del modal con la propiedad modal:

js
Taypi.configure({
    modal: {
        closeOnOverlayClick: true,   // Cerrar al hacer click fuera del modal (default: true)
        closeOnEscape: true,         // Cerrar con tecla Escape (default: true)
        showCloseButton: true,       // Mostrar boton de cerrar (default: true)
        preventScroll: true,         // Bloquear scroll del body (default: true)
    },
});

Ejemplo completo

html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Mi Tienda Online</title>
</head>
<body>
    <button id="btn-pagar" style="background: #FF6B00; color: white; padding: 12px 24px; border: none; border-radius: 8px; cursor: pointer; font-size: 16px;">
        Pagar S/ 50.00
    </button>

    <script src="https://app.taypi.pe/v1/checkout.js"></script>
    <script>
        Taypi.publicKey = 'taypi_pk_test_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4';

        // Personalizar el checkout
        Taypi.configure({
            theme: 'light',
            colors: {
                primary: '#FF6B00',
                background: '#FFFFFF',
            },
            locale: {
                title: 'Pagar pedido',
                subtitle: 'Escanea con Yape o Plin',
                successTitle: 'Listo!',
                successMessage: 'Tu pedido esta confirmado',
            },
            modal: {
                closeOnOverlayClick: false,
                closeOnEscape: true,
            },
        });

        document.getElementById('btn-pagar').addEventListener('click', async () => {
            const res = await fetch('/api/crear-pago', { method: 'POST' });
            const { checkout_token } = await res.json();

            Taypi.open({
                sessionToken: checkout_token,
                onSuccess: (result) => {
                    window.location.href = '/pedido-confirmado?id=' + result.payment_id;
                },
                onExpired: () => {
                    alert('El QR expiro. Intenta de nuevo.');
                },
                onError: (error) => {
                    console.error('Error:', error.message);
                },
            });
        });
    </script>
</body>
</html>

Restablecer configuracion

Para volver a los valores por defecto, llama a Taypi.configure() sin argumentos:

js
Taypi.configure();

Restricciones

  • Los colores deben estar en formato hexadecimal (#RRGGBB). No se aceptan nombres de color (red) ni rgb().
  • El logo de TAYPI siempre aparece en la parte inferior del modal. No se puede ocultar.
  • El tamano del codigo QR se ajusta automaticamente. No se puede modificar manualmente.

Plataforma de pagos QR interoperables para Perú