M
M
michnic2019-03-15 09:43:38
Drupal
michnic, 2019-03-15 09:43:38

How to use Bitrix24 REST API in Drupal?

У клиента сайт на друпале/уберкарте. Из интернет-магазина нужно отправлять запросы к API Битрикс24.
Я пользуюсь битриксовским методом crm.duplicate.findbycomm, в который из обязательных нужно передавать 1 строковый параметр type и 1 массив values. Что интересно, если первым в запросе идет type, то API Битрикс24 возвращает ошибку "не передан values", и наоборот, если первым в запросе идет массив values, то Битрикс24 ругается, что не передан type.
При этом вручную запросы проходят отлично, и мой код нормально работает с другого, к примеру, сайта.
Игрался с опциями curl прямо внутри скрипта, не помогло. Есть идеи? Код ниже:

Код запроса
<?php

executeRest(array('type' => 'PHONE', 'values' => array('55-58-88'), 'entity_type' => 'LEAD'));

function executeRest($params) {
  $queryUrl = 'https://XXX.bitrix24.ru/rest/161/XXX/crm.duplicate.findbycomm.json';
   $queryData = http_build_query($params);

  $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,
  ));

  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  curl_setopt($curl, CURLOPT_SSL_VERIFYSTATUS, false);

  $result = curl_exec($curl);
  $info = curl_getinfo($curl);

  curl_close($curl);
  
   print_r($info);
   print_r($result);
   print_r(json_decode($result, true));
}
?>

А вот что вижу на выходе
Array
(
    [url] => https://XXX.bitrix24.ru/rest/161/XXX/crm.duplicate.findbycomm.json
    [content_type] => application/json; charset=utf-8
    [http_code] => 400
    [header_size] => 932
    [request_size] => 239
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.229066
    [namelookup_time] => 0.0726
    [connect_time] => 0.074227
    [pretransfer_time] => 0.093496
    [size_upload] => 58
    [size_download] => 71
    [speed_download] => 309
    [speed_upload] => 253
    [download_content_length] => -1
    [upload_content_length] => 58
    [starttransfer_time] => 0.229016
    [redirect_time] => 0
)
{"error":"","error_description":"Communication values is not defined."}Array
(
    [error] => 
    [error_description] => Communication values is not defined.
)

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Andrey Savrasov, 2019-03-15
@alcorn

You need to transfer
And the address should be https://XXX.bitrix24.ru/rest/161/XXX/crm.duplicate... i.e. without .json
Do not forget to create a webhook on the Bitrix24 side with access to CRM

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question