Webhooks empfangen und Signatur prüfen
Lektion 4 von 5 · ca. 3 Min.
Bei jedem echten Statuswechsel schickt dmp druckraum ein Ereignis status_changed an Ihre Webhook-URL — in der richtigen Reihenfolge je Auftrag.
Schritt für Schritt
- Nehmen Sie POST-Anfragen an Ihrer Webhook-URL an und lesen Sie den rohen Body.
- Prüfen Sie x-druck-s-timestamp (höchstens 5 Minuten alt) und x-druck-s-signature (v1=HMAC-SHA256(secret, timestamp + "." + body)).
- Entdoppeln Sie über x-druck-s-delivery.
- Antworten Sie mit 2xx. Andere Antworten werden mit Backoff bis zu 10-mal wiederholt; 400, 410 und 422 gelten als endgültig.
Beispiel-Ereignis
{"event":"status_changed","partnerRef":"bestellung-2026-0042","number":"091126-004",
"status":"SHIPPED","occurredAt":"2026-11-09T10:00:00.000Z",
"trackingNumber":"00340434…","specialDeliveryDate":null}Signatur prüfen (Node.js)
import { createHmac, timingSafeEqual } from "node:crypto";
function valid(secret, rawBody, ts, sig) {
if (!/^\d{9,11}$/.test(ts ?? "") || Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = Buffer.from(`v1=${createHmac("sha256", secret).update(`${ts}.${rawBody}`).digest("hex")}`);
const got = Buffer.from(sig ?? "");
return expected.length === got.length && timingSafeEqual(expected, got);
}