Aller au contenu principal
Version: 2.1

Gestion des erreurs

Codes de réponse

CodeDescriptionAction ComptAppart
200-299SuccèsNotification complétée
400-499Erreur clientPas de retry, alerte envoyée
500-599Erreur serveurRetry automatique (3 tentatives)
TimeoutPas de réponse en 10sRetry automatique

Politique de retry

En cas d'échec (5xx ou timeout) :

TentativeDélai
Tentative 1Immédiate
Tentative 2Après 5 minutes
Tentative 3Après 30 minutes

Après 3 échecs : notification marquée comme définitivement échouée.


Erreurs courantes

Erreur 401 - API Key invalide

const apiKey = req.headers['x-api-key'];
if (apiKey !== process.env.COMPTAPPART_API_KEY) {
return res.status(401).json({ error: 'Unauthorized' });
}

Erreur 400 - Payload invalide

const { event_type, order_id, customer, order, invoice } = req.body;
if (!event_type || !order_id || !customer || !order || !invoice) {
return res.status(400).json({ error: 'Missing required fields' });
}

Erreur 500 - Exception non gérée

app.post('/api/comptappart/orders', async (req, res) => {
try {
await processOrder(req.body);
res.status(200).json({ success: true });
} catch (error) {
logger.error('Webhook error', { error: error.message, order_id: req.body.order_id });
res.status(500).json({ error: 'Internal Server Error' });
}
});

Timeout (> 10s)

Solution : Traitement asynchrone

app.post('/api/comptappart/orders', async (req, res) => {
// Valider rapidement
validatePayload(req.body);

// Ajouter à une queue
await queue.add('process-order', req.body);

// Répondre immédiatement
res.status(200).json({ success: true });
});

Monitoring

Métriques à surveiller :

  • Taux de succès des webhooks
  • Temps de réponse moyen
  • Taux d'erreur par type
  • Nombre de retries

Logs recommandés :

logger.info('Webhook received', {
order_id: req.body.order_id,
event_type: req.body.event_type
});

logger.error('Webhook failed', {
order_id: req.body.order_id,
error: error.message
});

Support

Informations à fournir

En cas d'incident, communiquez-nous :

  • Order ID ou Event ID
  • Timestamp de l'événement
  • Logs de votre endpoint
  • Code d'erreur retourné
  • Environnement (staging/production)

Contact