🎣 Webhooks
Erhalten Sie Echtzeit-Benachrichtigungen über Lizenzereignisse direkt auf Ihren Server.
🌐 Übersicht
Webhooks ermöglichen es Ihnen, HTTP-POST-Anfragen zu empfangen, wann immer bestimmte Ereignisse in Ihrem AlgoGuard-Konto auftreten:
- ✅ Lizenz erstellt
- 🔓 Lizenz aktiviert
- ❌ Verifizierung fehlgeschlagen
- 💳 Abonnement-Zahlung
⚙️ Einrichtung
1. Webhook-Endpoint erstellen
Navigieren Sie zu Einstellungen → Webhooks und klicken Sie auf "Endpoint erstellen":
- URL: Ihr Server-Endpoint (muss HTTPS sein) ODER eine Discord/Telegram Webhook-URL.
- Ereignisse: Wählen Sie aus, welche Ereignisse Sie empfangen möchten.
- Secret: Kopieren Sie das Webhook-Secret (wird zur Signaturüberprüfung verwendet).
💡 Cross-Platform Unterstützung: Wenn Sie eine Discord oder Telegram Webhook-URL eingeben, formatiert AlgoGuard den Payload automatisch, damit er auf diesen Plattformen perfekt aussieht (Embeds, Farben, etc.). Kein eigener Server erforderlich!
2. Receiver implementieren
Ihr Server muss innerhalb von 10 Sekunden mit HTTP 200-299 antworten.
Node.js/Express Beispiel
const express = require("express");
const crypto = require("crypto");
const app = express();
app.use(express.raw({ type: "application/json" }));
const WEBHOOK_SECRET = "whsec_ihr_secret_hier";
app.post("/webhooks/algoguard", (req, res) => {
const signature = req.headers["x-algoguard-signature"];
const timestamp = req.headers["x-algoguard-timestamp"];
const body = req.body.toString();
// 🔐 Signatur überprüfen
if (!verifySignature(body, timestamp, signature, WEBHOOK_SECRET)) {
return res.status(401).send("Ungültige Signatur");
}
const payload = JSON.parse(body);
console.log("🔔 Ereignis empfangen:", payload.event, payload.data);
// Ereignis verarbeiten
handleEvent(payload);
res.status(200).send("OK");
});
function verifySignature(body, timestamp, signature, secret) {
const unsigned = `${timestamp}.${body}`;
const expectedSignature =
"sha256=" + crypto.createHmac("sha256", secret).update(unsigned).digest("hex");
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature));
}
app.listen(3000);
PHP Beispiel
<?php
$webhookSecret = 'whsec_ihr_secret_hier';
$signature = $_SERVER['HTTP_X_ALGOGUARD_SIGNATURE'];
$timestamp = $_SERVER['HTTP_X_ALGOGUARD_TIMESTAMP'];
$body = file_get_contents('php://input');
// 🔐 Signatur überprüfen
$unsigned = $timestamp . '.' . $body;
$expectedSignature = 'sha256=' . hash_hmac('sha256', $unsigned, $webhookSecret);
if (!hash_equals($expectedSignature, $signature)) {
http_response_code(401);
exit('Ungültige Signatur');
}
$payload = json_decode($body, true);
error_log('🔔 Ereignis: ' . $payload['event']);
// Ereignis verarbeiten
handleEvent($payload);
http_response_code(200);
echo 'OK';
?>
📡 Ereignisse
license.created
Ausgelöst, wenn eine neue Lizenz erstellt wird.
{
"event": "license.created",
"data": {
"license": {
"id": "uuid",
"license_key": "AG-XXXX-XXXX-XXXX-XXXX",
"status": "active",
"expires_at": "2025-12-31T23:59:59Z"
}
}
}
verification.failed
Ausgelöst, wenn eine Lizenzverifizierung fehlschlägt.
{
"event": "verification.failed",
"data": {
"license_key": "AG-XXXX-XXXX-XXXX-XXXX",
"reason": "license_expired",
"ip_address": "203.0.113.42"
}
}
🔒 Sicherheit
Signaturüberprüfung
Überprüfen Sie immer die Webhook-Signatur, um sicherzustellen, dass die Anfragen von AlgoGuard stammen.
X-AlgoGuard-TimestampundX-AlgoGuard-SignatureHeader abrufen.- Unsignierten String erstellen:
{timestamp}.{raw_body}. - HMAC-SHA256 mit Webhook-Secret berechnen.
- Mit
sha256=präfigieren. - Mit timing-safe equals vergleichen.
Zeitstempel-Validierung
Lehnen Sie Webhooks ab, die älter als 5 Minuten sind, um Replay-Angriffe zu verhindern.
🔄 Wiederholungslogik
AlgoGuard versucht automatisch, fehlgeschlagene Webhook-Zustellungen erneut zu senden:
- Plan: Exponentieller Backoff (15s, 30s, 1m, ...).
- Max: 8 Versuche.
✅ Best Practices
- Schnell antworten: Sofort 200 OK zurückgeben, asynchron verarbeiten.
- Signatur überprüfen: Immer die Authentizität validieren.
- Idempotenz: Behandeln Sie Duplikate anhand der Ereignis-ID.
📞 Support
Benötigen Sie Hilfe? E-Mail an support@algoguard.dev