Синхронизация свойств заказа с Битрикс24

Синхронизация свойств заказа с Битрикс24

В базовой синхронизации между Битрикс24 и интернет магазином на Битрикс есть возможность обмена заказами. Проблема в том, что по умолчанию обмениваются только базовые поля заказа, а все свойства остаются за кадром. Для того, чтобы передавать в заказ любую информацию, можно воспользоваться функционалом REST API.
Общая последовательность событий выглядит следующим образом: Создание заказа в ИМ -> Передача заказа в Битрикс24 -> Запрос по исходящему веб хуку обратно на сайт -> Получение данныx и передача их по входящему веб хуку в Б24
Разберем действия по шагам.

1. Создание ИСХОДЯЩЕГО веб хука в Битрикс24. Исходящий веб хук навешивается на какое-либо событие в Битрикс24, в нашем случае на Создание сделки (ONCRMDEALADD). В нем надо указать адрес на стороне сайта, на который данный веб хук будет обращаться.

Исходящий хук

2. Создание ВХОДЯЩЕГО веб хука. Он нам нужен для того, чтобы обновить сделку в Битрикс24.

Входящий хук

3. На стороне сайта нужно разместить скрипт, который будет обрабатывать информацию, которую нам отправляет Битрикс24. В нем мы должны проверить ключ веб хука, чтобы исключить сторонние запросы к скрипту.

4. Получаем требуемые данные, и с помощью метода crm.deal.update отправим их обратно в Битрикс24. Обратите внимание на ссылку REST API, там описано как подключать и настраивать функционал. Все, сделка обновлена.

Ниже приводим пример скрипта, который обрабатывает исходящий хук и вызывает входящий.

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if($_REQUEST['auth']['application_token'] == '**********************')    //проверка токена(у каждого свой)
{
    require($_SERVER["DOCUMENT_ROOT"] . "/local/crest/crest.php");
    //AddMessage2Log('$_REQUEST = '.print_r($_REQUEST, true),'');      
    $resultDeal = CRest::call(
        'crm.deal.get',                         //метод достает все данные по сделке из CRM Битрикс24
        [
            'id' => $_REQUEST["data"]["FIELDS"]["ID"]
    ]);
    //AddMessage2Log('$resultDeal = '.print_r($resultDeal, true),'');

    $resultDealUpd = CRest::call(
        'crm.deal.update',                     //метод обновляет сделку в Б24
        [
            'id' => $_REQUEST["data"]["FIELDS"]["ID"],
            'fields' => array("UF_CRM_1560333626" => $resultDeal["result"]["ORIGIN_ID"]),
            'params' => array("REGISTER_SONET_EVENT" => "N"),
    ]);

    //AddMessage2Log('$resultDealUpd = '.print_r($resultDealUpd, true),'');  
}

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");

  • 15.06.2019
Возврат к списку