API

Webhooks

Ein Webhook ist eine HTTP-Anfrage, die FoodSoul an die Adresse Ihres Systems sendet, wenn in Ihrem Account ein Ereignis eintritt: eine neue Bestellung, eine Statusänderung, eine Bewertung und andere.

Das Abonnement mit Adresse und Ereignissen wird mit der Methode erstellt:

POST Webhook-Abonnement erstellen

Adresse — URL aus dem Abonnement, Methode — POST.

Format, Unterschrift und Wiederholungen

Anfragetext des Webhooks. Jede Anfrage ist ein POST mit Content-Type: application/json an die Abonnement-URL. Die URL muss mit https beginnen.
Header: X-Webhook-Event — Ereigniscode, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= und HMAC-SHA256 des ursprünglichen Anfragetexts im Hex-Format mit dem Filialgeheimnis (webhooks_subscriptions.generate_secret).
Überprüfen Sie die Signatur anhand des ursprünglichen Bodys vor dem Parsen von JSON: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). Es gibt keinen Zeitstempel in der Signatur, der Kanal ist durch HTTPS geschützt.
Die Zustellung gilt als akzeptiert bei jeder 2xx-Antwort innerhalb von 10 Sekunden. Redirects werden nicht ausgeführt. Andernfalls wird die Zustellung wiederholt: 7 Versuche, der erste sofort, dann nach 1, 5, 15, 60, 180 und 360 Minuten. Alle Versuche einer Zustellung enthalten denselben X-Webhook-ID. Eine erneute Zustellung aus dem Protokoll (webhooks_logs.resend) enthält denselben X-Webhook-ID — überspringen Sie bereits verarbeitete Zustellungen anhand dieser ID.
20 aufeinanderfolgende fehlgeschlagene Zustellungen deaktivieren das Abonnement (blocked), und der Inhaber sowie der Systemadministrator des Accounts erhalten eine E-Mail. webhooks_subscriptions.unblock aktiviert das Abonnement erneut.
Der Body enthält die Eventdaten: Kunde, Bewertung und Bestellkarte werden vollständig übermittelt. Das Bonusguthaben wird nicht übermittelt: Es ist für den gesamten Netzwerkpool gemeinsam und muss über die API abgerufen werden.

Header

X-Webhook-Eventstringerforderlich

Beispiel: order.created

X-Webhook-IDstringerforderlich

Beispiel: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringerforderlich

Beispiel: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Ereignisse

  • client.registered
  • client.updated
  • client.bonuses_changed
  • order.created
  • order.status_changed
  • order.payment_status_changed
  • feedback.created
  • courier.assigned
  • item.stop_list_changed
  • branch.work_status_changed

Anfragetext

object (WebhookPayload)
eventstringerforderlich

Werte:client.registeredclient.updatedclient.bonuses_changedorder.createdorder.status_changedorder.payment_status_changedfeedback.createdcourier.assigneditem.stop_list_changedbranch.work_status_changed

Beispiel: order.status_changed

event_uuidstringerforderlich

Beispiel: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) erforderlich

Beispiel: 2024-05-02 08:31:16

branch_idintegererforderlich

Beispiel: 8412

dataoneOferforderlich
Eine der Optionen
object (WebhookDataClientRegistered)

client.registered — neue Telefonnummer oder erster Kontozugang in dieser Filiale

client_branch_profile_idintegererforderlich

Beispiel: 730112

namestringkann null sein

Beispiel: John Doe

phonestringerforderlich

Telefonnummer im internationalen Format, ohne Formatierung

Beispiel: +79114579423

genderstringkann null sein

Werte:womanman

Beispiel: man

date_of_birthstringkann null sein

Geburtsdatum im Format Y-m-d

Beispiel: 1982-01-03

Beispiel für den Inhalt

{
  "event": "order.status_changed",
  "event_uuid": "5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41",
  "date_creation": "2024-05-02 08:31:16",
  "branch_id": 8412,
  "data": {
    "client_branch_profile_id": 730112,
    "name": "John Doe",
    "phone": "+79114579423",
    "gender": "man",
    "date_of_birth": "1982-01-03"
  }
}

Antwort Ihres Systems

2XX

Akzeptiert

default

Не принято, доставка повторяется