Итак, вы решили открыть собственный интернет магазин. А для магазина решили завести 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.