# Формат ответа вебхука проверки полиса в n8n ## Рекомендуемый формат (для совместимости с PHP и n8n) ### Успешный ответ (полис найден и валиден): ```json { "success": true, "found": 1, "message": "Полис найден", "result": { "id": "35927", "voucher": "E50208-306083026", "insured_name": "SHAROV IURII", "tariff_code_basic": "STB2003", "tariff_code_other": "SPV2002", "insured_birth": "10.05.1974", "insured_from": "19.11.2025", "insured_to": "24.11.2025" } } ``` ### Полис не найден: ```json { "success": false, "found": 0, "message": "Полис не найден в базе данных", "result": null } ``` ### Полис найден, но тариф не подходит: ```json { "success": false, "found": 0, "message": "Ваш полис не включает покрытие задержки рейса", "result": null } ``` ## Использование в n8n ### Вариант 1: Использовать поле `found` для IF Node **IF Node условие:** ``` {{ $json.found }} === 1 ``` Или: ``` {{ $json.found }} == 1 ``` ### Вариант 2: Использовать поле `success` для IF Node **IF Node условие:** ``` {{ $json.success }} === true ``` ## Использование в PHP ### Текущий код (database.php) ожидает: ```php $response = json_decode($curl_response, true); if ($response['success'] === 'true' || $response['success'] === true) { // Полис валиден } ``` ### С новым форматом можно использовать: ```php $response = json_decode($curl_response, true); if (isset($response['found']) && $response['found'] == 1) { // Полис найден и валиден } else { // Полис не найден или не валиден $message = $response['message'] ?? 'Ошибка проверки полиса'; } ``` ## Структура полей | Поле | Тип | Описание | |------|-----|----------| | `success` | boolean | `true` если полис найден и валиден, `false` если нет | | `found` | integer | `1` если полис найден и валиден, `0` если нет (удобно для IF Node) | | `message` | string | Текстовое сообщение для пользователя | | `result` | object/null | Данные полиса из БД или `null` | ## Преимущества этого формата 1. **Совместимость с PHP**: поле `success` как в текущем коде 2. **Удобство для n8n**: поле `found` (1/0) для IF Node 3. **Информативность**: поле `message` для пользователя 4. **Данные**: поле `result` с полной информацией о полисе ## Пример workflow в n8n ``` Webhook (входящий запрос) → [Нормализация номера полиса] (Code Node) → [Проверка полиса в БД] (MySQL Node) → [Формирование ответа] (Code Node) ├─ IF: policy_found_and_valid === 1 │ ├─ Да → Формируем success: true, found: 1 │ └─ Нет → Формируем success: false, found: 0 → [Ответ вебхука] (Respond to Webhook Node) ``` ## Код для Code Node (формирование ответа) ```javascript // Получаем результат из MySQL Node const policyCheck = $input.item.json.policy_found_and_valid || 0; const policyData = $input.item.json; // данные из MySQL (если использовали with_data вариант) if (policyCheck === 1) { return { json: { success: true, found: 1, message: "Полис найден", result: policyData // данные полиса } }; } else { // Проверяем, был ли полис вообще найден const wasFound = policyData && policyData.id ? true : false; return { json: { success: false, found: 0, message: wasFound ? "Ваш полис не включает покрытие задержки рейса" : "Полис не найден в базе данных", result: null } }; } ```