Интеграция интернет-магазина на Woocommerce (WordPress) с Bitrix24 позволяет передавать, хранить и обрабатывать заказы в CRM-системе, а также использовать автоматизацию бизнес-процессов.
Интеграция Woocommerce с Битриск24 через Rest API (Способ №1)
Для этого потребуется подключиться к FTP-сервера или файловый менеджер хостинг-провайдера после чего в папке «wp-content/themes/название-вашей-темы/function.php». Также можно это сделать через административную панель WordPress, где в меню нужно посетить «Внешний вид»-«Редактор тем», после чего в конце документа добавить функцию:
add_action( ‘woocommerce_thankyou’, ‘my_custom_tracking’ );
function my_custom_tracking( $order_id ) {
// Подключаемся к серверу CRM
define(‘CRM_HOST’, ‘[ваше_название].bitrix24.ru’); // Ваш домен CRM системы
define(‘CRM_PORT’, ‘443’); // Порт сервера CRM. Установлен по умолчанию
define(‘CRM_PATH’, ‘/crm/configs/import/lead.php’); // Путь к компоненту lead.rest
// Авторизуемся в CRM под необходимым пользователем:
// 1. Указываем логин пользователя Вашей CRM по управлению лидами
define(‘CRM_LOGIN’, ‘your_email@email.com’);
// 2. Указываем пароль пользователя Вашей CRM по управлению лидами
define(‘CRM_PASSWORD’, ‘your_password’);
// Получаем информации по заказу
$order = wc_get_order( $order_id );
$order_data = $order->get_data();
// Получаем базовую информация по заказу
$order_id = $order_data[‘id’];
$order_currency = $order_data[‘currency’];
$order_payment_method_title = $order_data[‘payment_method_title’];
$order_shipping_totale = $order_data[‘shipping_total’];
$order_total = $order_data[‘total’];
$order_base_info = «<hr><strong>Общая информация по заказу</strong><br>
ID заказа: $order_id<br>
Валюта заказа: $order_currency<br>
Метода оплаты: $order_payment_method_title<br>
Стоимость доставки: $order_shipping_totale<br>
Итого с доставкой: $order_total<br>»;
// Получаем информация по клиенту
$order_customer_id = $order_data[‘customer_id’];
$order_customer_ip_address = $order_data[‘customer_ip_address’];
$order_billing_first_name = $order_data[‘billing’][‘first_name’];
$order_billing_last_name = $order_data[‘billing’][‘last_name’];
$order_billing_email = $order_data[‘billing’][’email’];
$order_billing_phone = $order_data[‘billing’][‘phone’];
$order_client_info = «<hr><strong>Информация по клиенту</strong><br>
ID клиента = $order_customer_id<br>
IP адрес клиента: $order_customer_ip_address<br>
Имя клиента: $order_billing_first_name<br>
Фамилия клиента: $order_billing_last_name<br>
Email клиента: $order_billing_email<br>
Телефон клиента: $order_billing_phone<br>»;
// Получаем информацию по доставке
$order_shipping_address_1 = $order_data[‘shipping’][‘address_1’];
$order_shipping_address_2 = $order_data[‘shipping’][‘address_2’];
$order_shipping_city = $order_data[‘shipping’][‘city’];
$order_shipping_state = $order_data[‘shipping’][‘state’];
$order_shipping_postcode = $order_data[‘shipping’][‘postcode’];
$order_shipping_country = $order_data[‘shipping’][‘country’];
$order_shipping_info = «<hr><strong>Информация по доставке</strong><br>
Страна доставки: $order_shipping_state<br>
Город доставки: $order_shipping_city<br>
Индекс: $order_shipping_postcode<br>
Адрес доставки 1: $order_shipping_address_1<br>
Адрес доставки 2: $order_shipping_address_2<br>»;
// Получаем информации по товару
$order->get_total();
$line_items = $order->get_items();
foreach ( $line_items as $item ) {
$product = $order->get_product_from_item( $item );
$sku = $product->get_sku(); // артикул товара
$id = $product->get_id(); // id товара
$name = $product->get_name(); // название товара
$description = $product->get_description(); // описание товара
$stock_quantity = $product->get_stock_quantity(); // кол-во товара на складе
$qty = $item[‘qty’]; // количество товара, которое заказали
$total = $order->get_line_total( $item, true, true ); // стоимость всех товаров, которые заказали, но без учета доставки
$product_info[] = «<hr><strong>Информация о товаре</strong><br>
Название товара: $name<br>
ID товара: $id<br>
Артикул: $sku<br>
Описание: $description<br>
Заказали (шт.): $qty<br>
Наличие (шт.): $stock_quantity<br>
Сумма заказа (без учета доставки): $total;»;
}
$product_base_infо = implode(‘<br>’, $product_info);
$subject = «Заказ с сайта № $order_id»;
// Формируем параметры для создания лида в переменной $postData = array
$postData = array(
‘TITLE’ => $subject,
‘COMMENTS’ => $order_base_info.’ ‘.$order_client_info.’ ‘.$order_shipping_info.’ ‘.$product_base_infо
);
// Передаем данные из Woocommerce в Bitrix24
if (defined(‘CRM_AUTH’)) {
$postData[‘AUTH’] = CRM_AUTH;
} else {
$postData[‘LOGIN’] = CRM_LOGIN;
$postData[‘PASSWORD’] = CRM_PASSWORD;
}
$fp = fsockopen(«ssl://».CRM_HOST, CRM_PORT, $errno, $errstr, 30);
if ($fp) {
$strPostData = »;
foreach ($postData as $key => $value)
$strPostData .= ($strPostData == » ? » : ‘&’).$key.’=’.urlencode($value);
$str = «POST «.CRM_PATH.» HTTP/1.0\r\n»;
$str .= «Host: «.CRM_HOST.»\r\n»;
$str .= «Content-Type: application/x-www-form-urlencoded\r\n»;
$str .= «Content-Length: «.strlen($strPostData).»\r\n»;
$str .= «Connection: close\r\n\r\n»;
$str .= $strPostData;
fwrite($fp, $str);
$result = »;
while (!feof($fp))
{
$result .= fgets($fp, 128);
}
fclose($fp);
$response = explode(«\r\n\r\n», $result);
$output = ‘<pre>’.print_r($response[1], 1).'</pre>’;
} else {
echo ‘Connection Failed! ‘.$errstr.’ (‘.$errno.’)’;
}
}
В коде предварительно потребуется заменить следующие элементы:
Сохраняем файл и все готово, дальше можно переходить к тестированию.
Связь Woocommerce (Вордпресс) с Bitrix24 через вебхук (Способ №2)
Создание входящего вебхука
Важно! Если подключение уже было выполнено через первый способ, то можно пропустить данный пункт и сразу тестировать интеграцию.
Для этого переходим в «Приложения».
В появившемся окне кликаем на «Вебхуки».
В правом-верхнем углу нажимаем на «добавить вебхук» и выбираем «Входящий».
Даем ему название и описание.
Выделяем пункт CRM и сохраняем форму.
Получаем идентификатор и URL для REST-запроса.
Добавление кода в function.php
Теперь аналогично первому способу переходим в «Редактирование темы»-«function.php» и добавляем следующий код, заменив лишь:
- [идентификатор_пользователя]
- [код_вебхука]
Непосредственно сам код:
Важно! Во избежание ошибок лучше всего скачивать код с файла.
add_action( ‘woocommerce_thankyou’, ‘my_custom_tracking’ );
function my_custom_tracking( $order_id ) {
// Получаем информации по заказу
$order = wc_get_order( $order_id );
$order_data = $order->get_data();
// Получаем базовую информация по заказу
$order_id = $order_data[‘id’];
$order_currency = $order_data[‘currency’];
$order_payment_method_title = $order_data[‘payment_method_title’];
$order_shipping_totale = $order_data[‘shipping_total’];
$order_total = $order_data[‘total’];
$order_base_info = «<hr><strong>Общая информация по заказу</strong><br>
ID заказа: $order_id<br>
Валюта заказа: $order_currency<br>
Метода оплаты: $order_payment_method_title<br>
Стоимость доставки: $order_shipping_totale<br>
Итого с доставкой: $order_total<br>»;
// Получаем информация по клиенту
$order_customer_id = $order_data[‘customer_id’];
$order_customer_ip_address = $order_data[‘customer_ip_address’];
$order_billing_first_name = $order_data[‘billing’][‘first_name’];
$order_billing_last_name = $order_data[‘billing’][‘last_name’];
$order_billing_email = $order_data[‘billing’][’email’];
$order_billing_phone = $order_data[‘billing’][‘phone’];
$order_client_info = «<hr><strong>Информация по клиенту</strong><br>
ID клиента = $order_customer_id<br>
IP адрес клиента: $order_customer_ip_address<br>
Имя клиента: $order_billing_first_name<br>
Фамилия клиента: $order_billing_last_name<br>
Email клиента: $order_billing_email<br>
Телефон клиента: $order_billing_phone<br>»;
// Получаем информацию по доставке
$order_shipping_address_1 = $order_data[‘shipping’][‘address_1’];
$order_shipping_address_2 = $order_data[‘shipping’][‘address_2’];
$order_shipping_city = $order_data[‘shipping’][‘city’];
$order_shipping_state = $order_data[‘shipping’][‘state’];
$order_shipping_postcode = $order_data[‘shipping’][‘postcode’];
$order_shipping_country = $order_data[‘shipping’][‘country’];
$order_shipping_info = «<hr><strong>Информация по доставке</strong><br>
Страна доставки: $order_shipping_state<br>
Город доставки: $order_shipping_city<br>
Индекс: $order_shipping_postcode<br>
Адрес доставки 1: $order_shipping_address_1<br>
Адрес доставки 2: $order_shipping_address_2<br>»;
// Получаем информации по товару
$order->get_total();
$line_items = $order->get_items();
foreach ( $line_items as $item ) {
$product = $order->get_product_from_item( $item );
$sku = $product->get_sku(); // артикул товара
$id = $product->get_id(); // id товара
$name = $product->get_name(); // название товара
$description = $product->get_description(); // описание товара
$stock_quantity = $product->get_stock_quantity(); // кол-во товара на складе
$qty = $item[‘qty’]; // количество товара, которое заказали
$total = $order->get_line_total( $item, true, true ); // стоимость всех товаров, которые заказали, но без учета доставки
$product_info[] = «<hr><strong>Информация о товаре</strong><br>
Название товара: $name<br>
ID товара: $id<br>
Артикул: $sku<br>
Описание: $description<br>
Заказали (шт.): $qty<br>
Наличие (шт.): $stock_quantity<br>
Сумма заказа (без учета доставки): $total;»;
}
$product_base_infо = implode(‘<br>’, $product_info);
$subject = «Заказ с сайта № $order_id»;
// Формируем URL в переменной $queryUrl для отправки сообщений в лиды Битрикс24, где
// указываем [ваше_название], [идентификатор_пользователя] и [код_вебхука]
$queryUrl = ‘https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json’;
// Формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => $subject,
‘COMMENTS’ => $order_base_info.’ ‘.$order_client_info.’ ‘.$order_shipping_info.’ ‘.$product_base_infо
),
‘params’ => array(«REGISTER_SONET_EVENT» => «Y»)
));
// Обращаемся к Битрикс24 при помощи функции curl_exec
$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>»;
}
Все готово можно переходить к тестированию.
Тестирование интеграции между интернет-магазином на Woocommerce и Битрикс24
Для этого делаем тестовый заказ.
Как видим данные ушли в CRM-систему (появится лид/сделка во вкладке CRM).
В заказе видим, что данные автоматически не передаются в нужные поля (не создается контакт клиента) но все, что было указано в заказе будет прописано в комментариях.
Далее уже менеджеру потребуется переписать данные о клиенте и заказе вручную, в том числе и сумму сделки.
Подписывайтесь на наш канал в Яндекс.Дзен
Подписывайтесь на наш Telegram-канал
Подписывайтесь на наш Youtube-канал
Подписывайтесь на нашу группу ВКонтакте
Если кому нужно, вот интеграция для вукомерса —
https://ru.flamix.solutions/bitrix24/integrations/site/woocommerce.php
Добрый день, спасибо за обратную связь, к сожалению проверить данный плагин не смогу, в статье описан способ сложнее но беспалтный.