• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Передача данных в CRM

sx11

Новичок
Доброго времени суток уважаемые посетители данного форума. Буду рад если сможете мне помочь с моим вопросом.

Есть интернет-магазин, в котором нужно настроить передачу параметра через оформление заказа. Т.е пользователь добавляет товар в корзину, нажимает кнопку "Оформить заказ", после чего в CRM улетает, что есть новый заказ на артикул данного товара.

Есть код, который как пример, предлагают в поддержке данной CRM.

PHP:
<?php
$userName = "admin"; //логин пользователя от которого будет запущен процесс
$password =""; //пароль пользователя от которого будет запущен процесс
$token = "6e8e72fb-0178-4d8c-a84d-d354debe4de9"; //токен процесса
$instanceName = $_POST[’company’]; //название экземпляра процесса
$data = new stdClass();
$data->Items = new stdClass();
$data->Items->WebDataItem = array(); // Формируем массив контекстных переменных.
$data->Items->WebDataItem[0] = array("Name"=>"NazvanieOrganizacii", "Value"=>$_POST[’company’]);
$data->Items->WebDataItem[1] = array("Name"=>"FIOKontaktnogoLica", "Value"=>$_POST[’fio’]);
$data->Items->WebDataItem[2] = array("Name"=>"VersiyaProgrammnogoProdukta", "Value"=>$_POST[’version’]);
$data->Items->WebDataItem[3] = array("Name"=>"KolichestvoLicenziy", "Value"=>$_POST[’licence’]);
$data->Items->WebDataItem[4] = array("Name"=>"TelefonKontaktnogoLica", "Value"=>$_POST[’phone’]);
$data->Items->WebDataItem[5] = array("Name"=>"Adres", "Value"=>$_POST[’adres’]);
 
// Массив параметров необходимых для запуска процесса
$parameters = array(
                    "userName"=>$userName,
                    "password"=>$password,
                    "token"=>$token,
                    "instanceName"=>$instanceName,
                    "data"=>$data);
 
if($_POST[’Run_Workflow’])
{
// Создание SOAP-клиента по WSDL
$client = new SoapClient("URL?WSDL", array("location"=>"URL"));
//Вызов метода Run для запуска экземпляра процесса
$client->Run($parameters);
echo "Спасибо за заказ! В ближайшее время с Вами свяжется наш специалист.";
}
?>

Я попробовал через вебхук, в funtions.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->get_total();
  $line_items = $order->get_items();
  foreach ( $line_items as $item ) {
    $product = $order->get_product_from_item( $item );
    $sku = $product->get_sku(); // артикул товара
 // Передаем информацию
    $userName = "wwe"; //логин пользователя от которого будет запущен процесс
    $password ="#AH%ss6a123}edH"; //пароль пользователя от которого будет запущен процесс
    $token = "4ffe1575-853d-49c9-89e2-60877b8btt4e"; //токен процесса
    $instanceName = $sku['sku']; //название экземпляра процесса
    $data = new stdClass();
    $data->Items = new stdClass();
    $data->Items->WebDataItem = array(); // Формируем массив контекстных переменных.
    $data->Items->WebDataItem[0] = array("Name"=>"sku", "Value"=>$sku['sku']);
// Массив параметров необходимых для запуска процесса
$parameters = array(
                    "userName"=>$userName,
                    "password"=>$password,
                    "token"=>$token,
                    "instanceName"=>$instanceName,
                    "data"=>$data);
if($_POST['Run_Workflow'])

// Создание SOAP-клиента по WSDL
$client = new SoapClient("http://flatserver.migal.ru:8000/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx?WSDL");
//Вызов метода Run для запуска экземпляра процесса
$client->Run($parameters);
}}

но это не сработало.

Может кто сможет мне помочь разобраться с этим вопросом.
 

northmule

Форумчанин
Доброго времени суток уважаемые посетители данного форума. Буду рад если сможете мне помочь с моим вопросом.

Есть интернет-магазин, в котором нужно настроить передачу параметра через оформление заказа. Т.е пользователь добавляет товар в корзину, нажимает кнопку "Оформить заказ", после чего в CRM улетает, что есть новый заказ на артикул данного товара.

Есть код, который как пример, предлагают в поддержке данной CRM.

