Callback URL
Callback URL - это такой URL, к которому обратится виджет после того, как посетитель вашего сайта успешно воспользуется виджетом.
Назначение
Его можно применять как способ уведомления об использовании виджета с данными, которые вводил
пользователь в поля виджета. Например:
-
если вам нужно на своем сайте сохранить данные виджета
-
если у вас есть CRM, в которую вам из виджета необходимо создавать lead-ы
-
если вам необходимо извещать какой-либо сторонний сервис после использования виджета
Настройки
Для использования Callback URL необходимо внести настройки в редакторе виджета на вкладке
"Callback". Настройка не обязательна к использованию, а значит оба поля не обязательны к
заполнению.
-
вводим урл сайта
в поле "Callback URL"
-
вводим секретное слово
в поле "Секретное слово"
Нажимаем "Применить"
-
в программном коде сайта
которому принадлежит "Callback URL", обрабатываете
запрос, пришедший на данный URL и делаете с пришедшими данными, что вам необходимо:
сохраняете в БД, сохраняете в файл, отправляете куда-либо и т.д и т.п.
Принцип действия
-
запрос из виджета отправляется методом POST
-
в теле запроса будет передан массив с данными из полей виджета, а также поле key - секретный
ключ. Формируется как md5(md5(callbackUrlSalt) + md5(hash)), где callbackUrlSalt - секретное
слово, а hash - хэш виджета
Секретный ключ
На данный момент секретное слово необходимо лишь для проверки того факта, что запрос пришел
именно из виджета.
На стороне сайта, которому принадлежит Callback URL, в программном коде обработки пришедшего
запроса, секретный ключ можно использовать следующим образом
-
смотрим тело запроса
и ищем в нем поле "key". Пусть это будет переменная
$key = $postData['key']
-
формируете проверочный секретный ключ
на стороне сайта. Это легко сделать,
зная хэш виджета (его видно в настройках виджета) и секретное слово (его вы вводили в
настройках виджета).
Пусть хэш будет в переменной $hash, секретное слово в переменной $salt, а проверочный
секретный ключ запишем в переменную $secretKey, который необходимо сформировать как
$secretKey = md5(md5($salt) . md5($hash))
-
сравниваем
значения переменных $key и $secretKey. Если они равны, то запрос
сделан из виджета.
Требования к ответу
Если вы хотите, чтобы виджет реагировал на ответ от Callback URL, необходимо:
-
чтобы ответ был в JSON
-
если в ответе будет параметр urlRedirect, то виджет перенаправит пользователя на URL,
указанный в urlRedirect
-
если в ответе будет параметр message, то, если не указан urlRedirect, виджет покажет 3-й шаг
и в нем вместо текста, заданного в настройках виджета, будет текст, указанный в параметре
message