Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.
R50 8d45658bd62c76ee49d4121753ba1e31
Разработка ботов автоматизация

Telegram-бот для продажи цифровых товаров с интеграцией Google Sheets

Добавлено 05 янв 2025 в 11:29
Описание проекта: Telegram-бот для продажи цифровых товаров с интеграцией Google Sheets и Robokassa Краткое описание Это Telegram-бот, который позволяет продавать цифровые товары (например, коды активации, лицензии, ключи) напрямую через мессенджер. Бот интегрирован с Google Sheets для хранения и выдачи кодов, а также с платёжной системой Robokassa для автоматической обработки платежей. После успешной оплаты бот выдаёт пользователю соответствующее количество кодов.

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

E60bc238a8