Как получить 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.’)’;

  }

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


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

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

Войти через центр авторизации
Похожие вопросы