API

ვებჰუკები

ვებჰუკი — ეს არის HTTP-თხოვნა, რომელსაც FoodSoul აგზავნის თქვენი სისტემის მისამართზე მაშინ, როდესაც ანგარიშში ხდება რაიმე მოვლენა: ახალი შეკვეთა, სტატუსის შეცვლა, მიმოხილვა და სხვა.

გამოწერა მისამართით და მოვლენებით იქმნება მეთოდით:

POST ვებჰუკის გამოწერის შექმნა

მისამართი — URL გამოწერიდან, მეთოდი — POST.

ფორმატი, ხელმოწერა და გამეორებები

ვებჰუკის მოთხოვნის სხეული. თითოეული მოთხოვნა — 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), ხოლო მფლობელი და ანგარიშის სისტემური ადმინისტრატორი იღებენ ელფოსტას. გამოწერის ჩართვა ხელახლა შესაძლებელია (webhooks_subscriptions.unblock).
სხეული შეიცავს მოვლენის მონაცემებს: კლიენტი, მიმოხილვა და შეკვეთის ბარათი სრულად გადმოიცემა. ბონუს ბალანსი არ გადმოიცემა: ის საერთო არის ქსელების პულისთვის, მისი მიღება შესაძლებელია 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

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