Webhooks

Modtag realtidsbeskeder om hændelser i dit system

Hvad er Webhooks?

Webhooks er HTTP callbacks der giver dig mulighed for at modtage realtidsbeskeder når specifikke hændelser sker i dit Connect2Print system.

Fordele ved Webhooks:

Hvordan Webhooks Virker

1
Registrér: Du opretter en webhook i Connect2Print admin-panelet og angiver din endpoint URL
2
Hændelse sker: En hændelse sker i systemet (f.eks. en ordre oprettes)
3
HTTP POST: Connect2Print sender en HTTP POST anmodning til din endpoint med event data
4
Validér: Din server validerer webhook signaturen
5
Behandl: Din server behandler event data
6
Svar: Din server svarer med status 200 for at bekræfte modtagelse

Tilgængelige Events

Connect2Print sender webhooks for følgende hændelser:

Order Events

Modtag beskeder om ordreændringer:

  • order.created - En ny ordre er blevet oprettet
  • order.updated - En ordre er blevet opdateret
  • order.completed - En ordre er blevet færdiggjort
  • order.cancelled - En ordre er blevet annulleret
  • order.shipped - En ordre er blevet afsendt

Invoice Events

  • invoice.created - En ny faktura er blevet oprettet
  • invoice.sent - En faktura er blevet sendt
  • invoice.paid - En faktura er blevet betalt

Quote Events

  • quote.created - Et nyt tilbud er blevet oprettet
  • quote.accepted - Et tilbud er blevet accepteret
  • quote.rejected - Et tilbud er blevet afvist

Production Events

  • production.job.created - Et nyt produktionsjob er oprettet
  • production.job.completed - Et produktionsjob er færdigt

Other Events

  • customer.created - En ny kunde er oprettet
  • shipment.delivered - En forsendelse er blevet leveret
  • stock.low - Lagerbeholdning er lav

Oprettelse af Webhooks

Opret og konfigurer webhooks fra admin-panelet:

  1. Log ind på Connect2Print admin-panelet
  2. Naviger til Indstillinger → Webhooks
  3. Klik på "Opret ny Webhook"
  4. Konfigurer webhook:
    • URL: Din endpoint URL (HTTPS krævet)
    • Events: Vælg hvilke events du vil modtage
    • Secret: Genereres automatisk til signatur validering
    • Aktiv: Aktiver/deaktiver webhook
  5. Klik "Gem" og kopier din webhook secret

Gem webhook secret sikkert - den bruges til at validere webhook signaturer.

Webhook Payloads

Alle webhooks sender data i følgende format:

Payload Struktur

Payload Felter:

Eksempel: order.created Event

{
  "id": "wh_1a2b3c4d5e6f",
  "event": "order.created",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "order": {
      "id": 123,
      "order_number": "ORD-2024-001",
      "status": "pending",
      "total": 499.00,
      "customer": {
        "id": 456,
        "email": "customer@example.com"
      }
    }
  }
}

Signatur Validering

Alle webhooks inkluderer en X-Webhook-Signature header som du SKAL validere for at sikre at anmodningen kommer fra Connect2Print.

Sådan Valideres Signaturen

  1. Hent signatur headeren: X-Webhook-Signature
  2. Hent raw request body (JSON string)
  3. Beregn HMAC-SHA256 hash af body med din webhook secret
  4. Sammenlign den beregnede hash med signatur headeren

Validerings Eksempler

// PHP
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'];
$body = file_get_contents('php://input');
$secret = 'your_webhook_secret';

$calculated = hash_hmac('sha256', $body, $secret);

if (!hash_equals($signature, $calculated)) {
    http_response_code(401);
    die('Invalid signature');
}

// Signature is valid, process the webhook
$data = json_decode($body, true);
// Node.js
const crypto = require('crypto');

function validateWebhook(body, signature, secret) {
  const calculated = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(calculated)
  );
}
# Python
import hmac
import hashlib

def validate_webhook(body, signature, secret):
    calculated = hmac.new(
        secret.encode(),
        body.encode(),
        hashlib.sha256
    ).hexdigest()

    return hmac.compare_digest(signature, calculated)

Håndtering af Webhooks

Bedste praksis for at håndtere webhooks:

Svar hurtigt med 200

Svar med HTTP 200 status med det samme. Behandl event data asynkront i baggrunden.

Validér altid signaturen

Stol aldrig på data uden at validere webhook signaturen først.

Håndter duplikater

Samme event kan sendes flere gange. Brug event id til at deduplicere.

Ingen garanteret rækkefølge

Webhooks sendes ikke nødvendigvis i kronologisk rækkefølge. Brug timestamp til at sortere.

Implementér timeout

Din endpoint skal svare indenfor 10 sekunder, ellers tælles det som en fejl.

Log webhook data

Log indkommende webhooks til debugging og audit trail.

Retries og Fejlhåndtering

Hvis din endpoint fejler eller ikke svarer, genprøver Connect2Print automatisk:

Retry Schedule:

Du kan se webhook delivery status og retry history i admin-panelet.

Test Webhooks

Test dine webhooks før produktionsopsætning:

Brug Test Endpoint

Brug et værktøj som webhook.site til at inspicere webhook payloads.

Manuelt Test Event

Brug "Send Test Event" funktionen i admin-panelet til at sende et eksempel payload.

Lokal Test

Brug ngrok til at eksponere din lokale server til webhook leveringer.

Test via API

Send en test webhook programmisk:

POST /api/v1/webhooks/{id}/test
Authorization: Bearer YOUR_API_KEY

// Example response
{
  "success": true,
  "message": "Test webhook sent"
}

Næste Trin

Nu hvor du forstår webhooks, udforsk relaterede emner:

Autentificering

Lær hvordan webhook secrets bruges til signatur validering

Autentificering

Fejlhåndtering

Håndter webhook fejl og retries effektivt

Fejlhåndtering

API Reference

Se alle tilgængelige webhook events og deres payloads

API Reference

Kodeeksempler

Kopier-og-indsæt webhook handlers i forskellige sprog

Kodeeksempler