Итак, вы решили открыть собственный интернет магазин. А для магазина решили завести CRM, например Битрикс24. И теперь думаете, как заставить обмениваться ваш интернет магазин и Битрикс данными. Предлагаю небольшое решение данной проблемы.

Не будем останавливаться на выборе движка для интернет магазина - это уже личное дело каждого. Данная заметка подходит для многих движков, однако в моем случае это Opencart 3.xx

В первую очередь необходимо дать понять битриксу, что мы хотим передать ему данные, используя REST API - для этого необходимо создать входящий веб-хук.

Создание входящего вебхука

Для того, чтобы битрикс начал принимать сообщения по REST API, необходимо создать входящий вебхук с правами на создание лидов. Если вы знаете, как это делать, переходите дальше, если нет - сейчас я по пунктам все обьясню.

Для начала переходим в Приложения -> Вебхуки и нажимаем Добавить Вебхук -> Входящий вебхук.

Обязательно укажите права для доступа к CRM, иначе веб-хук не сможет создавать лиды

После указания названия веб-хука и выставления прав, нажмите сохранить - на этом создание веб-хука закончено. Вы должны получить код авторизации, который выглядит как набор цифр и букв. Он нам впоследствии пригодится.

Поиск и выбор переменных

В Opencart уже есть набор скриптов для оповещенеия при событии на e-mail, поэтому проще всего будет подправить эти скрипты для автоматизации создания лидов в битриксе. Для примера, мы хотим создать лид в Битрикс24 при регестрации в интернет магазине нового пользователя. Для этого смотрим скрипт по следующему пути: "путь к вашей установке Opencart"/catalog/controller/mail, и там текстовым редактором открываем файл register.php.

Для того, чтобы настроить отправку лидов, необходимо опредлиться, какие именно данные мы будем передавать.

Можете поэксперементировать сами, но я напишу список переменных с данными, которые я передаю:

$this->request->post['firstname'] - содержит имя, указанное при регистрации

$this->request->post['lastname'] - фамилия, указанная при регестрации

$this->request->post['telephone'] - мобильный телефон

$this->request->post['email'] - email

Теперь перейдем непосредственно к отправке лида в Битрикс24.

Код для создания лида

В тот же скрипт, отправляющий оповещение при регистрации, перед конструкцией (если вставить в другом участке скрипта, лиды могут не отправляться, поскольку не будет вызываться функция):

 // Send to additional alert emails if new account email is enabled
                    $emails = explode(',', $this->config->get('config_mail_alert_email'));

Вставляем следующий код:

// формируем URL 
$queryUrl = 'https://ВАШ_БИТРИКС/rest/1/ВАШ_ВЕБХУК/crm.lead.add.json';
 // формируем параметры для создания лида 
$queryData = http_build_query(array(
  'fields' => array(
    'TITLE' => 'Новый клиент',
    'COMMENTS' => 'Зарегестрирован новый клиент',
    'OPENED' => 'YES',
    'SECOND_NAME' => ' ',
    'NAME' => $this->request->post['firstname'],
    'LAST_NAME' => $this->request->post['lastname'],
    'SOURCE_ID' => 'STORE',
    'PHONE' => array(array("VALUE" => $this->request->post['telephone'], "VALUE_TYPE" => "MOBILE" )),
    'EMAIL' => array(array("VALUE" =>  $this->request->post['email'], "VALUE_TYPE" => "HOME" )),
    'EXPORT' => 'YES'
  ),
   'params' => array("REGISTER_SONET_EVENT" => "Y")
  ));
  // обращаемся к Битрикс24 
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_POST => 1,
  CURLOPT_HEADER => 0,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_URL => $queryUrl,
  CURLOPT_POSTFIELDS => $queryData,
  ));
   $result = curl_exec($curl);
   curl_close($curl);
   $result = json_decode($result, 1);
   if (array_key_exists('error', $result)) echo "Лид не создан: ".$result['error_description']."<br/>";

Сохраняем и закрываем документ. Теперь при регистрации нового посетителя в интернет магазине, в битриксе создается новый лид.

Отправка кастомных полей в Битрикс

Выше вы могли заметить, что для отправки лидов в битрикс используется конструкция 'ПОЛЕ' => 'Значение'. У битрикса есть заготовленный список полей, которые можно передавать в JSON формате, используя REST API: TITLE - название лида , 'NAME' - имя клиента и прочие. Полный список можно посмотреть на странице документации Битрикс.

Список принимаемых данных довольно большой, но некоторым может не хватить представленного выше списка. Для того чтобы передавать больше различных данных, в битриксе используются кастомные поля, которые также можно передавать через REST API.

Переходим в CRM -> Настройки -> Настройка фарм и отчетов -> Пользовательские поля

В категрии Лид нажимаем Добавить поле и заполняем поля:

Здесь можно указать формат принимаемых данных (время, валюта, деньги и прочее). Если не знаете какой формат выбрать - осталяйте стандартный - все данные в этом поле будут представлять простой текст.

Стоит отметить поле Обязательное. Если сделать поле обязательным, то в случае, если вы забудете его передать по REST API, вы не сможете создать лид.

После заполнения полей нажимаем Сохранить, после чего переходим к списку полей и открываем только что созданное поле. При этом в поисковой строке браузера отобразится имя данного поля:

Имя созданного поля

Вам необходима именно конструкция **UFCRM*** - это имя вашего кастомного поля, которое теперь можно использовать для передачи даных из Opencart.

Теперь ID созданного поля можно использовать точно также как и другие поля, и передавать в эти поля данные из Opencart.