Możesz personalizować adresy Webhook oraz inne linki używane w zasobach produktów.
{ID}
zostanie zamieniony na numer ID użytkownika.
{EMAIL}
zostanie zamieniony na adres EMAIL użytkownika, ale tylko w niektórych przypadkach - np.
- w adresie Webook do obsługi zamówień (Ustawienia produktu i Ustawienia sprzedawcy)
- w adresie strony z podziękowaniem za opłacenie zamówienia (Ustawienia produktu)
- w treści Jednorazowej Oferty (Ustawienia produktu)
- w opcjach Testowania i Śledzenia produktu (Ustawienia produktu)
- w zasobie typu Link do strony w produkcie.
{TIME}
zostanie zamieniony na aktualny czas w formie unixowej.
{MD5:dowolnytekst}
zostanie zastąpiony na skrót MD5 wyliczony funkcją PHP md5('dowolnytekst');
.
{SHA256:dowolnytekst}
zostanie zastąpiony na skrót SHA-2 (256 bit) wyliczony funkcją PHP hash('sha256','dowolnytekst');
.
Link zostanie spersonalizowany w takiej kolejności, jak powyżej. Można więc łączyć te funkcje.
Przykład personalizowanego linku
http://twojadomena.pl/webhook.php?id={ID}&time={TIME}&key={SHA256:TajnySekret{ID}{TIME}}
Oczywiście TajnySekret
powinien być znanym innym najlepiej losowym ciągiem znaków, który pojawia się tylko w personalizowanym adresie oraz w docelowym skrypcie.
Jeśli adres e-mail użytkownika to 3 a znacznik czasu to 1326739770 otrzymamy:
http://twojadomena.pl/webhook.php?id=3&time=1326739770&key=66e9359da070ee3b7d03645c15a887f3e717addbe3e84c4c53402caf91c5df6a
Zmienna key
(klucz) zostanie wyliczony za pomocą 256 bitowego skrótu, którego nie da się złamać. MD5 to popularna alternatywa, ale nie tak bezpieczna.
Teraz po stronie skryptu docelowego możemy sprawdzić, czy połączenie jest prawidłowe:
Przykładowy kod PHP weryfikujący zapytanie:
if ( $_GET['key'] == '' || $_GET['key'] != hash('sha256', 'TajnySekret'.$_GET['id'].$_GET['time']) ) { die('Zly klucz'); } // if timestamp was made more than 24 hours ago // or in future ;-) something is wrong if ($_GET['time'] < (time()-(24*3600)) || $_GET['time'] > time()) { die('Zly znacznik czasu.'); }
WAŻNE: Jeśli chcesz weryfikować linki za pomocą znacznika czasu, weź pod uwagę, że zapytania do Webhook mogą być wywoływane z opóźnieniem - zwłaszcza jeśli serwer docelowy będzie przeciążony. Dlatego ustaw czas życia linku na minimum 1 godzinę.
if ( $_GET['key'] == '' || $_GET['key'] != hash('sha256', 'TajnySekret'.$_GET['id'].$_GET['time']) ) { die('Zly klucz'); } // if timestamp was made more than 24 hours ago // or in future ;-) something is wrong if ($_GET['time'] < (time()-(24*3600)) || $_GET['time'] > time()) { die('Zly znacznik czasu.'); }