Callback URL

Callback URL - это такой URL, к которому обратится виджет после того, как посетитель вашего сайта успешно воспользуется виджетом.

Назначение

Его можно применять как способ уведомления об использовании виджета с данными, которые вводил пользователь в поля виджета. Например:

  • если вам нужно на своем сайте сохранить данные виджета
  • если у вас есть CRM, в которую вам из виджета необходимо создавать lead-ы
  • если вам необходимо извещать какой-либо сторонний сервис после использования виджета

Настройки

Для использования Callback URL необходимо внести настройки в редакторе виджета на вкладке "Callback". Настройка не обязательна к использованию, а значит оба поля не обязательны к заполнению.

  1. вводим урл сайта
    в поле "Callback URL"
  2. вводим секретное слово
    в поле "Секретное слово" Callback URL Нажимаем "Применить"
  3. в программном коде сайта
    которому принадлежит "Callback URL", обрабатываете запрос, пришедший на данный URL и делаете с пришедшими данными, что вам необходимо: сохраняете в БД, сохраняете в файл, отправляете куда-либо и т.д и т.п.

Принцип действия

  • запрос из виджета отправляется методом POST
  • в теле запроса будет передан массив с данными из полей виджета, а также поле key - секретный ключ. Формируется как md5(md5(callbackUrlSalt) + md5(hash)), где callbackUrlSalt - секретное слово, а hash - хэш виджета

Секретный ключ

На данный момент секретное слово необходимо лишь для проверки того факта, что запрос пришел именно из виджета.

На стороне сайта, которому принадлежит Callback URL, в программном коде обработки пришедшего запроса, секретный ключ можно использовать следующим образом

  1. смотрим тело запроса
    и ищем в нем поле "key". Пусть это будет переменная $key = $postData['key']
  2. формируете проверочный секретный ключ
    на стороне сайта. Это легко сделать, зная хэш виджета (его видно в настройках виджета) и секретное слово (его вы вводили в настройках виджета).
    Пусть хэш будет в переменной $hash, секретное слово в переменной $salt, а проверочный секретный ключ запишем в переменную $secretKey, который необходимо сформировать как $secretKey = md5(md5($salt) . md5($hash))
  3. сравниваем
    значения переменных $key и $secretKey. Если они равны, то запрос сделан из виджета.

Требования к ответу

Если вы хотите, чтобы виджет реагировал на ответ от Callback URL, необходимо:

  • чтобы ответ был в JSON
  • если в ответе будет параметр urlRedirect, то виджет перенаправит пользователя на URL, указанный в urlRedirect
  • если в ответе будет параметр message, то, если не указан urlRedirect, виджет покажет 3-й шаг и в нем вместо текста, заданного в настройках виджета, будет текст, указанный в параметре message