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

# Risoluzione dei problemi con i webhook

> Diagnostica e risolvi problemi comuni con i webhook, tra cui errori di verifica della firma, secret errati, eventi mancanti e timeout dell'endpoint in storekit.

Ecco i problemi comuni con i webhook e come risolverli.

## Verifica della firma fallita

### Non si utilizza il corpo del payload grezzo

**Problema**: Quando generiamo la firma, usiamo la stringa grezza del corpo del payload del messaggio. Se analizzi il JSON e poi lo trasformi nuovamente in stringa, la firma non corrisponderà.

**Soluzione**: Utilizza sempre il corpo grezzo della richiesta esattamente come ricevuto:

```javascript theme={null}
// WRONG - parsing and re-stringifying changes the format
const payload = JSON.parse(body);
verify(JSON.stringify(payload), headers); // Will fail!

// CORRECT - use the raw body
verify(rawBody, headers);
```

### Chiave secret sbagliata

**Problema**: Utilizzo del webhook secret errato o mancata decodifica corretta.

**Soluzione**:

* Assicurati di utilizzare il secret corretto per ciascun endpoint (i secret sono univoci per endpoint)
* Rimuovi il prefisso `whsec_` prima della decodifica base64

### Timestamp scaduto

**Problema**: L'orologio del tuo server non è sincronizzato, causando il rifiuto di webhook validi.

**Soluzione**: Assicurati che l'orario del tuo server sia sincronizzato tramite NTP.

## Webhook non ricevuti

### Endpoint non accessibile

**Problema**: Il tuo endpoint non è pubblicamente accessibile.

**Soluzione**:

* Assicurati che il tuo server sia in esecuzione e che l'URL dell'endpoint sia corretto
* Controlla che le regole del firewall consentano le richieste HTTPS in entrata
* Verifica che l'endpoint funzioni con un semplice test curl

### Problemi SSL/TLS

**Problema**: Certificato SSL non valido o scaduto.

**Soluzione**: Assicurati che il tuo endpoint abbia un certificato SSL valido rilasciato da una CA affidabile.

## Codici di risposta sbagliati

### Restituzione di errori per elaborazioni riuscite

**Problema**: Restituzione di codici di stato non 2xx anche quando il webhook è stato elaborato con successo.

**Soluzione**: Restituisci sempre un codice di stato 2xx quando hai ricevuto e messo in coda con successo il webhook per l'elaborazione:

```javascript theme={null}
// CORRECT
app.post('/webhooks', (req, res) => {
  queue.add(req.body); // Add to queue for async processing
  res.status(200).send('OK'); // Acknowledge immediately
});
```

## Timeout

### L'elaborazione impiega troppo tempo

**Problema**: Il tuo endpoint impiega più di 15 secondi a rispondere.

**Soluzione**: Elabora i webhook in modo asincrono:

```javascript theme={null}
app.post('/webhooks', async (req, res) => {
  // Don't do this - blocks the response
  // await processOrder(req.body);
  
  // Do this instead - queue for background processing
  await queue.add('process-webhook', req.body);
  res.status(200).send('OK');
});
```

## Recupero dai fallimenti

### Riattivare un endpoint disabilitato

Se il tuo endpoint è stato disabilitato dopo fallimenti consecutivi:

1. Correggi il problema alla radice
2. Vai in **Settings > Webhooks** nella dashboard
3. Clicca **Enable Endpoint** sull'endpoint disabilitato

### Rieseguire messaggi falliti

Per recuperare i webhook persi dopo un'interruzione:

1. Vai ai dettagli del tuo endpoint
2. Clicca **Options > Recover Failed Messages**
3. Seleziona l'intervallo di tempo da rieseguire

<Info>
  Controlla i log dei webhook nella tua dashboard per messaggi di errore dettagliati e codici di risposta dal tuo endpoint.
</Info>


## Related topics

- [Zone di consegna](/docs/it/guides/fulfillment/delivery/delivery-zones.md)
- [Stati degli ordini](/docs/it/guides/orders/order-statuses.md)
- [Consegna nei pub](/docs/it/guides/use-cases/pub-delivery.md)
- [Tracciamento eventi](/docs/it/privacy-security/event-tracking.md)
- [Gestire gli ordini live](/docs/it/guides/orders/managing-live-orders.md)
