> ## 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: idade no WooCommerce

> Plugin da Didit para WordPress e WooCommerce: KYC e verificação de idade sem código. A partir de $0.33 por KYC completo, $10 grátis/mês, sem contrato.

Adicione verificação de identidade e controle de idade da Didit a qualquer site WordPress ou loja WooCommerce. O plugin funciona como um proxy seguro no backend (sua chave de API permanece no servidor) e oferece shortcodes, um controle de verificação no checkout do WooCommerce e hooks para desenvolvedores, para que você adicione a verificação sem escrever JavaScript.

## Pré-requisitos

* WordPress 6.0 ou superior
* PHP 7.4 ou superior
* Uma conta no [Didit Console](https://business.didit.me)

## Etapa 1: Obtenha suas credenciais da Didit

1. Cadastre-se ou faça login em **[business.didit.me](https://business.didit.me)**
2. Acesse **API & Webhooks** e copie sua **API Key**
3. Acesse **Workflows**, crie ou selecione um fluxo de verificação (workflow) e copie o **ID do fluxo de trabalho**

> [!NOTE]
>
> Você pode usar uma **UniLink URL** para visualizar o fluxo de verificação sem chaves de API.
> Use o modo **API Session** com uma chave de API e um ID de fluxo para controlar o acesso ao conteúdo e atender aos requisitos de verificação do WooCommerce.
> A conclusão do UniLink, por si só, não libera conteúdo protegido nem aprova um pedido.

## Etapa 2: Instale o plugin

1. Baixe `didit-verify-0.3.4.zip` da **[versão 0.3.4](https://github.com/didit-protocol/plugin-wordpress/releases/tag/v0.3.4)**
2. No painel administrativo do WordPress, acesse **Plugins → Add New → Upload Plugin**
3. Escolha o arquivo ZIP baixado e clique em **Install Now**
4. Clique em **Activate**

> [!NOTE]
>
> O Didit Verify também está listado no [WordPress.org](https://wordpress.org/plugins/didit-verify/).
> Confira a versão antes de instalar: use a versão 0.3.4 ou posterior para ter o comportamento de verificação confirmada pelo servidor descrito aqui.
> A partir da 0.3.4, o acesso ao conteúdo protegido é revogado quando uma verificação aprovada é depois recusada, expira ou volta para revisão.
> Se o diretório tiver uma versão mais antiga, instale o ZIP da versão indicada acima.

> [!WARNING]
>
> Após atualizar de uma versão anterior à 0.3.2, os usuários cuja aprovação anterior não foi confirmada pelo servidor precisam passar pela verificação novamente antes de acessar conteúdo protegido ou concluir um checkout que exige verificação.

## Etapa 3: Configure o plugin

Acesse **Configurações → Didit Verify**.

### Escolha o modo

| Modo | Ideal para | O que você precisa |
| - | - | - |
| **UniLink** | Testes rápidos | Apenas a UniLink URL do seu fluxo |
| **API Session** (recomendado) | Uso em produção | ID do fluxo + chave de API |

**Para UniLink:** defina o modo como "UniLink", cole sua URL e salve.

**Para API Session:** defina o modo como "API Session", informe o ID do fluxo e a chave de API e salve.

> [!NOTE]
>
> A chave de API é armazenada com segurança no seu servidor e nunca é exposta aos visitantes.

### Configure as opções de sessão (somente no modo API)

Estas configurações são opcionais e oferecem mais controle:

* **Vendor Data**: vincula cada verificação a um usuário específico no seu painel da Didit, para que você saiba quem fez a verificação. O padrão é o ID de usuário do WordPress (por exemplo, `wp-42`). Você também pode escolher o e-mail do usuário, um prefixo personalizado ou desativar a opção.
* **URL de retorno**: uma página do seu site para onde os usuários são redirecionados após a verificação. A Didit adiciona `verificationSessionId` e `status` como parâmetros de consulta.
* **Callback Method**: qual dispositivo trata o redirecionamento: `initiator` (o dispositivo que iniciou), `completer` (o dispositivo que concluiu) ou `both`.
* **Idioma**: escolha entre 49 idiomas ou deixe que seja detectado automaticamente pelo navegador.

### Configure as opções de exibição

* **Display Mode**: modal (sobreposição em pop-up) ou incorporado (inline na página)
* **Close Button**: mostrar ou ocultar o botão X no modal
* **Exit Confirmation**: mostrar uma caixa de diálogo "Tem certeza?" ao fechar
* **Auto-close**: fechar o modal automaticamente quando a verificação for concluída
* **Debug Logging**: registrar os eventos do SDK no console do navegador (para solução de problemas)

### Personalize o botão

Em **Button Appearance**, você pode alterar:

* O texto do botão e o texto de sucesso
* A cor de fundo e a cor do texto
* O raio da borda, o espaçamento interno e o tamanho da fonte

Uma pré-visualização é atualizada em tempo real conforme você altera os valores.

## Etapa 4: Adicione a verificação ao seu site

### Para lojas WooCommerce

1. Em **Configurações → Didit Verify → WooCommerce**, marque **Require identity verification at checkout**
2. Escolha onde a seção de verificação aparece:
   * No topo da página de checkout
   * Após os dados de faturamento
   * Após as observações do pedido
   * Antes de "Finalizar pedido" (recomendado)
3. Opcionalmente, escolha um **Product Scope**: todos os produtos (o padrão), apenas os produtos selecionados ou todos os produtos exceto os selecionados.
   Marque os produtos com a caixa de seleção **Didit verification** em **Dados do produto → Avançado** no editor de produtos.
   Um carrinho que contenha pelo menos um produto que precisa de verificação passa a exigi-la.
   O escopo se aplica tanto ao modo de checkout quanto ao modo pós-compra.
4. Opcionalmente, edite o **Section Title**, a **Checkout Message** e a **Post-purchase Message** em **Configurações → Didit Verify → WooCommerce**; campos vazios usam o texto padrão
5. Opcionalmente, ative **Send Billing Data** para enviar automaticamente o nome, e-mail, telefone e endereço do cliente à Didit para preenchimento prévio e validação cruzada

> [!NOTE]
>
> Os códigos de país são convertidos automaticamente do formato alfa-2 do WooCommerce para o formato alfa-3 exigido pela Didit.

Os clientes precisam receber uma decisão **Approved** confirmada pelo servidor antes de poder fazer um pedido.
Isso vale tanto para o checkout clássico quanto para o checkout em blocos.
O plugin verifica se a sessão pertence ao comprador atual e se ainda não foi usada em outro pedido.
O ID da sessão é salvo no pedido para referência.

Se você escolher **After purchase**, o pedido fica em espera até que o servidor confirme a aprovação.
Clientes sem conta podem fazer a verificação pela página do pedido usando a chave válida do pedido.
Configure a URL e o segredo do webhook exibidos em **Configurações → Didit Verify** para que as atualizações de status assinadas possam liberar os pedidos aprovados.

### Para qualquer página do WordPress

Adicione este shortcode a qualquer página ou post:

```
[didit_verify]
```

Um botão de verificação aparecerá, com o estilo definido nas suas configurações de **Button Appearance**.

Você pode substituir o texto em cada página:

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

Ou forçar o modo incorporado em uma página específica:

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

## Etapa 5: Restringir conteúdo a usuários verificados (opcional)

Mostre ou oculte conteúdo de acordo com o status da verificação:

As restrições de conteúdo exigem um usuário conectado e uma aprovação confirmada por meio do modo API Session.
Callbacks do navegador e parâmetros de consulta do redirecionamento não concedem acesso.

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

Usuários não verificados veem uma mensagem e um botão de verificação. Você pode personalizar a mensagem:

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

Exiba o status de verificação do usuário em qualquer lugar:

```
[didit_status]
```

Exibe "Identity Verified" ou "Not Verified" para o usuário conectado.

## Como verificar o status da verificação

| Onde | Como |
| - | - |
| **Painel de administração** | **Usuários → Todos os usuários**: uma coluna "Didit" mostra ✓ para os usuários verificados |
| **Pedidos do WooCommerce** | O ID da sessão Didit aparece nos detalhes do pedido |
| **Shortcode** | `[didit_status]` exibe o status em qualquer página |

## Solução de problemas

| Problema | Solução |
| - | - |
| "Creating session..." fica travado | Verifique se o Workflow ID e a chave de API estão corretos em **Configurações → Didit Verify** |
| O modal não abre | Confirme que a página contém `[didit_verify]` ou que a verificação no checkout do WooCommerce está ativada |
| Interface de verificação no idioma errado | Altere a configuração **Idioma** em **Session Options** |
| Precisa depurar | Ative **Debug Logging** em Display Options e abra o console do navegador (F12) para ver os eventos do SDK |

## Segurança

O plugin funciona como um proxy de backend seguro. Sua chave de API nunca chega ao navegador. Cada requisição de sessão é protegida por:

1. **Nonce de CSRF**: as requisições precisam se originar do seu site WordPress
2. **Exigência de login**: somente usuários registrados podem criar sessões (configurável)
3. **Limite de requisições**: 10 sessões/hora por usuário, 3/hora por IP para visitantes
4. **Sanitização de entrada**: todos os campos passam por uma lista de permissões e são sanitizados no servidor

A criação da sessão vincula a verificação ao comprador ou pedido atual.
O plugin confirma as decisões com a API da Didit ou com um webhook verificado antes de marcar um usuário ou pedido como aprovado.
O checkout como visitante pode criar uma sessão quando a verificação é obrigatória, mesmo que a exigência geral de login esteja ativada.
A verificação pós-compra também exige uma chave do pedido válida.

***

## Para desenvolvedores

### Hooks PHP

O plugin dispara ações do WordPress às quais outros plugins ou temas podem se conectar:

```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 JavaScript

Um evento DOM é disparado quando a verificação termina:

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

### Verificar a verificação em PHP

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

Use esta função auxiliar para incluir a verificação da confirmação pelo servidor.
Não conceda acesso apenas com base em metadados legados do usuário ou no evento `didit:complete` do navegador.

## Recursos

* [Código-fonte do plugin (GitHub)](https://github.com/didit-protocol/plugin-wordpress)
* [Documentação da API da Didit](https://docs.didit.me/pt-br.md)
* [Didit Console](https://business.didit.me)
* [Referência da API de criação de sessões](https://docs.didit.me/pt-br/sessions-api/create-session.md)


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