Вебхуки с блока "Лид-форма"

Опубликовано 1 Июль, 2021 | Функции | 1 504 просмотров | 1 минут уйдет на чтение

Как включить вебхуки

Открыть настройки блока "Форма и платежи"

Включить чекбоксы "Отправить webhook" на вкладках "Действия после заполнения формы" и\или "Действия после оплаты"

Указать url вебхука

 

Структура вебхуков

 

После заполнения формы мы пошлем POST запрос с json телом:

 

{
  "action": "form.submit",
  "info": {
    "form_owner_id": "1",
    "form_owner_email": "owner@mail.ru",
    "form_page_url": "https://linkrr.ru/urpage",
    "form_block_id": "8199",
    "lead_id": "55"
  },
  "data": {
    "name": "pavel",
    "email": "buyer@mail.ru",
    "phone": "+79501232323",
    "fields": {
      "Ваше имя": "pavel",
      "Ваш E-mail": "buyer@mail.ru",
      "Ваш номер телефона": "+79501232323",
      "Какое-то поле": "какие-то данные"
    }
  },
  "sign": "34699a5637e5f4a23f6ab66687ba41d92ccaea0539b6bedfe2faed66384ad680"
}

Сегмент Info - общие данные по форме, странице и лиду

Сегмент Data - данные из полей формы, которые заполнил пользователь

 

Подпись запроса в поле sign формируется из массива данных.

Пример на php:

$body = [
    'action' => "form.submit",
    'info' => [
        'form_owner_id' => $form_owner_id,
        'form_owner_email' => $form_owner_email,
        'form_page_url' => $form_page_url,
        'form_block_id' => $form_block_id,
        'lead_id' => $lead_id
    ],
    'data' => [
        'name' =>  $submitted_form_fields["name"],
        'email' => $submitted_form_fields["email"],
        'phone' => $submitted_form_fields["tel"],
        'fields' => $webhook_fields
    ],

];

$body['sign'] =  Hmac::create($body, $user->api_key);

 

 

После успешной оплаты мы пошлем вебхук:

{
  "action": "form.pay",
  "info": {
    "form_owner_id": "1",
    "form_owner_email": "owner@mail.ru",
    "form_block_id": "8199",
    "lead_id": "55",
"lead_name":"\u041f\u0430\u0432\u0435\u043b",
"lead_phone":"+7950111111",
"lead_email":"lead@mail.ru" }, "data": { "payment_system": "prodamus", "amount": "500.00" }, "sign": "e9abcfdd3be30bdeedceef2a637e855d4657b03dbfb9be5cdfbbae117d547d26" }

 

Подпись запроса в поле sign формируется из массива данных.

Пример на php:

$body = [
    'action' => "form.pay",
    'info' => [
        'form_owner_id' => $user_id,
        'form_owner_email' => $form_owner_email,
        'form_block_id' => $form_block_id,
        'lead_id' => $lead_id,
        'lead_name':$lead_name,
        'lead_phone':$lead_phone,
        'lead_email':$lead_email
], 'data' => [ 'payment_system' => 'prodamus', 'amount' => $params["sum"], ], ]; $body['sign'] = Hmac::create($body, $user->api_key);

 

 

 

Класс Hmac на php для проверки подлинности запроса:

<?php
class Hmac {
    static function create($data, $key, $algo = 'sha256') {
        if (!in_array($algo, hash_algos()))
            return false;
        $data = (array) $data;
        array_walk_recursive($data, function(&$v){
            $v = strval($v);
        });
        self::_sort($data);
        if (version_compare(PHP_VERSION, '5.4.0', '<')) {
            $data = preg_replace_callback('/((\\\u[01-9a-fA-F]{4})+)/', function ($matches) {
                return json_decode('"'.$matches[1].'"');
            }, json_encode($data));
        }
        else {
            $data = json_encode($data, JSON_UNESCAPED_UNICODE);
        }
        return hash_hmac($algo, $data, $key);
    }
 
    static function verify($data, $key, $sign, $algo = 'sha256') {
        $_sign = self::create($data, $key, $algo);
        return ($_sign && (strtolower($_sign) == strtolower($sign)));
    }
 
    static private function _sort(&$data) {
        ksort($data, SORT_REGULAR);
        foreach ($data as &$arr)
            is_array($arr) && self::_sort($arr);
    }
}
?>

 

Последняя правка от 1 Январь, 2023