Callback (або Webhook) – це механізм взаємодії між двома сервісами, під час якого сервіс ініціатор надсилає сповіщення (або повідомлення) про подію усім підписникам (subscribers) HTTP запитом, методом POST з тілом JSON (з деталями замовлення). Детальніше можна прочитати у Вікіпедії за посиланням
Навіщо це потрібно?
Використання механізму зворотних викликів може знадобитись у випадках, коли вам необхідно реагувати на події щодо змін замовлення – наприклад, таких як зміна статусу або призначення кур'єра.
Використання механізму зворотних викликів не є обов'язковим – використовуйте його у разі потреби.
Як генерується підпис?
Підпис генерується з даних, доступних за ключем data, які сортуються за цим ключем та перетворюються на JSON-рядок, з якого генерується hash .
Приклади генерування підпису можна побачити нижче 👇
{
"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"
}
]
}
Не забудьте замінити companyIds на власний companyId.
У форматі JSON Array можна передавати декілька companyId.
Якщо у відповіді немає secret, це означає, що підписник, швидше за все, не створився – потрібно спробувати ще раз або звернутись до підтримки.
Зберігаємо secret з відповіді – він знадобиться нам в наступних кроках.
Отримуйте сповіщення на переданий callback uri.
Як правильно опрацьовувати сповіщення?
Оскільки ми з вами працюємо у відкритому інтернеті, на ваш callback uri можуть надіслати будь-який HTTP запит з будь-якими даними, тому вам обов'язково необхідно впевнитись, що сповіщення прийшло від LOKO Merchant Platform.
Для цього в нас є secret, який ми отримали раніше. Ви маєте впровадити механізм верифікації сповіщень у себе для верифікації запитів.