Цель проекта: Интернет-магазин для продажи игр с ботом, выдающим ключи для разных игровых сервисов, с админ-панелью, блокировкой/разблокировкой пользователей, подтверждением заказов, расширенной статистикой, уведомлениями в Telegram и локальной платежной системой.
Основные функции:
Каталог игр с фильтрами по сервисам (Steam, Epic, PSN и т.д.).
Корзина, оплата через локальную систему, выдача ключей через бота.
Личный кабинет.
Админ-панель (управление играми, ключами, пользователями, заказами, статистика).
Блокировка и разблокировка пользователей.
Подтверждение заказов.
Уведомления о статусе заказа в Telegram.
Расширенная статистика для админов.
Технологии:
Frontend: HTML, CSS, vanilla JavaScript.
Backend: PHP (чистый или с минимальными библиотеками).
База данных: MySQL (встроен в XAMPP).
Бот: Telegram Bot API (через PHP).
Платежная система: Локальная (например, ЮKassa, тестовый режим).
Email: PHP Mailer (локальная отправка через SMTP в XAMPP).
Статистика: Chart.js.
Среда: XAMPP (Apache, PHP, MySQL).
2. Проектирование
Структура сайта (в папке htdocs XAMPP):
index.php — главная страница.
catalog.php — каталог игр.
game.php — страница игры.
cart.php — корзина.
checkout.php — оформление заказа.
profile.php — личный кабинет.
admin/ — папка админ-панели:
admin/index.php — главная админ-панель.
admin/login.php — авторизация.
admin/games.php — управление играми.
admin/users.php — управление пользователями.
admin/orders.php — управление заказами.
admin/stats.php — статистика.
bot.php — обработка Telegram-бота.
База данных (MySQL в XAMPP):
Создание через phpMyAdmin:
Таблица games (id, title, description, price, service_id, images, keys).
Таблица users (id, email, name, is_blocked, telegram_id, orders).
Таблица orders (id, user_id, game_id, service_id, key, status, payment_status).
Таблица services (id, name: Steam, Epic и т.д.).
Таблица admins (id, login, password).
Таблица statistics (id, date, sales, users, game_id).
Логика бота:
Проверяет оплату и статус заказа.
Отправляет ключ на email и в Telegram.
Админ-панель:
Управление играми, ключами, заказами, пользователями, статистикой.
3. Разработка
Этап 1: Настройка XAMPP
Установить XAMPP (Apache, PHP, MySQL).
Поместить проект в C:\xampp\htdocs\shop (или аналогичную папку).
Запустить Apache и MySQL через XAMPP Control Panel.
Настроить базу данных через http://localhost/phpmyadmin.
Этап 2: Backend (PHP)
Подключение к MySQL:
php
Свернуть
Перенос
Копировать
$conn = mysqli_connect("localhost", "root", "", "shop_db");
if (!$conn) die("Ошибка: " . mysqli_connect_error());
Логика:
Каталог: SELECT * FROM games WHERE service_id = ?.
Корзина: хранение в $_SESSION.
Заказы: INSERT INTO orders (...) VALUES (...).
Блокировка: UPDATE users SET is_blocked = 1 WHERE id = ?.
Статистика: SELECT COUNT(*), SUM(price) FROM orders GROUP BY date.
Локальная платежная система:
Использование тестового режима ЮKassa (или другой):
Регистрация в системе, получение shop_id и secret_key.
Создание платежа:
php
Свернуть
Перенос
Копировать
require 'vendor/autoload.php'; // через Composer в XAMPP
use YooKassa\Client;
$client = new Client();
$client->setAuth('shop_id', 'secret_key');
$payment = $client->createPayment(
[
'amount' => ['value' => '100.00', 'currency' => 'RUB'],
'confirmation' => ['type' => 'redirect', 'return_url' => 'http://localhost/shop/success.php'],
'description' => 'Заказ #' . $order_id,
],
uniqid()
);
Webhook: настройка на http://localhost/shop/webhook.php (через ngrok для теста).
Email: настройка SMTP в php.ini XAMPP или PHP Mailer.
Этап 3: Frontend (HTML/CSS/JS + PHP)
Интерфейс:
index.php: подгрузка игр через PHP (<?php while($row = mysqli_fetch_assoc($result)) { ... } ?>).
catalog.php: фильтры через GET (?service=1) и JS.
checkout.php: форма с редиректом на платежную систему.
CSS в styles.css, JS в scripts.js.
Этап 4: Админ-панель (PHP)
admin/index.php:
Проверка сессии админа (if (!isset($_SESSION['admin'])) header('Location: login.php');).
Таблицы с данными из MySQL.
Управление пользователями: кнопки для UPDATE users SET is_blocked = 0/1.
Статистика: Chart.js с данными из PHP (json_encode).
Этап 5: Бот (Telegram + PHP)
Настройка бота через BotFather.
Webhook: https://api.telegram.org/bot<TOKEN>/setWebhook?url=http://<ngrok_url>/shop/bot.php.
bot.php:
php
Свернуть
Перенос
Копировать
$update = json_decode(file_get_contents("php://input"), true);
$chat_id = $update['message']['chat']['id'];
$message = "Ключ для игры отправлен!";
file_get_contents("https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=$chat_id&text=" . urlencode($message));
Интеграция с заказами.
Этап 6: Интеграция
Тестирование на http://localhost/shop.
4. Тестирование
Доступ: http://localhost/shop.
Проверка:
Каталог, корзина, оплата (тестовый режим).
Админ-панель: блокировка, статистика.
Бот: уведомления (ngrok для внешнего доступа).
Логи в C:\xampp\apache\logs.
5. Запуск
Для локального использования: оставить на XAMPP.
Для продакшна: перенести на хостинг с PHP/MySQL.