Dostępne webhooki
merchandise_update_position
Hook wywoływany jest w momencie aktualizacji pozycji towaru.
merchandise_update_status
Hook wywoływany jest w momencie aktualizacji statusu towaru. Hook nie wykona się przy zwykłej aktualizacji towaru, tylko gdy zostanie zmieniony jego status.
Dodanie webhooka
W celu dodania webhooka należy zalogować się do panelu klienta TalpaSmart i wejść do zakładki Ustawienia -> Webhooki. Poniżej listy dodanych webhooków należy kliknąć przycisk „Dodaj webhook”.
Na liście webhooków zostanie dodany nowy element, w którym należy uzupełnić 3 informacje:
- Nazwa – nazwa webhooka, która pozwoli go łatwiej odnaleźć.
- Typ zdarzenia – wybieramy typ zdarzenia, do którego webhook ma zostać dodany (można wybrać więcej niż jedną opcję).
- URL – adres URL, na który mają zostać wysłane informacje przez webhook.
Domyślnie webhook jest aktywny, ale można go wyłączyć, przełączając kontrolkę znajdującą się po prawej stronie od adresu URL webhooka.
Po uzupełnieniu powyższych danych należy kliknąć przycisk „Zapisz” znajdujący się w prawym górnym rogu karty.
Odbieranie webhooka
Webhooki są wysyłane metodą POST, a wraz z informacją dotyczącą danego webhooka jest przesłany również nagłówek X-HMAC
zawierający wyliczoną sumę kontrolną z przesyłanej wiadomości.
Sprawdzanie sumy kontrolnej
Skrypt odbierający wiadomość, po poprawnym odebraniu musi zwrócić status 200. W innym przypadku request zostanie oznaczony jako nieodebrany i będzie następowała próba jego ponowienia (ponawianie webhooków).
**Payload:**
```json
{
"meta": {
"type": "<webook_type>"
},
"data": "<webook_data>"
}
<webook_type>
– zawiera informację o typie webhooka.<webook_data>
– zawiera dane dotyczące webhooka. W zależności od typu różnią się one polami.
merchandise_update_position
Request będzie zawierał 3 informacje:
- merchandise – identyfikator towaru w systemie.
- lat – szerokość geograficzna nowej pozycji.
- lon – długość geograficzna nowej pozycji.
Przykład:
{
"meta": {
"type": "merchandise_update_position"
},
"data": {
"merchandise": "12",
"lat": 52.229675,
"lon": 21.012230
}
}
merchandise_update_status
Request będzie zawierał 2 informacje:
- merchandise – identyfikator towaru w systemie.
- status – nowy status towaru.
Pole status zawiera jedną z poniższych wartości:
- at_the_customer – Towar u klienta.
- ready_to_return – Gotowy do odbioru.
- returned – Zwrócony.
{
"meta": {
"type": "merchandise_update_status"
},
"data": {
"merchandise": "12",
"status": "ready_to_return"
}
}
Sprawdzanie sumy kontrolnej
W panelu, nad listą webhooków znajduje się „Webhook secret”. Jest to klucz potrzebny do weryfikacji poprawności danych.
Do wyliczenia sumy kontrolnej używana jest funkcja HMAC-SHA256. Uzyskaną sumę kontrolną należy porównać z wartością znajdującą się w nagłówku X-HMAC
. Jeżeli suma kontrolna nie pokrywa się z przesłaną w nagłówku, należy taką wiadomość odrzucić.
- secret – Webhook secret odczytany z aplikacji.
- payload – Treść wiadomości odebranej z webhooka.
PHP
<?php
echo hash_hmac('sha256', $payload, $secret);
Python
import hmac
import hashlib
dig = hmac.new(secret, msg=payload, digestmod=hashlib.sha256).digest()
print(dig)
Ponawianie webhooków
Jeżeli skrypt odbierający request webhooka nie zwróci kodu statusu 200, webhook będzie próbował go ponowić. Próba ponownego przesłania webhooka odbywa się co 1h, maksymalnie 100 razy. Jeżeli request nie zostanie odebrany po 100 próbach, taki request zostanie usunięty.