Скрипт обрабатывает исходящий из Битрикс24 вебхук. По идентификатору сделки, берем ID заказа, далее получаем нужные свойства заказа и отправляем их входящим вебхуком в CRM Битрикс24
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule("sale");
function crmPost($token, $metod, $queryData)
{
$queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/'.$token.'/'.$metod;
// обращаемся к Битрикс24
$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);
return $result;
}
if($_REQUEST['auth']['application_token'] == '0o3i00000cb000q600000z0') //проверка токена(у каждого свой)
{
$token = 'токен входящего вебхука';
$queryData =array("ID" => $_REQUEST["data"]["FIELDS"]["ID"]);
$result = crmPost($token, "crm.deal.get", $queryData);
$result = json_decode($result, 1);
$resultProp = unserialize($result[result][ADDITIONAL_INFO]);
if (array_key_exists('error', $result)) {
echo "Ошибка при сохранении лида: ".$result['error_description']."
";
}
else
{
if(!empty($result[result][ORIGIN_ID]))
{
$arOrder = CSaleOrder::GetByID($result[result][ORIGIN_ID]);
$db_vals = CSaleOrderPropsValue::GetList(
array(),
array(
"ORDER_ID" => $result[result][ORIGIN_ID]
)
);
$adres = '';
$fio = '';
$id_deal = '';
while($arVals = $db_vals->Fetch())
{
if($arVals["CODE"] == "CITY")
{
$arVal = CSaleLocation::GetByID($arVals["VALUE"], "ru");
$adres = $arVal[COUNTRY_NAME].", ".$arVal[REGION_NAME].", ".$arVal[CITY_NAME];
}
if($arVals["CODE"] == "FIO")
{
$fio = $arVals["VALUE"];
}
if($arVals[ORDER_PROPS_ID] == 9)
{
$adres = $arVals["VALUE"].", ".$adres;
}
if($arVals[ORDER_PROPS_ID] == 10)
{
$id_deal = $arVals["VALUE"];
}
}
if(strlen($resultProp['АДРЕС ДОСТАВКИ'])>0){
$adres .= ", ".$resultProp['АДРЕС ДОСТАВКИ'];
}
// вебхук, отправляет данные по заказу в Б24
if(strlen($resultProp[DELIVERYSERVICE])>0)
{
$token = 'токен входящего вебхука';
$queryData = http_build_query(array(
"id" => $_REQUEST["data"]["FIELDS"]["ID"],
'fields' => array(
"UF_CRM____________" => $fio,
"UF_CRM____________" => $resultProp[DELIVERYSERVICE], // сл.доставки
"UF_CRM____________" => $adres, // адрес доставки
"UF_CRM____________" => $resultProp[PAYMENTSYSTEM], // Платежная система
"UF_CRM____________" => $resultProp[CUSTOMERCOMMENT]// Комментарий пользователя
),
'params' => array("")
//'params' => array("REGISTER_SONET_EVENT" => "Y")
));
$result = crmPost($token, "crm.deal.update", $queryData);
$result = json_decode($result, 1);
if(!intval($id_deal)>0)
{
$arFields = array(
"ORDER_ID" => $arOrder[ID],
"ORDER_PROPS_ID" => 10,
"NAME" => "ID сделки в CRM",
"CODE" => "DEALCRM",
"VALUE" => $_REQUEST["data"]["FIELDS"]["ID"]
);
CSaleOrderPropsValue::Add($arFields);
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/log_deal.txt",
"SHOP_ONE_CLICE ".date('d m o, H:i:s') . ' '.$_REQUEST["data"]["FIELDS"]["ID"]. ' - '.serialize($arFields).' '. PHP_EOL,
FILE_APPEND
);
}
}
}
}
}
Теги: Битрикс24, вебхук, crm.deal.update, crm.deal.add