Задать вопрос
  • Как сделать валидацию на Telegram Mini App?

    @ilachev
    function validate_telegram_data($data, $secret) {
        $check_hash = $data['hash'];
        unset($data['hash']);
        ksort($data);
        
        // Формируем строку для проверки
        $data_check_string = '';
        foreach ($data as $key => $value) {
            $data_check_string .= $key . '=' . $value . '&';
        }
        $data_check_string = rtrim($data_check_string, '&'); // Удаляем последний '&'
    
        // Вычисляем секретный ключ
        $secret_key = hash_hmac('sha256', $secret, "WebAppData");
        // Вычисляем хэш
        $hash = hash_hmac('sha256', $data_check_string, $secret_key);
    
        $log_file = 'logs.txt';
        error_log('Data Check String: ' . $data_check_string . PHP_EOL, 3, $log_file);
        error_log('Secret Key: ' . $secret_key . PHP_EOL, 3, $log_file);
        error_log('Computed Hash: ' . $hash . PHP_EOL, 3, $log_file);
        error_log('Received Hash: ' . $check_hash . PHP_EOL, 3, $log_file);
    
        // Сравнение вычисленного хэша с полученным
        return hash_equals($hash, $check_hash);
    }


    попробуй так
    Ответ написан