Webhook-Signaturverifizierung und Idempotenz

Überprüfen Sie 6MM Agent-Webhooks mit dem Rohanfrage-Body und verarbeiten Sie Wiederholungen, Zeitabwürfe und wiederholte Ereignisse ohne doppelte Geschäftsaktionen.

Als Markdown anzeigen

Webhooks benachrichtigen ein Partner-Backend über asynchrone Änderungen des Geschäftszustands. Da die Zustellung erneut versucht werden kann, muss jeder Empfänger die Signatur vor der Analyse vertrauenswürdiger Daten überprüfen und das Ereignis idempotent verarbeiten.

Webhook-Header

HeaderBeschreibung
X-Agent-ZeitstempelUnix-Zeitstempel in Sekunden.
X-Agent-NonceWiederholungsschutz-Nonce.
X-Agent-SignaturHMAC–SHA256 Unterschrift.
timestamp + nonce + rawBody

Verwenden Sie beim Rekonstruieren des signierten Werts genau den rohen Request-Body, der über HTTP erhalten wurde. Das Parsen und Neuserialisieren JSON zuerst kann den Leerraum oder die Feldreihenfolge verändern und eine andere Signatur erzeugen.

Verifikationsfluss

  1. Lesen Sie die Zeitstempel-, Nonce- und Signatur-Header.
  2. Erfassen Sie den unveränderten rohen Request-Körper.
  3. Baue timestamp + nonce + rawBody.
  4. Berechnen Sie HMAC–SHA256 mit dem Partner API Geheimnis.
  5. Vergleichen Sie die berechneten und empfangenen Signaturen mit einem konstanten Zeitvergleich.
  6. Wenden Sie die genehmigten Zeitstempel-Frische- und Nonce-Wiederverwendungsprüfungen an.
  7. Erst nach erfolgreicher Verifikation das Ereignis analysieren und verarbeiten.

Wenn ein offizieller Agent SDK -Verifizierer verfügbar ist, verwenden Sie ihn, anstatt einen unabhängigen Unterzeichnungscode zu führen.

Orderidopotenz

FallHandhabung
Erster ÜbertragungsantragSchaffen Sie ein weltweit einzigartiges agentOrderNo.
HTTP AuszeitFragen Sie die ursprüngliche agentOrderNo ab, bevor Sie eine neue erstellen.
PROCESSING AntwortWarte auf den Status der Webhook- oder Abfragereihenfolge.
Wiederholter WebhookDeduplizieren Sie nach Idempotenzschlüssel und Endstatus.

Speichern Sie genügend Informationen, um eine wiederholte Lieferung zu erkennen und sicher zurückzugewinnen:

SpielfeldZweck
Ereignis- oder GeschäftsschlüsselIdentifiziert eindeutig die Benachrichtigung oder Operation.
PartnerOrdersnummerVerbindet das Ereignis mit der ursprünglichen Anfrage.
Payload-HashHilft, widersprüchliche wiederholte Nutzlasten zu identifizieren.
Aktueller VerarbeitungszustandUnterscheidet empfangene, verarbeitete, erfolgreiche und fehlgeschlagene Arbeiten.
Endgültiger GeschäftsstatusVerhindert, dass eine terminale Aktion zweimal angewendet wird.
BearbeitungszeitstempelUnterstützt Richtlinien zur Untersuchung und Verwertung.

Beziehen Sie die Geschäftsänderung und die Impotenzdatensatz, wo möglich, in derselben Transaktion ein. Ein wiederholtes Ereignis sollte das bereits bekannte Ergebnis zurückgeben, anstatt die Bilanz, Reihenfolge oder Benutzeränderung erneut anzuwenden.

Auszeit- und Wiederholungsregel

Ein HTTP Timeout beweist nicht, dass die ursprüngliche Anfrage fehlgeschlagen ist. Abfrage der Operation mit dem ursprünglichen agentOrderNooder warten Sie auf den Webhook, bevor Sie entscheiden, ob eine weitere Aktion erforderlich ist. Das Erstellen einer neuen GeschäftsOrdersnummer nach jedem Timeout kann zu doppelten Kapitalbewegungen führen.

Produktionscheckliste

  • Verifizieren Sie die Signatur vor JSON Parsing oder Geschäftsverarbeitung.
  • Erhalte den rohen Körper unabhängig von der geanalysten Nutzlast.
  • Veraltete oder wiederholte Anfragen gemäß der genehmigten Integrationsrichtlinie ablehnen.
  • Ereignisverarbeitung für wiederholte und nicht in der Reihenfolge zugeteilte Zustellung sicher zu machen.
  • Protokolliere Ereignis-IDs, Partnerbefehlsnummern, Verarbeitungsergebnis und Anforderungszeit.
  • Geheimnisse und Signaturwerte aus Protokollen und Support-Anhängen zu schwärzen.