Ereignisse & Synchronisierung

Webhooks & Benachrichtigungen

Organisieren Sie den Empfang von Statusänderungen und verbinden Sie Zahlungen mit Ihren eigenen Systemen, ohne auf ständiges Polling angewiesen zu sein.

EndpunktHTTPS
MusterAsynchron
ZielStatus synchronisieren

So funktioniert es

Richten Sie eine HTTPS-Benachrichtigungs-URL ein, damit Ihre Anwendung relevante Änderungen im Betrieb erhält. Der Webhook sollte den internen Status der entsprechenden Bestellung, Zahlung oder des Prozesses speisen.

Aktuelle Konfiguration. Die URL wird unter Einstellungen → Online-Transaktionen festgelegt. Nur HTTPS wird akzeptiert. Bei einem fehlgeschlagenen Request oder einer Antwort ungleich 200 nennt die aktuelle Dokumentation 3 weitere Versuche.

Empfohlener Ablauf

01 · IOPAYStatus ändert sich.

Eine Transaktion oder ein relevantes Ereignis entwickelt sich in der Verarbeitung weiter.

02 · EndpunktIhr Webhook empfängt.

Die Anwendung empfängt den Payload am konfigurierten HTTPS-Endpunkt.

03 · PersistenzEreignis erfassen.

Speichern Sie Kennungen und ausreichend Inhalt für die Nachverfolgbarkeit.

04 · DomäneSysteme aktualisieren.

Bestellung, ERP, OMS, Finanzen und Automatisierungen folgen dem neuen Status.

Struktur der Benachrichtigung

Transaktionsereignisse enthalten Transaktionskennung, Ereignistyp, Status, Referenz des Vorgangs, Seller und Signatur der Benachrichtigung.

Beispiel · transaction.succeeded
{
  "id": "8774b47d26d54a0b9138cde9d8cc421f",
  "type": "transaction.succeeded",
  "status": "succeeded",
  "reference_id": "order_102938",
  "io_seller_id": "<IO_SELLER_ID>",
  "sign_confirm": "iopay::<SIGNATURE>"
}
Ereignisse. Zu den Transaktionsereignissen gehören transaction.created, transaction.pending, transaction.succeeded, transaction.failed, transaction.disputed und transaction.void.succeeded.

Implementierung

Konzeptbeispiel · Laravel
Route::post('/webhooks/iopay', function (Request $request) {
    $payload = $request->all();

    // Identificador da transação
    $transactionId = $payload['id'] ?? null;

    // Ex.: transaction.succeeded
    $eventType = $payload['type'] ?? null;

    // Ex.: succeeded
    $status = $payload['status'] ?? null;

    // Referência enviada na criação da transação
    $referenceId = $payload['reference_id'] ?? null;

    // 1. valide sign_confirm conforme o contrato vigente
    // 2. garanta idempotência antes de aplicar efeitos
    // 3. persista o evento para rastreabilidade
    // 4. processe operações pesadas de forma assíncrona
    ProcessIopayWebhook::dispatch($payload);

    return response()->json(['received' => true], 200);
});
Wichtig. Das Beispiel ist architektonisch. Die Validierung von sign_confirm muss dem aktuellen Integrationsvertrag folgen, bevor das Ereignis als vertrauenswürdig gilt.

Idempotenz und Robustheit

Idempotenz

Nicht doppelt verarbeiten.

Webhooks können erneut gesendet werden. Stellen Sie sicher, dass dasselbe Ereignis in Ihrer Anwendung keine doppelten Effekte erzeugt.

Reaktion

Schnelle Bestätigung.

Vermeiden Sie lange Vorgänge, bevor Sie dem Webhook HTTP 200 zurückgeben.

Reihenfolge

Aktuellen Status prüfen.

Verlassen Sie sich nicht nur auf die Eingangsreihenfolge; vergleichen Sie das Ereignis mit dem bekannten Status.

Observability

Verlauf speichern.

Erfassen Sie Empfang, Verarbeitung, Fehler und Zuordnung zu Bestellung/Transaktion.

Checkliste

  • HTTPS-URL konfiguriert und von außen erreichbar.
  • Kurzer Timeout und rechenintensive Verarbeitung in einer Warteschlange.
  • Validierung von sign_confirm.
  • Idempotenz zur Vermeidung doppelter Effekte.
  • Logs mit id, type, reference_id und io_seller_id.
  • Warnungen bei wiederholten Verarbeitungsfehlern.
  • Abstimmungsroutine per API-Abfrage für Ausnahmefälle.