> ## 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 WordPress: verifica dell'età per WooCommerce

> Didit: plugin WordPress e WooCommerce per verifica identità, età e KYC senza codice. Da $0.33 per KYC completo, $10 gratis al mese, senza contratti.

Aggiungi la verifica dell'identità Didit e il controllo dell'età a qualsiasi sito WordPress o negozio WooCommerce. Il plugin funziona come proxy backend sicuro: la tua chiave API resta sul server. Espone shortcode, un requisito di verifica al checkout di WooCommerce e hook per sviluppatori, così puoi inserire la verifica senza scrivere JavaScript.

## Prerequisiti

* WordPress 6.0 o successivo
* PHP 7.4 o successivo
* Un account della [Didit Console](https://business.didit.me)

## Passaggio 1: ottieni le credenziali Didit

1. Registrati o accedi su **[business.didit.me](https://business.didit.me)**
2. Vai su **API e Webhook**, quindi copia la tua **chiave API**
3. Vai su **Workflow**, crea o seleziona un workflow, quindi copia il **Workflow ID**

> [!NOTE]
>
> Puoi usare un **URL UniLink** per visualizzare in anteprima il flusso di verifica senza chiavi API.
> Usa la modalità **API Session** con una chiave API e un Workflow ID per il controllo dell'accesso ai contenuti e per i requisiti di verifica di WooCommerce.
> Il completamento di UniLink da solo non sblocca i contenuti protetti e non approva un ordine.

## Passaggio 2: installa il plugin

1. Scarica `didit-verify-0.3.4.zip` dalla **[versione 0.3.4](https://github.com/didit-protocol/plugin-wordpress/releases/tag/v0.3.4)**
2. Nel pannello di amministrazione di WordPress, vai su **Plugin → Aggiungi nuovo → Carica plugin**
3. Scegli il file ZIP scaricato e fai clic su **Installa ora**
4. Fai clic su **Attiva**

> [!NOTE]
>
> Didit Verify è disponibile anche su [WordPress.org](https://wordpress.org/plugins/didit-verify/).
> Controlla la versione prima dell'installazione: usa la 0.3.4 o successiva per il comportamento di verifica confermato dal server descritto qui.
> Dalla 0.3.4, l'accesso ai contenuti protetti viene revocato quando una verifica approvata viene successivamente rifiutata, scade o torna in revisione.
> Se la directory contiene una versione precedente, installa lo ZIP della versione indicata sopra.

> [!WARNING]
>
> Dopo un aggiornamento da una versione precedente alla 0.3.2, gli utenti la cui approvazione precedente non è stata confermata dal server devono verificarsi di nuovo prima di accedere ai contenuti protetti o completare un checkout che richiede la verifica.

## Passaggio 3: configura il plugin

Vai su **Impostazioni → Didit Verify**.

### Scegli la modalità

| Modalità | Ideale per | Cosa ti serve |
| - | - | - |
| **UniLink** | Test rapidi | Solo l'URL UniLink del tuo workflow |
| **API Session** (consigliata) | Uso in produzione | Workflow ID + chiave API |

**Per UniLink:** imposta Mode su "UniLink", incolla il tuo URL e salva.

**Per API Session:** imposta Mode su "API Session", inserisci il tuo Workflow ID e la tua chiave API, quindi salva.

> [!NOTE]
>
> La chiave API è memorizzata in modo sicuro sul tuo server e non viene mai esposta ai visitatori.

### Configura le opzioni di sessione (solo modalità API)

Sono impostazioni facoltative che ti danno un controllo maggiore:

* **Dati Fornitore**: collega ogni verifica a un utente specifico nella tua dashboard Didit, così puoi tenere traccia di chi ha verificato. Il valore predefinito è l'ID utente di WordPress (ad esempio `wp-42`). Puoi anche scegliere l'email utente, un prefisso personalizzato o disattivarlo.
* **URL di callback**: una pagina del tuo sito a cui gli utenti vengono reindirizzati dopo la verifica. Didit aggiunge `verificationSessionId` e `status` come parametri di query.
* **Metodo di callback**: quale dispositivo gestisce il reindirizzamento: `initiator` (il dispositivo che ha avviato), `completer` (il dispositivo che completa) oppure `both`.
* **Lingua**: scegli tra 54 lingue oppure lascia che venga rilevata automaticamente dal browser.

### Configura le opzioni di visualizzazione

* **Modalità di visualizzazione**: Modal (finestra a comparsa sovrapposta) oppure Embedded (inline nella pagina)
* **Pulsante di chiusura**: mostra o nascondi la X nella finestra modale
* **Conferma di uscita**: mostra una finestra "Sei sicuro?" quando si chiude la finestra modale
* **Chiusura automatica**: chiude automaticamente la modale al termine della verifica
* **Registrazione debug**: registra gli eventi dell'SDK nella console del browser (per la risoluzione dei problemi)

### Personalizza il pulsante

In **Aspetto del pulsante** puoi modificare:

* Testo del pulsante e testo di successo
* Colore di sfondo e colore del testo
* Raggio del bordo, padding e dimensione del carattere

Un'anteprima live si aggiorna in tempo reale mentre modifichi i valori.

## Passaggio 4: aggiungi la verifica al tuo sito

### Per gli store WooCommerce

1. In **Impostazioni → Didit Verify → WooCommerce**, seleziona **Richiedi la verifica dell'identità al checkout**
2. Scegli dove compare la sezione di verifica:
   * In cima alla pagina di checkout
   * Dopo i dati di fatturazione
   * Dopo le note dell'ordine
   * Prima di "Effettua ordine" (consigliato)
3. Facoltativamente scegli un **Ambito prodotti**: tutti i prodotti (predefinito), solo i prodotti selezionati, oppure tutti i prodotti tranne quelli selezionati.
   Contrassegna i prodotti con la casella **Verifica Didit** in **Dati prodotto → Avanzate** nell'editor del prodotto.
   La verifica è richiesta per un carrello che contiene almeno un prodotto che la richiede.
   L'ambito si applica sia alla modalità di checkout sia alla modalità post-acquisto.
4. Facoltativamente modifica **Titolo della sezione**, **Messaggio di checkout** e **Messaggio post-acquisto** in **Impostazioni → Didit Verify → WooCommerce**; i campi vuoti usano il testo predefinito
5. Facoltativamente attiva **Invia dati di fatturazione** per inviare automaticamente a Didit nome, email, telefono e indirizzo del cliente, per il precompilamento e la validazione incrociata

> [!NOTE]
>
> I codici paese vengono convertiti automaticamente dal formato alpha-2 di WooCommerce al formato alpha-3 richiesto da Didit.

I clienti devono ricevere una decisione **Approvata** confermata dal server prima di poter effettuare un ordine.
Questo vale sia per il checkout classico sia per quello a blocchi.
Il plugin verifica che la sessione appartenga al cliente corrente e che non sia già stata usata per un altro ordine.
L'ID della sessione viene salvato nell'ordine come riferimento.

Se scegli **Dopo l'acquisto**, l'ordine resta in attesa finché il server non conferma l'approvazione.
I clienti ospiti possono verificarsi dalla pagina dell'ordine usando la sua chiave valida dell'ordine.
Configura l'URL del webhook e il segreto mostrati in **Impostazioni → Didit Verify** affinché gli aggiornamenti di stato firmati possano sbloccare gli ordini approvati.

### Per qualsiasi pagina WordPress

Aggiungi questo shortcode a qualsiasi pagina o articolo:

```
[didit_verify]
```

Comparirà un pulsante di verifica, con lo stile definito in Aspetto del pulsante.

Puoi sostituire il testo per singola pagina:

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

Oppure forza la modalità embedded su una pagina specifica:

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

## Passaggio 5: limitare i contenuti agli utenti verificati (facoltativo)

Mostra o nascondi i contenuti in base allo stato di verifica:

I blocchi di contenuto richiedono un utente con accesso effettuato e un'approvazione confermata tramite la modalità API Session.
I callback del browser e i parametri di query dei reindirizzamenti non concedono l'accesso.

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

Gli utenti non verificati vedono un messaggio e un pulsante di verifica. Puoi personalizzare il messaggio:

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

Mostra lo stato di verifica dell'utente ovunque:

```
[didit_status]
```

Visualizza "Identity Verified" o "Not Verified" per l'utente con accesso effettuato.

## Verifica dello stato di verifica

| Dove | Come |
| - | - |
| **Pannello di amministrazione** | **Utenti → Tutti gli utenti**: una colonna "Didit" mostra ✓ per gli utenti verificati |
| **Ordini WooCommerce** | L'ID della sessione Didit compare nei dettagli dell'ordine |
| **Shortcode** | `[didit_status]` mostra lo stato su qualsiasi pagina |

## Risoluzione dei problemi

| Problema | Soluzione |
| - | - |
| "Creating session..." non termina | Verifica che il Workflow ID e la chiave API siano corretti in **Impostazioni → Didit Verify** |
| La finestra modale non si apre | Assicurati che la pagina contenga `[didit_verify]` oppure che la verifica nel checkout WooCommerce sia attiva |
| Interfaccia di verifica nella lingua sbagliata | Cambia l'impostazione **Lingua** in **Opzioni sessione** |
| Necessità di fare debug | Abilita **Debug Logging** in Opzioni di visualizzazione, poi apri la console del browser (F12) per vedere gli eventi dell'SDK |

## Sicurezza

Il plugin funge da proxy backend sicuro. La tua chiave API non raggiunge mai il browser. Ogni richiesta di sessione è protetta da:

1. **Nonce CSRF**: le richieste devono provenire dal tuo sito WordPress
2. **Requisito di accesso**: solo gli utenti registrati possono creare sessioni (configurabile)
3. **Limite di frequenza**: 10 sessioni/ora per utente, 3/ora per IP per gli ospiti
4. **Sanitizzazione degli input**: tutti i campi sono autorizzati e sottoposti a sanitizzazione lato server

La creazione della sessione associa la verifica al cliente o all'ordine corrente.
Il plugin conferma le decisioni con l'API Didit o con un webhook verificato prima di contrassegnare un utente o un ordine come approvato.
Il checkout come ospite può creare una sessione quando la verifica è richiesta, anche se è attivo il requisito di accesso generale.
La verifica successiva all'acquisto richiede inoltre una chiave d'ordine valida.

***

## Per sviluppatori

### Hook PHP

Il plugin attiva le azioni di WordPress a cui altri plugin o temi possono agganciarsi:

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

Un evento DOM viene inviato al termine della verifica:

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

### Controllare la verifica in PHP

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

Usa questo helper per includere il controllo di conferma lato server.
Non concedere l'accesso in base ai metadati utente legacy o al solo evento `didit:complete` del browser.

## Risorse

* [Codice sorgente del plugin (GitHub)](https://github.com/didit-protocol/plugin-wordpress)
* [Documentazione dell'API Didit](https://docs.didit.me/it.md)
* [Didit Console](https://business.didit.me)
* [Riferimento API Create Session](https://docs.didit.me/it/sessions-api/create-session.md)


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