Valider un webhook entrant
ShopiMind signe ses webhooks. Le SDK fournit SpmRequestValidator pour vérifier l'authenticité d'une requête entrante (signature HMAC) avant de la traiter.
javascript
const { SpmRequestValidator } = require('@shopimind/sdk-shopimind');
const validation = SpmRequestValidator.validateRequest({
clientId: req.headers['shopimind-client-identifiant'],
hmacToken: req.headers['shopimind-token'],
body: req.body,
apiIdentification: config.apiIdentification,
apiPassword: config.apiPassword,
});
if (!validation.valid) {
return res.status(401).json({ error: validation.error });
}
// La requête est authentique — traitez le payload en confianceExemple Express complet
javascript
const express = require('express');
const { SpmRequestValidator } = require('@shopimind/sdk-shopimind');
const app = express();
app.use(express.json());
app.post('/webhooks/shopimind', (req, res) => {
const validation = SpmRequestValidator.validateRequest({
clientId: req.headers['shopimind-client-identifiant'],
hmacToken: req.headers['shopimind-token'],
body: req.body,
apiIdentification: process.env.SPM_API_IDENTIFICATION,
apiPassword: process.env.SPM_API_PASSWORD,
});
if (!validation.valid) {
return res.status(401).json({ error: validation.error });
}
// … votre logique métier
res.status(200).json({ received: true });
});Vérifiez avant de traiter
Validez toujours la signature avant d'agir sur le contenu d'un webhook. Une requête non signée ou mal signée doit être rejetée avec un 401.
Body brut
Selon votre framework, assurez-vous que le body passé au validateur correspond exactement à la charge utile reçue (mêmes clés, même contenu) pour que le calcul HMAC concorde.