> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Plugin KYC para WordPress: verificar edad en WooCommerce

> Plugin de Didit para WordPress y WooCommerce: KYC y verificación de edad sin código. Desde $0.33 por KYC completo, $10 gratis/mes, sin contratos.

Añade verificación de identidad y restricción por edad de Didit a cualquier sitio WordPress o tienda WooCommerce. El plugin funciona como un proxy de backend seguro (tu clave de API permanece en el servidor) y ofrece shortcodes, una restricción de verificación en el checkout de WooCommerce y hooks para desarrolladores, de modo que puedes incorporar la verificación sin escribir JavaScript.

## Requisitos previos

* WordPress 6.0 o superior
* PHP 7.4 o superior
* Una cuenta de [Didit Console](https://business.didit.me)

## Paso 1: Obtén tus credenciales de Didit

1. Regístrate o inicia sesión en **[business.didit.me](https://business.didit.me)**
2. Ve a **API & Webhooks** y copia tu **API Key**
3. Ve a **Workflows**, crea o selecciona un flujo de trabajo y copia el **Workflow ID**

> [!NOTE]
>
> Puedes usar una **URL de UniLink** para previsualizar el flujo de verificación sin claves de API.
> Usa el modo **API Session** con una clave de API y un ID de flujo de trabajo para los controles de acceso a contenido y los requisitos de verificación de WooCommerce.
> Completar una verificación mediante UniLink por sí solo no desbloquea el contenido protegido ni aprueba un pedido.

## Paso 2: Instala el plugin

1. Descarga `didit-verify-0.3.4.zip` desde la **[versión 0.3.4](https://github.com/didit-protocol/plugin-wordpress/releases/tag/v0.3.4)**
2. En el panel de administración de WordPress, ve a **Plugins → Add New → Upload Plugin**
3. Elige el archivo ZIP descargado y haz clic en **Install Now**
4. Haz clic en **Activate**

> [!NOTE]
>
> Didit Verify también está disponible en [WordPress.org](https://wordpress.org/plugins/didit-verify/).
> Comprueba la versión antes de instalarlo: usa la 0.3.4 o posterior para obtener el comportamiento de verificación confirmada por el servidor que se describe aquí.
> A partir de la 0.3.4, el acceso al contenido protegido se revoca cuando una verificación aprobada se rechaza posteriormente, expira o vuelve a estar en revisión.
> Si el directorio tiene una versión anterior, instala el ZIP de la versión indicada arriba.

> [!WARNING]
>
> Tras actualizar desde una versión anterior a la 0.3.2, los usuarios cuya aprobación previa no haya sido confirmada por el servidor deben verificarse de nuevo antes de acceder al contenido protegido o de completar un checkout que requiera verificación.

## Paso 3: Configura el plugin

Ve a **Settings → Didit Verify**.

### Elige tu modo

| Modo | Ideal para | Qué necesitas |
| - | - | - |
| **UniLink** | Pruebas rápidas | Solo la URL de UniLink de tu flujo |
| **API Session** (recomendado) | Uso en producción | ID del flujo + clave de API |

**Para UniLink:** establece Mode en "UniLink", pega tu URL y guarda.

**Para API Session:** establece Mode en "API Session", introduce tu ID del flujo y tu clave de API, y guarda.

> [!NOTE]
>
> La clave de API se almacena de forma segura en tu servidor y nunca se expone a los visitantes.

### Configura las opciones de sesión (solo en modo API)

Estas opciones son opcionales y te dan más control:

* **Vendor Data**: vincula cada verificación a un usuario concreto en tu panel de Didit, para que puedas saber quién se ha verificado. El valor predeterminado es el ID de usuario de WordPress (p. ej., `wp-42`). También puedes elegir el correo electrónico del usuario, un prefijo personalizado o desactivarlo.
* **URL de callback**: una página de tu sitio a la que se redirige a los usuarios tras la verificación. Didit añade `verificationSessionId` y `status` como parámetros de consulta.
* **Callback Method**: qué dispositivo gestiona la redirección: `initiator` (el dispositivo que la inició), `completer` (el dispositivo que la termina) o `both`.
* **Idioma**: elige entre 49 idiomas o deja que se detecte automáticamente a partir del navegador.

### Configura las opciones de visualización

* **Display Mode**: Modal (ventana emergente superpuesta) o Embedded (integrado en la página)
* **Close Button**: muestra u oculta el botón X del modal
* **Exit Confirmation**: muestra un diálogo de "¿Estás seguro?" al cerrar
* **Auto-close**: cierra automáticamente el modal cuando se completa la verificación
* **Debug Logging**: registra los eventos del SDK en la consola del navegador (para solucionar problemas)

### Personaliza el botón

En **Button Appearance**, puedes cambiar:

* El texto del botón y el texto de éxito
* El color de fondo y el color del texto
* El radio del borde, el relleno y el tamaño de fuente

Una vista previa se actualiza en tiempo real a medida que cambias los valores.

## Paso 4: Añade la verificación a tu sitio

### Para tiendas WooCommerce

1. En **Settings → Didit Verify → WooCommerce**, marca **Require identity verification at checkout**
2. Elige dónde aparece la sección de verificación:
   * Al principio de la página de checkout
   * Después de los datos de facturación
   * Después de las notas del pedido
   * Antes de "Place Order" (recomendado)
3. Opcionalmente, elige un **Product Scope**: todos los productos (opción predeterminada), solo los productos seleccionados o todos los productos excepto los seleccionados.
   Marca los productos con la casilla **Didit verification** en **Product data → Advanced** del editor de productos.
   Un carrito que contenga al menos un producto que necesite verificación la requiere.
   El ámbito se aplica tanto al modo de checkout como al modo posterior a la compra.
4. Opcionalmente, edita **Section Title**, **Checkout Message** y **Post-purchase Message** en **Settings → Didit Verify → WooCommerce**; los campos vacíos usan el texto predeterminado
5. Opcionalmente, activa **Send Billing Data** para enviar automáticamente a Didit el nombre, el correo electrónico, el teléfono y la dirección del cliente para el rellenado previo y la validación cruzada

> [!NOTE]
>
> Los códigos de país se convierten automáticamente del formato alfa-2 de WooCommerce al formato alfa-3 que requiere Didit.

Los clientes deben recibir la decisión **Aprobado**, confirmada por el servidor, antes de poder realizar un pedido.
Esto se aplica tanto al checkout clásico como al checkout por bloques.
El plugin comprueba que la sesión pertenezca al comprador actual y que no se haya usado ya para otro pedido.
El ID de sesión se guarda en el pedido como referencia.

Si eliges **After purchase**, el pedido queda en espera hasta que el servidor confirma la aprobación.
Los clientes invitados pueden verificarse desde la página del pedido usando su clave de pedido válida.
Configura la URL y el secreto del webhook que se muestran en **Settings → Didit Verify** para que las actualizaciones de estado firmadas puedan liberar los pedidos aprobados.

### Para cualquier página de WordPress

Añade este shortcode a cualquier página o entrada:

```
[didit_verify]
```

Aparecerá un botón de verificación con el estilo configurado en Button Appearance.

Puedes sobrescribir el texto en cada página:

```
[didit_verify text="Verify Now" success_text="Done!"]
```

O forzar el modo integrado en una página concreta:

```
[didit_verify mode="embedded"]
```

## Paso 5: Restringir contenido a usuarios verificados (opcional)

Muestra u oculta contenido según el estado de verificación:

Las restricciones de contenido requieren un usuario con sesión iniciada y una aprobación confirmada mediante el modo API Session.
Las callbacks del navegador y los parámetros de consulta de la redirección no otorgan acceso.

```
[didit_gate]
This content is only visible to verified users.
[/didit_gate]
```

Los usuarios no verificados ven un mensaje y un botón de verificación. Puedes personalizar el mensaje:

```
[didit_gate message="Please verify to continue."]Secret content here.[/didit_gate]
```

Muestra el estado de verificación del usuario en cualquier lugar:

```
[didit_status]
```

Muestra "Identity Verified" o "Not Verified" para el usuario con sesión iniciada.

## Comprobar el estado de verificación

| Dónde | Cómo |
| - | - |
| **Panel de administración** | **Users → All Users**: una columna "Didit" muestra ✓ para los usuarios verificados |
| **Pedidos de WooCommerce** | El ID de sesión de Didit aparece en los detalles del pedido |
| **Shortcode** | `[didit_status]` muestra el estado en cualquier página |

## Solución de problemas

| Problema | Solución |
| - | - |
| "Creating session..." se queda bloqueado | Comprueba que tu Workflow ID y tu clave de API sean correctos en **Settings → Didit Verify** |
| El modal no se abre | Asegúrate de que la página contenga `[didit_verify]` o de que la verificación en el checkout de WooCommerce esté activada |
| La interfaz de verificación aparece en el idioma incorrecto | Cambia la opción **Language** en **Session Options** |
| Necesitas depurar | Activa **Debug Logging** en Display Options y abre la consola del navegador (F12) para ver los eventos del SDK |

## Seguridad

El plugin actúa como un proxy de backend seguro. Tu clave de API nunca llega al navegador. Cada solicitud de sesión está protegida por:

1. **Nonce CSRF**: las solicitudes deben originarse en tu sitio de WordPress
2. **Inicio de sesión obligatorio**: solo los usuarios registrados pueden crear sesiones (configurable)
3. **Límite de solicitudes**: 10 sesiones por hora por usuario y 3 por hora por IP para invitados
4. **Saneamiento de entradas**: todos los campos se validan contra una lista permitida y se sanean en el servidor

La creación de la sesión vincula la verificación al comprador o al pedido actual.
El plugin confirma las decisiones con la API de Didit o con un webhook verificado antes de marcar un usuario o un pedido como aprobado.
El checkout como invitado permite crear una sesión cuando la verificación es obligatoria, aunque esté activado el requisito general de inicio de sesión.
La verificación posterior a la compra también requiere una clave de pedido válida.

***

## Para desarrolladores

### Hooks de PHP

El plugin dispara acciones de WordPress a las que otros plugins o temas pueden engancharse:

```php theme={null}
// When a user completes verification
add_action('didit_verification_completed', function ($user_id, $session_id, $status) {
    // Update CRM, send email, grant access, etc.
}, 10, 3);

// When a user cancels verification
add_action('didit_verification_cancelled', function ($user_id, $session_id) {
    // Log cancellation
}, 10, 2);

// When a session is created server-side
add_action('didit_session_created', function ($url, $user_id, $vendor_data) {
    // Log, notify, etc.
}, 10, 3);
```

### Evento de JavaScript

Se emite un evento DOM cuando finaliza la verificación:

```javascript theme={null}
document.addEventListener('didit:complete', function (e) {
    console.log('Result:', e.detail); // { type, session }
});
```

### Comprobar la verificación en PHP

```php theme={null}
$is_verified = Didit_Verify::init()->is_user_verified($user_id);
```

Usa esta función auxiliar para incluir la comprobación de la confirmación del servidor.
No otorgues acceso basándote solo en metadatos de usuario heredados o en el evento `didit:complete` del navegador.

## Recursos

* [Código fuente del plugin (GitHub)](https://github.com/didit-protocol/plugin-wordpress)
* [Documentación de la API de Didit](https://docs.didit.me/es.md)
* [Consola de Didit](https://business.didit.me)
* [Referencia de la API Create Session](https://docs.didit.me/es/sessions-api/create-session.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.