Интеграция Woocommerce и Bitrix24

Интеграция Woocommerce и Bitrix24 — сложно или можно осуществить самостоятельно? На самом деле ничего сложного в самостоятельной интеграции Woocommerce и Bitrix24 нет. После ознакомления с данной статьей, каждый вебмастер сможет это проделать на своем сайте. Тем более, что скрипт по интеграции универсальный и его можно просто вставить в function.php вашей текущей темы на WordPress и не «заморачиваться». Предлагаю на выбор два скрипта по интеграции:
  1. Скрипт по интеграции с помощью упрощенного Rest API. Единственное, что необходимо будет сделать — указать [ваше_название] от Битрикс 24, а так же логин и пароль в данном скрипте.
  2. Скрипт по интеграции при помощи входящего вебхука Битрикс24. Необходимо будет создать входящий вубхук в Bitrix24 и указать [ваше_название] от Битрикс24, [идентификатор_пользователя] и [код_вебхука].
Рекомендую использовать скрипт по интеграции при помощи входящего вебхука Битрикс24, так как он более безопасный в использовании и функциональнее.

Готовый скрипт для интеграции Woocommerce и Bitrix24

Один из этих скриптов интеграции, на ваш выбор, необходимо внести в functions.php вашей текущей темы на WordPress. Для этого необходимо перейти в Внешний вид → Редактор → Функции темы. Открыв файл functions.php необходимо вставить полученный код в самом низу документа.

Скрипт по интеграции с помощью упрощенного Rest API

Внимание! Не забудьте внести свои данные для:
  • [ваше_название].bitrix24.ru — укажите ваш домен в Bitrix24;
  • your_email@email.com — укажите свой логин от Bitrix24;
  • your_password — укажите ваш пароль от Bitrix24.
Прежде чем указывать ваш логин и пароль в PHP скрипте, ознакомитесь, пожалуйста, с разделом «Логин и пароль пользователя Вашей CRM».
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.')';
  }
}

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

Внимание!
  1. Активируйте входящий вебхук в Битрикс 24
  2. Не забудьте внести свои данные для:
    • [ваше_название].bitrix24.ru — укажите ваш домен в Bitrix24;
    • [идентификатор_пользователя] — укажите свой идентификатор пользователя;
    • [код_вебхука] — укажите свой код вебхука Битрикс24.
Где получить [идентификатор_пользователя], [код_вебхука] и как активировать входящий вебхук в Битрикс 24 можно узнать здесь: «Как создать входящий вубхук».
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>";
}
После того как вы внесете данный скрипт в ваш functions.php текущей темы, то заказы с сайта будут автоматически созданы в CRM системе в виде лидов. Единственное, все данные будут поступать в поле комментарий. Это связано с тем, что при написание скрипта руководствовался тем, что у каждого свои потребности куда заносить то или иное значение, поэтому все поступающие данные из Woocommerce передаю в поле комментарий 'COMMENTS' Bitrix24. Однако вы можете самостоятельно разнести нужные данные по необходимым вам полям в Битрикс 24. О том какие поля доступны по умолчанию в Битрикс 24 вы можете узнать из Таблицы параметров из соответствующих справочников Bitrix24.
Интеграция Woocommerce и Bitrix24

Самостоятельная интеграция Woocommerce и Bitrix24

Как работают скрипты по интеграции Woocommerce и Bitrix24?

Любой из вышеприведенных php cкриптов по интеграции состоит из двух частей:
  1. php скрипт для отправки данных в Битрикс24:
    • либо с помощью упрощенного Rest API;
    • либо при помощи входящего вебхука Битрикс24.
  2. Хука перехвата введенных данных из Woocommerce.
Так как php скрипт для создание лидов в Битрикс24 через упрощенный Rest API и php скрипт для создание лидов в Битрикс24 при помощи входящего вебхука Битрикс24 — стандартизированное решение команды Битрикс, которое имеет множество ответов и мануалов на русском языке, то решение с хуком для Woocommerce не так популярно. Поэтому предлагаю остановиться на нем по подробнее.

Хук для перехвата данных заказа из Woocommerce

