Webhook-uri

flowSCMC trimite POST JSON către URL-ul dvs. când apar evenimente. Cookbook: HMAC, retry, 4xx/5xx.

Configurare în aplicație

Autentificați-vă → Administrare → Webhook-uri: creați un webhook cu URL HTTPS și evenimentele dorite.

Format cerere

{
  "event": "article.created",
  "timestamp": "2026-02-12T14:30:00+00:00",
  "data": { }
}

Tipuri autentificare

TipDescriere
noneFără autentificare pe request-ul outbound
hmacHeader X-Webhook-Signature = HMAC-SHA256 al corpului JSON
bearerAuthorization: Bearer <token>
basicAuthorization: Basic …
customHeader personalizat (nume + valoare)

Verificați semnătura HMAC pe serverul dvs. înainte de a procesa evenimentul. Retry-urile și dead-letter sunt gestionate în aplicație (Administrare → Webhook-uri → livrări).

Evenimente

Gestionare abonamente REST:

GET/api/webhooks
POST/api/webhooks
PUT/api/webhooks/{id}
DELETE/api/webhooks/{id}

Cookbook: integrare end-to-end

  1. În aplicație: Administrare → Webhook-uri → creați URL HTTPS + evenimente (ex. sales_order.created).
  2. Setați autentificare hmac (sau signing secret) - primiți header X-Webhook-Signature: sha256=….
  3. Endpoint-ul dvs. citește corpul brut, verifică semnătura, apoi răspunde 2xx rapid (< câteva secunde).
  4. Procesați asincron (coadă) după ACK - nu blocați HTTP-ul pe ERP lent.
  5. Testați din playground-ul de mai jos sau din Administrare → Test / livrări.

Verificare HMAC

Semnătura = HMAC-SHA256 pe corpul JSON exact (byte-cu-byte), prefix sha256=. Secretul e cel configurat pe webhook.

# PHP
$raw = file_get_contents('php://input');
$sig = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $raw, $secret);
if (!hash_equals($expected, $sig)) { http_response_code(401); exit; }
// Node.js
const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig))) {
  return res.status(401).end();
}

Retry, timeout, erori

ParametruImplicitSemnificație
Încercări5Livrări înainte de eșec final
Backoff30s, 2min, 8min, 32minPauze între retry-uri
Timeout HTTP10sTimp maxim de așteptare răspuns
Bune practici. Idempotență pe event + id din data; logați X-Webhook-Event; doar HTTPS.

Playground webhook

Generați un payload de test și trimiteți-l la URL-ul dvs. (doar HTTPS; limită pe server).

Integrările de intrare partenere (eTSM, MDM) folosesc un token Bearer dedicat - vezi documentația eTSM.