🪃Опрацювання Callback(Webhook)

❓ Як опрацьовувати зворотні виклики

Callback (або Webhook) це механізм взаємодії між двома сервісами, під час якого сервіс ініціатор надсилає сповіщення (або повідомлення) про подію усім підписникам (subscribers) HTTP запитом, методом POST з тілом JSON (з деталями замовлення). Детальніше можна прочитати у Вікіпедії за посиланням https://uk.wikipedia.org/wiki/Webhook

Використання механізму зворотних викликів може знадобитись у випадках, коли вам необхідно реагувати на події щодо змін замовлення – наприклад, таких як зміна статусу або призначення кур'єра.

Використання механізму зворотних викликів не є обов'язковим – використовуйте його у разі потреби.

Як генерується підпис?

Підпис генерується з даних, доступних за ключем data, які сортуються за цим ключем та перетворюються на JSON-рядок, з якого генерується hash HMAC-SHA512. Приклади генерування підпису можна побачити нижче 👇

Як почати отримувати сповіщення?

  1. Отримайте токен для автентифікації.

  2. Отримайте список подій, доступних для підписки.

Надішліть запит:

curl -X GET {PLATFORM_SERVICE_API_URI}/v1/merchant/callback/events \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer {AUTH_TOKEN}'

Отримайте відповідь:

{
  "total": 5,
  "items": [
    {
      "name": "order.new",
      "description": "Fires when new order created"
    },
    {
      "name": "order.item.changed",
      "description": "Fires when order item is changed"
    },
    {
      "name": "order.status.changed",
      "description": "Fires when order status is changed"
    },
    {
      "name": "order.courier.assigned",
      "description": "Fires when courier is assigned to order"
    },
    {
      "name": "store.availability.changed",
      "description": "Fires when store is open/closed"
    }
  ]
}
  1. Створіть підписника за допомогою ендпоїнта. Для створення потрібно вказати company_id та список подій, на які реагуватиме система – ви будете отримувати сповіщення на вказаний вами callback uri.

Відправляємо запит:

Отримуємо відповідь:

Якщо у відповіді немає secret, це означає, що підписник, швидше за все, не створився – потрібно спробувати ще раз або звернутись до підтримки.

Зберігаємо secret з відповіді – він знадобиться нам в наступних кроках.

  1. Отримуйте сповіщення на переданий callback uri.

Як правильно опрацьовувати сповіщення?

Оскільки ми з вами працюємо у відкритому інтернеті, на ваш callback uri можуть надіслати будь-який HTTP запит з будь-якими даними, тому вам обов'язково необхідно впевнитись, що сповіщення прийшло від LOKO Merchant Platform.

Для цього в нас є secret, який ми отримали раніше. Ви маєте впровадити механізм верифікації сповіщень у себе для верифікації запитів.

  1. Отримуємо сповіщення на вказану callback uri.

Приклад отримання нового замовлення:

Приклад отримання змін по доступності бранчі (магазину):

З відповіді треба дістати signature для подальших дій.

  1. Верифікуємо тіло за допомогою secret та signature.

PHP

  1. Готово! Ви успішно обробили сповіщення.

Last updated