У клиента сайт на друпале/уберкарте. Из интернет-магазина нужно отправлять запросы к 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.
)