Что такое хук — это тоже самое, что и callback, т.е перехват функций вызова в сторонних процесса. Поэтому чтобы получить данные по заказу лучше всего использовать поддерживаемый хук Woocommerce — woocommerce_thankyou с функцией получения данных по по id заказу — order_id:
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_data мы получаем массив, в котором хранятся следующие значения:
array(
    // Abstract order props.
    'parent_id'            => 0,
    'status'               => '',
    'currency'             => '',
    'version'              => '',
    'prices_include_tax'   => false,
    'date_created'         => null,
    'date_modified'        => null,
    'discount_total'       => 0,
    'discount_tax'         => 0,
    'shipping_total'       => 0,
    'shipping_tax'         => 0,
    'cart_tax'             => 0,
    'total'                => 0,
    'total_tax'            => 0,

    // Order props.
    'customer_id'          => 0,
    'order_key'            => '',
    'billing'              => 
    array(
        'first_name' => '',
        'last_name'  => '',
        'company'    => '',
        'address_1'  => '',
        'address_2'  => '',
        'city'       => '',
        'state'      => '',
        'postcode'   => '',
        'country'    => '',
        'email'      => '',
        'phone'      => '',
    ),
    'shipping'             => 
    array(
        'first_name' => '',
        'last_name'  => '',
        'company'    => '',
        'address_1'  => '',
        'address_2'  => '',
        'city'       => '',
        'state'      => '',
        'postcode'   => '',
        'country'    => '',
    ),
    'payment_method'       => '',
    'payment_method_title' => '',
    'transaction_id'       => '',
    'customer_ip_address'  => '',
    'customer_user_agent'  => '',
    'created_via'          => '',
    'customer_note'        => '',
    'date_completed'       => null,
    'date_paid'            => null,
    'cart_hash'            => '',
)
Далее были получены некоторые значения из данного массива и объединены в переменных $order_base_info, $order_client_info и $order_shipping_info. После этого остается получить только информацию по товару/товарам из данного заказа. Для этого была использована конструкция foreach, которая представляет собой простой способ перебора массивов.
// получение информации по товару
$order->get_total();
$line_items = $order->get_items();
foreach ( $line_items as $item ) {
  $product = $order->get_product_from_item( $item );

}
Таким образом для $product мы получаем массив, в котором хранятся следующие значения:
array(
  'id' => 0,
  'name' => '',
  'slug' => '',
  'date_created' => {
    'date' => '',
    'timezone_type' => 0,
    'timezone' => '+00 =>00'
  },
  'date_modified' => {
    'date' => '',
    'timezone_type' => 0,
    'timezone' => '+00 =>00'
  },
  'status' => '',
  'featured' => false,
  'catalog_visibility' => '',
  'description' => '',
  'short_description' => '',
  'sku' => '',
  'price' => '',
  'regular_price' => '',
  'sale_price' => '',
  'date_on_sale_from' => ,
  'date_on_sale_to' => ,
  'total_sales' => 0,
  'tax_status' => '',
  'tax_class' => '',
  'manage_stock' => false,
  'stock_quantity' => null,
  'stock_status' => '',
  'backorders' => '',
  'sold_individually' => false,
  'weight' => '',
  'length' => '',
  'width' => '',
  'height' => '',
  'upsell_ids' => [],
  'cross_sell_ids' => [],
  'parent_id' => 0,
  'reviews_allowed' => true,
  'purchase_note' => '',
  'attributes' => [],
  'default_attributes' => [],
  'menu_order' => 0,
  'virtual' => false,
  'downloadable' => false,
  'category_ids' => [],
  'tag_ids' => [],
  'shipping_class_id' => 0,
  'downloads' => [],
  'image_id' => '',
  'gallery_image_ids' => [],
  'download_limit' => 0,
  'download_expiry' => 0,
  'rating_counts' => [],
  'average_rating' => '',
  'review_count' => 0,
  'meta_data' => [{
    'id' => 0,
    'key' => '',
    'value' => ''
  }, {
    'id' => 0,
    'key' => '',
    'value' => ''
  }]
)
Далее были получены некоторые значения из данного массива и записаны в переменную $product_info[]. Где [] используются для того, чтобы можно было вынести значения переменной за пределы массива foreach. Если в заказе будут присутствовать 2 и более товаров, то следует предусмотреть корректный вывод информации. В связи с этим была добавлена строчка $product_base_infо = implode(' ', $product_info);, которая позволяет выводить информацию по каждому отдельному товару в заказе друг под другом. Поэтому, если Вы планируете разносить данные полученные из Woocommerce по полям Битрикс 24, то следует учесть, что товаров в заказе может быть несколько. В связи с этим, рекомендую оставить информацию по товарам в поле для комментариев.

Особенности для передачи номера телефона, email или мессенджера при интеграции с помощью входящего вебхука

При интеграции Woocommerce и Битрикс 24 с помощью входящего вебхука, необходимо учесть особенности передачи номера телефона, email или мессенджера. Что это за особенности, и как все-таки передавать данные параметры можно узнать в разделе «Учесть особенность для передачи номера телефона, email, мессенджера». На этом интеграция Woocommerce и Bitrix24 завершена.
Понравилась статья? Поделись ей =)