PHP:
<?php
$userName = "admin"; //логин пользователя от которого будет запущен процесс
$password =""; //пароль пользователя от которого будет запущен процесс
$token = "6e8e72fb-0178-4d8c-a84d-d354debe4de9"; //токен процесса
$instanceName = $_POST[’company’]; //название экземпляра процесса
$data = new stdClass();
$data->Items = new stdClass();
$data->Items->WebDataItem = array(); // Формируем массив контекстных переменных.
$data->Items->WebDataItem[0] = array("Name"=>"NazvanieOrganizacii", "Value"=>$_POST[’company’]);
$data->Items->WebDataItem[1] = array("Name"=>"FIOKontaktnogoLica", "Value"=>$_POST[’fio’]);
$data->Items->WebDataItem[2] = array("Name"=>"VersiyaProgrammnogoProdukta", "Value"=>$_POST[’version’]);
$data->Items->WebDataItem[3] = array("Name"=>"KolichestvoLicenziy", "Value"=>$_POST[’licence’]);
$data->Items->WebDataItem[4] = array("Name"=>"TelefonKontaktnogoLica", "Value"=>$_POST[’phone’]);
$data->Items->WebDataItem[5] = array("Name"=>"Adres", "Value"=>$_POST[’adres’]);

// Массив параметров необходимых для запуска процесса
$parameters = array(
                    "userName"=>$userName,
                    "password"=>$password,
                    "token"=>$token,
                    "instanceName"=>$instanceName,
                    "data"=>$data);

if($_POST[’Run_Workflow’])
{
// Создание SOAP-клиента по WSDL
$client = new SoapClient("URL?WSDL", array("location"=>"URL"));
//Вызов метода Run для запуска экземпляра процесса
$client->Run($parameters);
echo "Спасибо за заказ! В ближайшее время с Вами свяжется наш специалист.";
}
?>

Я попробовал через вебхук, в funtions.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->get_total();
  $line_items = $order->get_items();
  foreach ( $line_items as $item ) {
    $product = $order->get_product_from_item( $item );
    $sku = $product->get_sku(); // артикул товара
// Передаем информацию
    $userName = "wwe"; //логин пользователя от которого будет запущен процесс
    $password ="#AH%ss6a123}edH"; //пароль пользователя от которого будет запущен процесс
    $token = "4ffe1575-853d-49c9-89e2-60877b8btt4e"; //токен процесса
    $instanceName = $sku['sku']; //название экземпляра процесса
    $data = new stdClass();
    $data->Items = new stdClass();
    $data->Items->WebDataItem = array(); // Формируем массив контекстных переменных.
    $data->Items->WebDataItem[0] = array("Name"=>"sku", "Value"=>$sku['sku']);
// Массив параметров необходимых для запуска процесса
$parameters = array(
                    "userName"=>$userName,
                    "password"=>$password,
                    "token"=>$token,
                    "instanceName"=>$instanceName,
                    "data"=>$data);
if($_POST['Run_Workflow'])

// Создание SOAP-клиента по WSDL
$client = new SoapClient("http://flatserver.migal.ru:8000/Modules/EleWise.ELMA.Workflow.Processes.Web/WFPWebService.asmx?WSDL");
//Вызов метода Run для запуска экземпляра процесса
$client->Run($parameters);
}}

но это не сработало.

Может кто сможет мне помочь разобраться с этим вопросом.
Задача стоит именно в момент создания заказа отправлять данные?
 

northmule

Форумчанин
В туториале на сайте crmки его приводят как рабочий https://www.elma-bpm.ru/KB/article-5806.html
Всё таки вам нужно протестировать код отдельно. Для этого создайте либо отдельную страницу либо отдельную функцию, которая будет срабатывать при наличие GET параметра в запросе к сайту. Когда убедитесь что код работчий, прикрепите эту функцию к хуку по созданию заказа:
К примеру есть два хука которые возникают при создании заказа
woocommerce_new_order
или
woocommerce_checkout_update_order_meta //Возникает когда заказ сохранён с всеми его сущностями

Пример вызова будет такой:

add_action('woocommerce_new_order','ТУТ_ВАША_ФУНКЦИЯ', 10, 2);
10 - это порядок вызова
2- это количество аргументов

Ваша функция может иметь вид

ТУТ_ВАША_ФУНКЦИЯ ($order_id, $data) {

$order = new \WC_Order($order_id); //и из объекта заказа вы можете взять нужную вам информацию для CRM
}
 

sx11

Новичок
Всё таки вам нужно протестировать код отдельно. Для этого создайте либо отдельную страницу либо отдельную функцию, которая будет срабатывать при наличие GET параметра в запросе к сайту.

Спасибо за консультацию, к сожалению моих навыков не хватит для реализации) У вас будет возможность написать мне в личку или на email gusakov.d@ya.ru, есть предложение.
 

northmule

Форумчанин
Спасибо за консультацию, к сожалению моих навыков не хватит для реализации) У вас будет возможность написать мне в личку или на email gusakov.d@ya.ru, есть предложение.
К сожалению, сейчас предложения не принимаю. Зашёл вот на форум мозги проветрить от REST API и Bitrix :)
 

sx11

Новичок
Может есть на форуме кто-то, кто за денежку готов помочь с данной задачей?
 
Сверху Снизу