fix: CreateWebProject возвращает чистый JSON без BOM

-  CreateWebProject.php: возвращает массив (не json_encode)
-  CreateWebProject.php: ob_start/ob_end_clean для глушения warnings
-  Удалён closing tag ?> и лишние переносы
-  webservice.php: ob_clean() после includes (удаляет BOM)
-  Результат: чистый JSON без BOM и переносов
- 🎯 N8N теперь корректно парсит ответ

Связанные изменения:
- erv_platform: claim_id генерируется только в n8n
This commit is contained in:
Fedor
2025-11-01 16:53:20 +03:00
parent 901259f5b8
commit 746367606e
3 changed files with 17 additions and 6 deletions

Submodule erv_platform updated: 6b1979c93f...b06fdb731c

View File

@@ -26,17 +26,22 @@ vimport ('includes.runtime.LanguageHandler');
*/
function vtws_createwebproject($policy_number, $contact_id, $period_start = '', $period_end = '', $user = false) {
// ✅ Очищаем буфер вывода и подавляем warnings
ob_start();
$logstring = date("Y-m-d H:i:s").' '.json_encode($_REQUEST);
file_put_contents('logs/CreateWebProject.log', $logstring.PHP_EOL, FILE_APPEND);
// Проверка обязательных полей
if(empty($policy_number)){
ob_end_clean(); // Очищаем буфер перед exception
$logstring = date("Y-m-d H:i:s").' Не указано обязательное поле: policy_number (cf_1885)';
file_put_contents('logs/CreateWebProject.log', $logstring.PHP_EOL, FILE_APPEND);
throw new WebServiceException(WebServiceErrorCode::$INVALIDID, "Не указан номер полиса");
}
if(empty($contact_id)){
ob_end_clean(); // Очищаем буфер перед exception
$logstring = date("Y-m-d H:i:s").' Не указано обязательное поле: contact_id';
file_put_contents('logs/CreateWebProject.log', $logstring.PHP_EOL, FILE_APPEND);
throw new WebServiceException(WebServiceErrorCode::$INVALIDID, "Не указан ID контакта");
@@ -101,13 +106,14 @@ function vtws_createwebproject($policy_number, $contact_id, $period_start = '',
$logstring = date('Y-m-d H:i:s').' ✅ Создан новый Web Проект с id '.$output.PHP_EOL;
file_put_contents('logs/CreateWebProject.log', $logstring, FILE_APPEND);
} catch (WebServiceException $ex) {
ob_end_clean(); // Очищаем буфер перед exception
$logstring = date('Y-m-d H:i:s').' ❌ Ошибка создания: '.$ex->getMessage().PHP_EOL;
file_put_contents('logs/CreateWebProject.log', $logstring, FILE_APPEND);
throw $ex;
}
}
// Возвращаем JSON с флагом is_new
// Возвращаем массив с флагом is_new (vTiger сам сделает json_encode!)
$result = array(
'project_id' => $output,
'is_new' => $isNew
@@ -116,7 +122,8 @@ function vtws_createwebproject($policy_number, $contact_id, $period_start = '',
$logstring = date('Y-m-d H:i:s').' Return: '.json_encode($result).PHP_EOL;
file_put_contents('logs/CreateWebProject.log', $logstring, FILE_APPEND);
return json_encode($result);
}
?>
// ✅ Очищаем буфер (удаляем все warnings/notices)
ob_end_clean();
return $result; // ← Массив, НЕ json_encode!
}

View File

@@ -81,6 +81,7 @@
$state->result = $data;
unset($state->error);
$output = $operationManager->encode($state);
echo $output;
}
@@ -88,6 +89,9 @@
$logstring = date('Y-m-d H:i:s').' '.json_encode($_REQUEST).PHP_EOL;
file_put_contents('logs/webservice.log', $logstring, FILE_APPEND);
// ✅ Очищаем буфер от BOM, который мог появиться при загрузке include файлов
ob_clean();
$operation = vtws_getParameter($_REQUEST, "operation");
$operation = strtolower($operation);
$format = vtws_getParameter($_REQUEST, "format","json");