Интеграция Woocommerce (WordPress) с Битрикс24: пошаговая инструкция

Интеграция интернет-магазина на Woocommerce (WordPress) с Bitrix24 позволяет передавать, хранить и обрабатывать заказы в CRM-системе, а также использовать автоматизацию бизнес-процессов.

Интеграция Woocommerce с Битриск24 через Rest API (Способ №1)

Для этого потребуется подключиться к FTP-сервера или файловый менеджер хостинг-провайдера после чего в папке «wp-content/themes/название-вашей-темы/function.php». Также можно это сделать через административную панель WordPress, где в меню нужно посетить «Внешний вид»-«Редактор тем», после чего в конце документа добавить функцию:

Добавление в function php кода для связи интернет-магазина на Woocommerce (WordPress) и Битрикс24

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

Сохраняем файл и все готово, дальше можно переходить к тестированию.

Связь Woocommerce (Вордпресс) с Bitrix24 через вебхук (Способ №2)

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

Важно! Если подключение уже было выполнено через первый способ, то можно пропустить данный пункт и сразу тестировать интеграцию.

Для этого переходим в «Приложения».

Переход в приложения в Битрикс24

В появившемся окне кликаем на «Вебхуки».

Переход в

В правом-верхнем углу нажимаем на «добавить вебхук» и выбираем «Входящий».

Создание нового входящего вебхука в Битрикс24

Даем ему название и описание.

Ввод названия и описания при создании вебхука в Битрикс24

Выделяем пункт CRM и сохраняем форму.

Сохранение настроек вебхука в Bitrix24

Получаем идентификатор и URL для REST-запроса.

Созданный вебхук в Битрикс24

Добавление кода в function.php

Теперь аналогично первому способу переходим в «Редактирование темы»-«function.php» и добавляем следующий код, заменив лишь:

  • [идентификатор_пользователя]
  • [код_вебхука]

Непосредственно сам код:

Важно! Во избежание ошибок лучше всего скачивать код с файла.

https://drive.google.com/drive/folders/1iUXxBf98tpIo0NE4AQ1j2rlJGj4Z7YnH?usp=sharing

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

Для этого делаем тестовый заказ.

Тестовый заказ в интернет-магазине на базе WordPress (Woocommerce)

Как видим данные ушли в CRM-систему (появится лид/сделка во вкладке CRM).

Переход в переданную сделку или лид в Битрикс24 из Woocommerce

В заказе видим, что данные автоматически не передаются в нужные поля (не создается контакт клиента) но все, что было указано в заказе будет прописано в комментариях.

Комментарий с данными в переданной сделке или лиде в Битрикс24 из Woocommerce

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

Переданный заказ или лид в Битрикс24 из Woocommerce

Подписывайтесь на наш канал в Яндекс.Дзен

Подписывайтесь на наши социальные сети

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (7 оценок, среднее: 4,29 из 5)
Загрузка...