Как получить id лида созданного через плагин WooCommerce(Интеграция wooCommerce с bitrix)?

Доброго времени суток, друзья программисты, у меня возникла такая проблема
Задача: Интегрировать плагин wooCommerce с битрикс 24, суть в том что при покупке юзера на сайте, плагин должен создавать лид в битрикс и заполнять поле "Товар".
Суть: Есть готовый скрипт, создающий лид в битрикс, все работает ОК, но мне нужно так же к лиду прикрепить нужный товар и проблема в том, что просто вписать в поле при создании не получиться, нужно воспользоваться методом - crm.lead.productrows.set, а что бы воспользоваться этим методом нужен id лида, и вопрос в том, как можно получить id созданного лида woocommerce-ом, для того что бы я мог хуком прикрепить товар к лиду
Буду очень благодарен!
Вот сам скрипт
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.’)’;

  }

}
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
вопрос в том, как можно получить id созданного лида


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

Войдите, чтобы написать ответ

Похожие вопросы