Resell Scan
Guide für Entwickler

Webhooks einrichten und nutzen

Lass dein System automatisch reagieren, wenn eine Batch-Analyse abgeschlossen ist. Resell Scan sendet signierte POST-Requests an deine Webhook-URL.

Dauer: ca. 12 Min.Schwierigkeit: EntwicklerZuletzt aktualisiert: 15. Mai 2025

Aktuelles Event: analysis.completed

Webhooks werden ausgelöst, wenn ein kompletter Batch fertig ist. Dein Endpoint erhält Batch-ID, Sammlungs-ID, Status, Produktzahlen und Detailergebnisse pro Produkt.

1

Eigenen Endpoint vorbereiten

Stelle eine öffentlich erreichbare HTTPS-URL bereit, die POST-Requests mit JSON akzeptiert.

Minimaler Next.js Route Handlerts
import { NextRequest, NextResponse } from 'next/server';

export async function POST(request: NextRequest) {
  const signature = request.headers.get('x-webhook-signature');
  const payload = await request.text();

  // Signatur vor der Verarbeitung prüfen.
  // Danach payload per JSON.parse(payload) verarbeiten.

  return NextResponse.json({ received: true });
}
Die URL muss von Resell Scan erreichbar sein.
Der Endpoint erhält POST-Requests mit Content-Type application/json.
Die Verarbeitung sollte idempotent sein, weil Retries möglich sind.
Speichere empfangene Event-IDs, wenn du doppelte Verarbeitung vermeiden willst.
2

Webhook im Dashboard erstellen

Öffne „Entwickler“ -> „Webhooks“, klicke auf „Webhook hinzufügen“ und trage URL, Beschreibung und Event ein.

Webhook URL

Dein HTTPS-Endpoint, z. B. https://example.com/webhooks/resell-scan.

Beschreibung

Optionaler Text, damit du später erkennst, wofür der Webhook genutzt wird.

Ereignis

Aktuell verfügbar: analysis.completed, also „Analyse abgeschlossen“.

Aktiv

Beim Bearbeiten kannst du einen Webhook aktiv oder inaktiv setzen.

Secret nur einmal sichtbar

Nach dem Erstellen zeigt Resell Scan ein Secret mit Prefix whsec_ an. Dieses Secret brauchst du für die HMAC-Prüfung und kannst es später nicht erneut vollständig anzeigen.
3

Payload verstehen

Das Event enthält eine ID, den Eventnamen, einen Zeitstempel und die Batch-Daten.

Beispiel-Payloadjson
{
  "id": "evt_550e8400-e29b-41d4-a716-446655440000",
  "event": "analysis.completed",
  "created_at": "2026-05-25T10:30:00.000Z",
  "data": {
    "batch_id": "550e8400-e29b-41d4-a716-446655440001",
    "collection_id": "550e8400-e29b-41d4-a716-446655440002",
    "status": "completed",
    "total_products": 10,
    "successful_products": 9,
    "failed_products": 1,
    "success_rate": 90,
    "started_at": "2026-05-25T10:00:00.000Z",
    "completed_at": "2026-05-25T10:30:00.000Z",
    "products": [
      {
        "product_id": "550e8400-e29b-41d4-a716-446655440003",
        "product_data": {},
        "status": "completed",
        "progress": 100,
        "result": {},
        "error": null
      }
    ]
  }
}

Batch statt Einzelprodukt

Das Event kommt, wenn der gesamte Batch abgeschlossen oder fehlgeschlagen ist. Einzelne Produktdetails findest du im products-Array.
4

X-Webhook-Signature prüfen

Resell Scan signiert den Body mit HMAC-SHA256. Der Header hat das Format t=[timestamp],v1=[signature].

Signatur prüfents
import crypto from 'crypto';

function verifyWebhookSignature(payload: string, header: string, secret: string) {
  const parts = Object.fromEntries(
    header.split(',').map((part) => {
      const [key, value] = part.split('=');
      return [key, value];
    })
  );

  const signedPayload = `${parts.t}.${payload}`;
  const expected = crypto
    .createHmac('sha256', secret)
    .update(signedPayload)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(parts.v1)
  );
}

Raw Body verwenden

Prüfe die Signatur gegen den unveränderten Request-Body. Wenn du JSON vorher neu serialisierst, kann die Signatur wegen anderer Leerzeichen oder Reihenfolge fehlschlagen.
5

Logs und Retries kontrollieren

In der Webhook-Liste kannst du Webhooks bearbeiten, löschen und Logs anzeigen.

Resell Scan protokolliert Statuscode, Antworttext, Erfolg und Versuchszahl.
Fehlgeschlagene Zustellungen werden bis zu 5 Mal wiederholt.
Retries nutzen exponentielle Verzögerung.
Der Dispatch hat ein Timeout von 10 Sekunden pro Request.

Schnell antworten

Sende nach erfolgreicher Validierung möglichst schnell eine 2xx-Antwort und schiebe längere Verarbeitung in eine Queue. So reduzierst du Timeouts und unnötige Wiederholungen.

Am Ende dieses Guides kannst du:

einen Webhook-Endpunkt vorbereitenanalysis.completed abonnierendas Webhook-Secret sicher speichernPayloads korrekt interpretierenX-Webhook-Signature prüfenLogs und Wiederholungen auswerten
Webhooks öffnen