API

Webhooks

Το webhook είναι ένα αίτημα HTTP που αποστέλλει το FoodSoul στη διεύθυνση του συστήματός σας όταν συμβαίνει κάποιο γεγονός στον λογαριασμό: νέα παραγγελία, αλλαγή κατάστασης, αξιολόγηση και άλλα.

Η συνδρομή με διεύθυνση και συμβάντα δημιουργείται με τη μέθοδο:

POST Δημιουργία συνδρομής σε webhook

Η διεύθυνση είναι το URL από τη συνδρομή, η μέθοδος — POST.

Μορφή, υπογραφή και επαναλήψεις

Σώμα αιτήματος webhook. Κάθε αίτημα είναι POST με Content-Type: application/json στο URL της συνδρομής. Το URL πρέπει να ξεκινά με https. Κεφαλίδες: X-Webhook-Event — κωδικός συμβάντος, X-Webhook-ID — event_uuid, X-Webhook-Signature — sha256= και HMAC-SHA256 του αρχικού σώματος του αιτήματος σε hex με το μυστικό του καταστήματος (webhooks_subscriptions.generate_secret). Επαληθεύστε την υπογραφή στο αρχικό σώμα πριν την ανάλυση του JSON: hash_equals(hash_hmac('sha256', $body, $secret), substr($signature, 7)). Δεν υπάρχει χρονική σήμανση στην υπογραφή, το κανάλι προστατεύεται με HTTPS. Η παράδοση θεωρείται αποδεκτή με οποιαδήποτε απάντηση 2xx εντός 10 δευτερολέπτων. Δεν εκτελούνται ανακατευθύνσεις. Διαφορετικά, η παράδοση επαναλαμβάνεται: 7 προσπάθειες, η πρώτη αμέσως, στη συνέχεια μετά από 1, 5, 15, 60, 180 και 360 λεπτά. Όλες οι προσπάθειες μιας παράδοσης περιέχουν το ίδιο X-Webhook-ID. Η επαναποστολή από το αρχείο καταγραφής (webhooks_logs.resend) περιέχει το ίδιο X-Webhook-ID — με αυτό παραλείπετε ήδη επεξεργασμένες παραδόσεις. 20 συνεχόμενες αποτυχημένες παραδόσεις απενεργοποιούν τη συνδρομή (blocked) και ο ιδιοκτήτης και ο διαχειριστής συστήματος του λογαριασμού λαμβάνουν email. Το webhooks_subscriptions.unblock ενεργοποιεί ξανά τη συνδρομή. Το σώμα περιέχει τα δεδομένα του συμβάντος: ο πελάτης, η κριτική και η κάρτα παραγγελίας μεταδίδονται πλήρως. Το υπόλοιπο bonus δεν μεταδίδεται: είναι κοινό για το pool των δικτύων, πρέπει να ληφθεί μέσω API.

Κεφαλίδες

X-Webhook-Eventstringυποχρεωτικό

Παράδειγμα: order.created

X-Webhook-IDstringυποχρεωτικό

Παράδειγμα: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

X-Webhook-Signaturestringυποχρεωτικό

Παράδειγμα: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Γεγονότα

  • 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

Σώμα αιτήματος

object (WebhookPayload)
eventstringυποχρεωτικό

Τιμές:client.registeredclient.updatedclient.bonuses_changedorder.createdorder.status_changedorder.payment_status_changedfeedback.createdcourier.assigneditem.stop_list_changedbranch.work_status_changed

Παράδειγμα: order.status_changed

event_uuidstringυποχρεωτικό

Παράδειγμα: 5f0c6b1e-6a1d-4c1e-9d6b-3a7f0e2b8c41

date_creationstring (DataTimeFormatSQL) υποχρεωτικό

Παράδειγμα: 2024-05-02 08:31:16

branch_idintegerυποχρεωτικό

Παράδειγμα: 8412

dataoneOfυποχρεωτικό
Μία από τις επιλογές
object (WebhookDataClientRegistered)

client.registered — νέο τηλέφωνο ή πρώτη είσοδος λογαριασμού σε αυτό το υποκατάστημα

client_branch_profile_idintegerυποχρεωτικό

Παράδειγμα: 730112

namestringμπορεί να είναι null

Παράδειγμα: John Doe

phonestringυποχρεωτικό

Τηλέφωνο σε διεθνή μορφή, χωρίς μορφοποίηση

Παράδειγμα: +79114579423

genderstringμπορεί να είναι null

Τιμές:womanman

Παράδειγμα: man

date_of_birthstringμπορεί να είναι null

Ημερομηνία γέννησης σε μορφή Y-m-d

Παράδειγμα: 1982-01-03

Παράδειγμα σώματος

{
  "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"
  }
}

Η απάντηση του συστήματός σας

2XX

Ελήφθη

default

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