Подписаться на email рассылку

Хотите быть в курсе новых инструкций и кейсов для вашей работы?

Подпишись на полезную рассылку об интернет-маркетинге


46 thoughts on “Интеграция Woocommerce и Bitrix24

  1. Большое спасибо за статью! Применял другой код, но благодаря этой статье смог прописать нужный мне функционал к сайту. Спасибо!!!

  2. Большое спасибо за скрипт! Такой вопрос остался — как передать поле «Примечание к заказу» в Битрикс? Очень важное поле)

    • Добрый день, Дмитрий

      примечания к заказу должны храниться в переменной customer_note для массива order_data
      Так к примеру, если следовать коду в статье, то

      	***
      	$order_note = $order_data['customer_note']
      	***
      	$order_base_info = "
      	***
      	Примечание к заказу: $order_note
      "
  3. А, и еще, почему-то создается два лида в Битриксе, с разницей в 10 секунд буквально…

    • Не могу точно сказать почему у Вас именно так.
      Скорее всего при оформлении заказа у вас дублируется данные в function.php

  4. Я встроил данный код в функцию моей темы. Скрипт так и не начал отправлять заказы. Что я сделал не так ?

    • Добрый день,

      уточните, пожалуйста, что значит встроили?
      Вы указали 1) ваш домен CRM системы, 2) логин пользователя CRM с правами по управлению лидами, 3) пароль для входа от п.2?

      • Владимир, код который выше. Я вставил в functions.php, внес свой логин и пароль, адрес crm(права обязательно) .
        Данный скрипт только в functions.php вставить, нужно ли еще что-то делать ?

        • да, код вставляется только в functions.php более никаких действий производить не нужно

      • Получил ошибку

        	Fatal error: Call to undefined method WC_Order::get_data() in wp-content/themes/mytheme/functions.php on line 147 
        

        что это может быть ?

        • Скорее всего вы пользуетесь старой версией WooCommerce, где новые заказы называются по-разному.
          Замените строчку $order = wc_get_order( $order_id ); на $order = new WC_Order( $order_id );

  5. Спасибо за скрипт!
    Помогите пожалуйста разнести поля Имя, Фамилия и номер телефона по соответсвующим полям в Бирикс.

  6. Спасибо большое! Все работает, но у меня создается сделка не в то Направление.
    У меня в Битриксе два Направления «Техподдержка» и «Продажи». Из вордпресса создается всегда почему-то в техподдержку.

    Пробую передавать "CATEGORY_ID" => 0, но к сожалению ничего не меняется.

    Знаете ли вы как можно указать в какое направление создавать сделку?

    • Добрый день, Артем
      Честно говоря, никогда с категориями не сталкивался.
      Поэтому буду рад, если Вы сообщите как вам удалось решить задачу.

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

    • Если за задачу отвечают все, значит за задачу никто не отвечает. Поэтому в CRM системе всегда указывается конкретный ответственный. Никак по другому.

      Но, в разделе «CRM → Настройки → Права → Права доступа» можно настраивать доступ к любым лидам, сделкам, контактам как для отдельного лица, так и для группы лиц и даже отделкам компании. К примеру, там Вы можете дать доступ Отделку продаж:

      1. ко всем лидам;
      2. ко всем открытым лида;
      3. лиды отдела;
      4. лиды отдела + подотдела.

      Либо вы можете организовать поочередное присвоение лидов для группы ответственных. Для данной реализации необходимо написать сценарий обработки с помощью бизнес-процесса. Конкретная реализация зависит от ситуации, для начала ознакомьтесь с бизнес-процессами в Битрикс 24.

  8. Вставил скрипт, изменил логин, пароль и домен, но лиды не появляются. Нужно ли в самом Битрикс что-то настраивать? Возможно проблема из-за домена ***.bitrix.by, а не .ru?

    • Добрый день, Павел.
      Нет, в битриксе ничего настраивать не нужно.
      Скажите, пожалуйста, выдает ли wp какие-либо ошибки?

  9. Прив вставке данного скрипта. сайт подвисает до бесконечности после нажатия кнопки добавить в корзину, затем, если жмешь оформить заказ…

    • Добрый день, Максим
      сложно судить не видя почему у вас так происходит.
      Может быть у вас возник конфликт из-за плагинов, или у вас старая версия Woocommerce

    • Проверьте не используете ли вы хук

      	add_action( 'woocommerce_thankyou', 'my_custom_tracking' );
      	function my_custom_tracking( $order_id ) {
      		***
      	}
      

      второй раз?

      Из-за дубликата использования могут происходит циклические редиректы.

  10. Доброе! вылетает на ошибку

    	Parse error: syntax error, unexpected 'В В ' (T_STRING) 
    

    показывает на самое начало
    вставлял в functions и дочерней и главной темы.
    обертывал if( ! function_exists(
    все равно результат тот же
    вордпресс 5
    woo Версия 3.5.2

    • Добрый день, Дмитрий
      ошибка syntax error, unexpected T_STRING говорит о том, что где-то ошибка синтаксисе и стоит не тот или упущен знак ', ,, ; и т.п.
      Обратите внимание в какой строчке у вас ошибка и проверьте все кавычки, точки, точки с запятой в ней.

  11. Насколько безопасны данные методы?
    Указываются в явном виде логин и пароль от битрикса

      1. Скрипт по интеграции с помощью упрощенного Rest API — небезопасный способ, так как если злоумышленник получит доступ к вашему файлу function.php, то он узнает логин и пароль от Битрикс 24. Поэтому рекомендуется указывать доступы пользователя с ограниченными правами и только с правами управления лидами.
      2. Рекомендую использовать скрипт по интеграции при помощи входящего вебхука Битрикс24, так как он более безопасный. Даже если злоумышленник получит доступ к файлу function.php и узнает код входящего вебхука, то попасть в Битрикс24 он не сможет. Не сможет и скачать базу клиентов. Единственное, что он сможет — добавить лид, контакт, сделку, компанию.
  12. А что такое идентификатор пользователя? Где его взять? Все пересмотрел уже.

  13. Добрый день , хорошая статья.
    Подскажите , а как получить Общую стоимость товара
    ttl = сумма всех товаров без учета доставок и тд .
    Спасибо за ваш ответ.

    • Добрый день,
      вся информация по заказу храниться в массиве wc_get_order( $order_id ).
      Не знаю почему, но таких данных там нет. Однако вы можете вычислить их самостоятельно:

      $order_total = $order_data['total'];
      $order_shipping_totale = $order_data['shipping_total'];
      $ttl = $order_total - $order_shipping_totale;
      
      • Огромное спасибо!!
        А будут статьи как разложить ютм метки , и отправлять их в битрикс?

        • Добрый день,

          да, в плане стоит написание статьи по данному поводу.
          Постараюсь выложить ее в ближайшее время.

          Спасибо что читаете =)

  14. Спасибо.
    Подскажите , будет ли статья , как таким образом получить поля , гугл айди клиента , ютм метки , все что касается аналитики, скажем так.
    Спасибо за Ваш ответ

    • Добрый день,

      да, в плане стоит написание статьи по данному поводу.
      Постараюсь выложить ее в ближайшее время.

      Спасибо что читаете =)

  15. Добрый день . Подскажите , а как эти данные передавать сразу в сделку , а не в лид ?

    • Добрый день,

      для этого необходимо использовать скрипт по интеграции при помощи входящего вебхука Битрикс24.
      В URL, в переменной $queryUrl, для отправки в Битрикс24, нужно заменить crm.lead.add.json на crm.deal.contact.add.json.

      Обращаю ваше внимание, что параметры полей для лидов в Битрикс24 могут отличаться от параметров полей для контактов, поэтому при данной реализации следует их сравнить.

  16. Владимир, подскажите: не понял, как передать название товара со всеми его вариациями в названии? Т.е. не «Cвитшот (трехниточный) + принт», а «Cвитшот (трехниточный) + принт Размер: M Выбор технологии нанесения: Сублифлок А6 (+300₽): 1 A4 (+550₽): 1».
    если в корзине открыть код страницы, то это «продолжение» в названии товара подписано как variation. В массиве product такого не заметил, может смотрю плохо и не туда)
    При этом в шаблонном письме о заказе все эти детали передаются.

    • Add-ons are added in order as meta by the «wc_add_order_item_meta» function. — вот что нашел по моему вопросу, может поможет ответить. Вариации товара добавлены плагином YITH Product Add-ons.

  17. Добрый день, стоит плагин woocommerce-product-addon, добавляет дополнительные свойства товара для заказа, как их перехватить и отправить в CRM, есть какие то методы. И еще как быть в общем с дополнительными полями в заказе.

  18. Добрый день, прописал ваш скрипт (простой Rest API), но в Битрикс новых лидов не появляется и WP тоже не выдаёт никаких ошибок.
    У меня сейчас в WooComerce чуть больше 250 заявок, часть завершена, часть в работе. Они все должны появиться в Битриксе? Через какое время обычно в CRM начинают поступать заявки после добавления вашего скрипта?

    • Добрый день,
      данный скрипт передает только те заявки, которые будут оставлены после внедрения скрипта.

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

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