Ereigniskatalog
Ereignisse auf Entitätsebene (
user.status.updated, business.status.updated) können ebenfalls als Folge von Transaktionsaktivität ausgelöst werden. Siehe dazu Entitäts-Webhooks.
Sandbox-Anwendungen senden keine
transaction.created- oder transaction.status.updated-Webhooks. Um diese Ereignisse zu testen, verwenden Sie eine Live-Anwendung oder API & Webhooks → Try Webhook in der Konsole. Travel-Rule-Austauschvorgänge in der Sandbox senden travel_rule.status.updated-Webhooks mit environment: sandbox. Testen Sie einen Austausch vor dem Go-live mit dem Didit Test VASP.Umschlag
Didit-Webhooks verwenden einen flachen Body: Die Ereignisfelder stehen auf oberster Ebene neben den Envelope-Feldern. Es gibt kein verschachteltesdata-Objekt.
Jede Zustellung enthält:
Payload-Strukturen
transaction.created und transaction.status.updated
Beide Ereignisse enthalten denselben Payload: eine kompakte Zusammenfassung plus den Block action_required (oder null):
GET /v3/transactions/{transaction_id}/ ab. Dieser Aufruf liefert alle Details (Parteien, rule_runs, provider_results, travel_rule, cost_breakdown, decision_reason_code), einschließlich der Begründung, warum sich der Status geändert hat.
transaction_rule_suggestions.created
Dieses Ereignis betrifft Ihren Regelsatz und nicht eine einzelne Transaktion. Deshalb enthält es keine Transaktions-ID.
Es enthält niemals personenbezogene Daten, nur Vorschlags-IDs, Arten, Titel und Anzahlen.
Die üblichen Envelope-Felder (
event_id, timestamp, application_id, environment) werden dem Body hinzugefügt.
travel_rule.status.updated
FINISHED, CANCELLED oder EXPIRED. Sobald eine Überweisung einen dieser Zustände erreicht, werden keine weiteren Travel-Rule-Ereignisse mehr dafür gesendet.
Ein Ereignis kann den Status des vorherigen wiederholen, etwa wenn ein erneuter Versuch wieder keine Schiene findet und die Überweisung in COUNTERPARTY_VASP_NOT_FOUND bleibt.
rail ist INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL, TEST_VASP (eine Sandbox-Überweisung, auf die der Didit Test VASP geantwortet hat; sie enthält außerdem test_vasp: true und test_vasp_scenario) oder "", solange keine Schiene ausgewählt ist (bei Sunrise-Registrierungen immer "").
Bei der Anlage einer Transaktion, einer Sunrise-Registrierung, einer eingehenden TRP-Anfrage oder dem eingehenden Teil über die INTERNAL-Schiene sendet Didit zuerst transaction.created und danach die travel_rule.status.updated-Ereignisse der Transaktion.
Eine Regel, die in diesem Schritt den Status der Transaktion ändert, kann auch transaction.status.updated vor transaction.created senden.
Eine Sunrise-Registrierung, die an eine bereits von Ihnen angelegte Einzahlungstransaktion angehängt wird, sendet kein transaction.created.
Jeder Webhook wird einzeln zugestellt und einzeln wiederholt. Ein erneut zugestelltes Ereignis kann deshalb nach einem späteren Ereignis eintreffen. Verarbeiten Sie Ereignisse anhand von transaction_id und lesen Sie die Transaktion erneut aus, wenn Sie ihren aktuellen Stand benötigen.
Beispiele für Statusverläufe
Einfache Genehmigung
Prüfung, dann Genehmigung
Verifizierung mit erhöhter Sicherheitsstufe
Travel-Rule-Überweisung
transaction.created wird zuerst in die Warteschlange gestellt. Jeder Webhook wird einzeln zugestellt. Verlassen Sie sich deshalb nicht auf die Ankunftsreihenfolge.
Eine Überweisung über TRUST erhält nie ein COMPLETED-Ereignis, weil TRUST keine Antwort zurücksendet, die Didit auslesen kann. Sie verbleibt in AWAITING_COUNTERPARTY bis zur Bestätigungsfrist und endet dann in EXPIRED. Über GTR, VerifyVASP und Sygna Bridge liest Didit die Antwort der Gegenpartei aus dem Netzwerk aus, und das Ereignis folgt dieser Antwort.
Signaturprüfung
Jede Zustellung wird mit HMAC-SHA256 unter Verwendung des gemeinsamen Geheimnisses des Webhook-Ziels signiert. Sie enthält drei Signatur-Header und einen Zeitstempel:Wiederholungsversuche und Zustellungsgarantien
- Bei einem
5xx, einer404, einem Timeout oder einem Verbindungsfehler wiederholt Didit die Zustellung bis zu 2-mal: etwa 1 Minute nach dem ersten Fehler und danach noch einmal etwa 4 Minuten später. - Wiederholte Zustellungen verwenden dieselbe
event_id. Filtern Sie Duplikate in Ihrem Handler anhand dieser ID heraus. - Nach dem letzten Fehlschlag wird die Zustellung für dieses Ereignis eingestellt, und Ihre Organisation wird benachrichtigt. Webhook-Ziele werden niemals stillschweigend deaktiviert.
- Antworten Sie schnell mit einem
2xx(zuerst in die Warteschlange einreihen, dann verarbeiten). Langsame Bestätigungen bergen das Risiko von Timeouts und doppelten Zustellungen.
Idempotenz
Verarbeiten Sie jeden Webhook genau einmal, indem Sie dieevent_id in Ihrem eigenen Deduplizierungsspeicher ablegen. Eine erneute Zustellung desselben Ereignisses ist möglich, wenn Ihr Endpoint langsam bestätigt oder die Verbindung während der Anfrage abbricht.
Abonnieren
Nächste Schritte
Webhooks-Referenz
Webhook-Ziele, Signierung, Wiederholungsversuche.
Status
Vollständiger Zustandsautomat.
Integrationsleitfaden
Webhooks im Produktivbetrieb verarbeiten.