Описание проекта: Telegram-бот для продажи цифровых товаров с интеграцией Google Sheets и Robokassa Краткое описание Это Telegram-бот, который позволяет продавать цифровые товары (например, коды активации, лицензии, ключи) напрямую через мессенджер. Бот интегрирован с
Google Sheets для хранения и выдачи кодов, а также с платёжной системой
Robokassa для автоматической обработки платежей. После успешной оплаты бот выдаёт пользователю соответствующее количество кодов.
Функциональность
- Интеграция с Google Sheets:
- Хранение кодов для каждого продукта в определённой строке и нескольких столбцах (A–J или больше).
- Поиск и выдача нужного количества кодов при покупке.
- Очистка использованных ячеек, чтобы коды не выдавались повторно.
- Интеграция с Robokassa:
- Генерация платёжной ссылки.
- Обработка уведомлений (ResultURL) после оплаты.
- Автоматическая проверка корректности подписи запроса для исключения мошенничества.
- Работа с Telegram API (через библиотеку PyTelegramBotAPI / Telebot):
- Реализация меню:
- Кнопка «Открыть магазин», ведущая в Web App.
- Кнопка «Договор оферты» для отправки файла пользователю.
- Хэндлеры для команд /start и /admin.
- Отдельные кнопки и сообщения для администратора (рассылка, выгрузка списка пользователей).
- Веб-интерфейс (Web App) для корзины:
- Пользователь может выбрать товары и их количество.
- Корзина передаёт данные боту через web_app_data.
- Обработка заказов и хранение данных:
- Сохранение заказов в локальных JSON-файлах (вместо полноценной базы данных).
- Хранение информации о пользователях (ID, username, покупки) и заказах (товары, суммы, статусы).
Технологии, которые использовались
- Язык программирования: Python
- Telegram Bot API: библиотека pyTelegramBotAPI (telebot)
- Google Sheets API: для чтения и обновления данных таблицы
- Robokassa: для приёма платежей
- Flask: для обработки вебхуков Robokassa (ResultURL)
- JSON: для локального хранения данных (пользователи, заказы)
- Docker (опционально): можно упаковать приложение для удобного развёртывания
Ключевые задачи, которые решались
- Безопасное хранение и выдача уникальных цифровых кодов.
Нужно было исключить повторную выдачу одного кода нескольким пользователям, а также гарантировать, что код доступен только после успешной оплаты. - Обработка различных статусов оплаты.
С помощью Robokassa бот получает уведомления об оплате и автоматически выдаёт коды. Проверка подписи защищает от поддельных запросов. - Удобный пользовательский интерфейс в Telegram.
Полноценный магазин в чат-боте с кнопками, встроенным Web App для выбора товаров и кнопкой «Оплатить».
Особенности реализации
- Данные кодов хранятся строками: каждая строка в Google Sheets соответствует одному product_id; в ячейках этой строки (столбцы A–J) хранятся коды.
- Выдача нескольких кодов: если пользователь покупает несколько единиц товара, бот последовательно выдаёт нужное количество доступных кодов, очищая ячейки в таблице.
- Удобство для пользователя: после успешной оплаты бот отправляет несколько сообщений:
- Благодарность за покупку
- Название товара
- Сам код (или несколько кодов), чтобы их было удобно копировать.
- Резервное хранение данных: информация о заказах и пользователях хранится в JSON-файлах, которые загружаются и сохраняются при каждом событии (например, создании заказа или обновлении покупок).
Роль в проекте
- Разработка архитектуры и логики взаимодействия с Google Sheets (автоматическая выдача и очистка ячеек).
- Интеграция с платежной системой Robokassa (генерация ссылки, проверка подписи, обработка уведомлений).
- Реализация бэкенда на Flask для приёма ResultURL.
- Настройка бота с помощью библиотеки telebot, включая разные хэндлеры (обработчики команд и текстовых сообщений), меню, кнопки, вложенный Web App.
- Тестирование на случайных входных данных, отладка ошибок и обработка некорректных сценариев (нехватка кодов, неверная подпись платежа и т. д.).
Результаты и преимущества
- Упрощённая модель электронной торговли: нет необходимости в сложной системе и хостинге для хранения кодов; Google Sheets достаточно, чтобы администрировать и пополнять коды.
- Автоматизация выдачи кодов: сводит к минимуму человеческий фактор при продаже цифровых товаров.
- Лёгкая интеграция и масштабирование: при необходимости можно перенести бота в Docker-контейнер и развернуть на любом сервере или хостинге.
- Безопасность: проверка подписи Robokassa и автоматическое обнуление кодов в Google Sheets после выдачи гарантируют отсутствие двойной выдачи.
Возможные направления развития
- Поддержка других платёжных систем (Stripe, PayPal и др.), если нужно расширить список платёжных методов.
- Поддержка реферальной программы или промокодов, чтобы привлекать больше покупателей.
- Отправка чеков или автоматическая интеграция с сервисами для фискализации (в некоторых странах обязательна).
- Связь с базой данных (например, PostgreSQL, MySQL), чтобы иметь более надёжное и масштабируемое решение вместо хранения данных в JSON-файлах.
Таким образом, проект демонстрирует навыки интеграции чат-бота с внешними сервисами (Google Sheets и платёжная система), умение работать с Telegram Bot API, а также навыки написания веб-сервера на Flask. Это решение упрощает процесс продажи цифровых продуктов и может легко масштабироваться для более крупных или сложных магазинов.