> ## 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.

# Dépannage des webhooks

> Diagnostiquez et corrigez les problèmes courants liés aux webhooks, notamment les échecs de vérification de signature, les mauvais secrets, les événements manquants et les timeouts d'endpoint dans storekit.

Voici les problèmes courants liés aux webhooks et comment les résoudre.

## Échec de la vérification de signature

### Non-utilisation du corps de payload brut

**Problème** : Lors de la génération de la signature, nous utilisons le corps sous forme de chaîne brute du payload du message. Si vous parsez le JSON puis le stringifiez à nouveau, la signature ne correspondra pas.

**Solution** : Utilisez toujours le corps brut de la requête exactement tel qu'il a été reçu :

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

### Mauvaise clé secrète

**Problème** : Utilisation du mauvais secret webhook ou décodage incorrect.

**Solution** :

* Assurez-vous d'utiliser le secret correct pour chaque endpoint (les secrets sont uniques par endpoint)
* Supprimez le préfixe `whsec_` avant le décodage base64

### Horodatage expiré

**Problème** : L'horloge de votre serveur est désynchronisée, ce qui entraîne le rejet de webhooks pourtant valides.

**Solution** : Assurez-vous que l'heure de votre serveur est synchronisée via NTP.

## Webhooks non reçus

### Endpoint inaccessible

**Problème** : Votre endpoint n'est pas accessible publiquement.

**Solution** :

* Assurez-vous que votre serveur est en cours d'exécution et que l'URL de l'endpoint est correcte
* Vérifiez que les règles de pare-feu autorisent les requêtes HTTPS entrantes
* Vérifiez que l'endpoint fonctionne avec un simple test curl

### Problèmes SSL/TLS

**Problème** : Certificat SSL invalide ou expiré.

**Solution** : Assurez-vous que votre endpoint dispose d'un certificat SSL valide émis par une autorité de certification (CA) de confiance.

## Codes de réponse incorrects

### Renvoyer des erreurs pour des traitements réussis

**Problème** : Vous renvoyez des codes de statut différents de 2xx même lorsque le webhook a été traité avec succès.

**Solution** : Renvoyez toujours un code de statut 2xx lorsque vous avez bien reçu et mis en file d'attente le webhook pour traitement :

```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
});
```

## Timeouts

### Le traitement prend trop de temps

**Problème** : Votre endpoint met plus de 15 secondes à répondre.

**Solution** : Traitez les webhooks de manière asynchrone :

```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');
});
```

## Récupération après échec

### Réactiver un endpoint désactivé

Si votre endpoint a été désactivé après plusieurs échecs consécutifs :

1. Corrigez le problème sous-jacent
2. Allez dans **Settings > Webhooks** dans le tableau de bord
3. Cliquez sur **Enable Endpoint** sur l'endpoint désactivé

### Rejouer les messages échoués

Pour récupérer les webhooks manqués après une panne :

1. Accédez aux détails de votre endpoint
2. Cliquez sur **Options > Recover Failed Messages**
3. Sélectionnez la plage horaire à rejouer

<Info>
  Consultez les logs de webhook dans votre tableau de bord pour obtenir des messages d'erreur détaillés et les codes de réponse renvoyés par votre endpoint.
</Info>


## Related topics

- [Aperçu des webhooks](/docs/fr/developers/webhooks/overview.md)
- [Dispatch et optimisation d'itinéraires Shipday](/docs/fr/guides/integrations/delivery/shipday.md)
- [Dépannage POS](/docs/fr/guides/integrations/pos/advanced/troubleshooting.md)
- [Introduction pour les développeurs](/docs/fr/developers/introduction.md)
- [Suivi des événements](/docs/fr/privacy-security/event-tracking.md)
