$value) { $data[$key] = decodeUnicodeRecursive($value); } } elseif (is_string($data)) { $data = decodeUnicode($data); } return $data; } // Функция для логирования function logMessage($message) { $date = date('Y-m-d H:i:s'); file_put_contents('log.txt', "[$date] $message\n", FILE_APPEND); } // Функция для отправки уведомления в Telegram /*function sendToTelegram($message) { $chatId = '-4533691352'; $token = ''; $url = "https://api.telegram.org/bot$token/sendMessage"; $postFields = [ 'chat_id' => $chatId, 'text' => $message, 'parse_mode' => 'Markdown' ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); curl_exec($ch); curl_close($ch); }*/ // Функция для проверки и записи транзакций в JSON файл function recordTransaction($orderReference, $transactionStatus, $data) { $filename = 'transactions.json'; // Чтение существующих данных if (file_exists($filename)) { $existingData = json_decode(file_get_contents($filename), true); } else { $existingData = []; } // Проверка существования транзакции по orderReference и transactionStatus if (isset($existingData[$orderReference]) && $existingData[$orderReference] === $transactionStatus) { logMessage("Транзакция с orderReference $orderReference уже существует."); return false; // Транзакция уже записана } // Добавление новой транзакции $existingData[$orderReference] = $transactionStatus; file_put_contents($filename, json_encode($existingData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); logMessage("Записана новая транзакция: orderReference $orderReference, status $transactionStatus."); return true; // Новая транзакция записана } // Получение входных данных (например, через POST-запрос) $inputData = file_get_contents('php://input'); // Проверка наличия данных if (!$inputData) { logMessage('No input data provided'); echo json_encode(['error' => 'No input data provided']); exit; } // Преобразование данных из JSON-формата $decodedInput = json_decode($inputData, true); // Проверка корректности формата JSON if (json_last_error() !== JSON_ERROR_NONE) { logMessage('Invalid JSON format'); echo json_encode(['error' => 'Invalid JSON format']); exit; } // Рекурсивное преобразование всех строк с Unicode $decodedInput = decodeUnicodeRecursive($decodedInput); // Проверка на статус "Approved" if ($decodedInput['transactionStatus'] !== 'Approved') { logMessage('Транзакция не одобрена. Статус: ' . $decodedInput['transactionStatus']); exit; } // Получение необходимых данных для записи и отправки $orderReference = $decodedInput['orderReference']; $transactionStatus = $decodedInput['transactionStatus']; $amount = $decodedInput['amount']; $currency = $decodedInput['currency']; $email = $decodedInput['email']; $phone = $decodedInput['phone']; $clientName = decodeUnicode($decodedInput['clientName']); // Декодирование имени клиента // Проверяем наличие продуктов и берем первый из них $productName = isset($decodedInput['products'][0]['name']) ? decodeUnicode($decodedInput['products'][0]['name']) : 'Продукт не указан'; // Проверка и запись транзакции в JSON файл if (!recordTransaction($orderReference, $transactionStatus, $decodedInput)) { exit; // Транзакция уже записана, дальнейшие действия не нужны } // Формирование сообщения для отправки в Telegram /*$telegramMessage = "Новая транзакция:\n"; $telegramMessage .= "*Order Reference:* $orderReference\n"; $telegramMessage .= "*Transaction Status:* $transactionStatus\n"; $telegramMessage .= "*Amount:* $amount $currency\n"; $telegramMessage .= "*Email:* $email\n"; $telegramMessage .= "*Phone:* $phone\n"; $telegramMessage .= "*Client Name:* $clientName\n"; $telegramMessage .= "*Product Name:* $productName\n"; // Отправка уведомления в Telegram sendToTelegram($telegramMessage); // Логирование успешного уведомления logMessage("Уведомление отправлено в Telegram для транзакции $orderReference.");*/ // Отправка данных на вебхук 1 (Make) $webhookUrl1 = 'https://hook.eu2.make.com/58382y5mc3mqgr542k44yn14ub88hgfu'; $jsonData = json_encode($decodedInput, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); // Инициализация cURL для вебхука 1 $ch1 = curl_init($webhookUrl1); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch1, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json' ]); curl_setopt($ch1, CURLOPT_POST, true); curl_setopt($ch1, CURLOPT_POSTFIELDS, $jsonData); $response1 = curl_exec($ch1); // Проверка ошибок cURL для вебхука 1 if ($response1 === false) { $error = curl_error($ch1); logMessage("Ошибка при отправке данных на вебхук 1: $error"); } else { logMessage("Данные успешно отправлены на вебхук 1. Ответ: $response1"); } curl_close($ch1); // Отправка данных на вебхук 2 (Webhook.site) $webhookUrl2 = 'https://webhook.site/c9a0597f-0196-4f9a-8758-221691119fa7'; // Инициализация cURL для вебхука 2 $ch2 = curl_init($webhookUrl2); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch2, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json' ]); curl_setopt($ch2, CURLOPT_POST, true); curl_setopt($ch2, CURLOPT_POSTFIELDS, $jsonData); $response2 = curl_exec($ch2); // Проверка ошибок cURL для вебхука 2 if ($response2 === false) { $error = curl_error($ch2); logMessage("Ошибка при отправке данных на вебхук 2: $error"); } else { logMessage("Данные успешно отправлены на вебхук 2. Ответ: $response2"); } curl_close($ch2); // Печать итоговых данных для отладки echo $jsonData; ?>