04Webhooks
Ereignisse in Echtzeit
Rumpf: { id, ereignis, version: "v1", erstellt_am, betrieb_id, test, daten }. Die id ist je Zustellung eindeutig – nutze sie, um Doppelte zu erkennen.
anfrage.neuNeue Anfrage eingegangen
angebot.gesendetAngebot an den Kunden gesendet
angebot.angenommenKunde hat ein Angebot angenommen
buchung.bestaetigtBuchung bestätigt
buchung.abgesagtBuchung abgesagt
zahlung.eingegangenZahlung über simplyEvent eingegangen
ticket.verkauftTicketbestellung zu einem eigenen Event bezahlt
bewertung.neuNeue veröffentlichte Bewertung
kontakt.neu · baldNeuer Kontakt in der Kundenkartei
rechnung.ausgestellt · baldRechnung ausgestellt
vertrag.unterschrieben · baldVertrag unterschrieben
// Node.js – Signatur eines Webhooks prüfen
import crypto from "node:crypto";
function echt(rumpf, kopfzeile, geheimnis) {
const teile = Object.fromEntries(kopfzeile.split(",").map((t) => t.split("=")));
if (Math.abs(Date.now() / 1000 - Number(teile.t)) > 300) return false;
const soll = crypto.createHmac("sha256", geheimnis).update(`${teile.t}.${rumpf}`).digest("hex");
return crypto.timingSafeEqual(Buffer.from(soll), Buffer.from(teile.v1 ?? ""));
}
// rumpf = der unveränderte Text der Anfrage, kopfzeile = X-SimplyEvent-Signatur