Создаём Telegram-магазин на aiogram: от команды /start до первой оплаты
Сейчас Telegram — это не просто мессенджер. Это мини-приложения, маркетплейсы, платежи и полноценные магазины в одном боте.
Если ты предприниматель — можно продавать товары и услуги без сайта, прямо в Telegram.
Если ты разработчик — можно делать ботов, которые реально приносят пользу (и деньги 💸).
В этой статье покажу, как создать магазин-бота на Python и aiogram, начиная с команды /start и заканчивая приёмом первой оплаты. Данный код не является рабочим, а показывает, как изнутри выглядит примерная структура Telegram-бота. Вы можете сами создать подобных ботов по инструкции, которую выкладывал ранее в своем профиле!
📦 Что мы делаем?
Покажем клиенту товары
Добавим корзину
Получим оплату
Получим заказ в Telegram
🔧 Что нам нужно?
Python 3.10+
Библиотека aiogram (v3, потому что свежая и асинхронная)
Бот в Telegram и токен от @botfather
Подключённый платёжный провайдер (например, ЮKassa или Stripe)
📁 Структура проекта (упрощённо):
🏁 Шаг 1: Стартовая команда (main.py)
from aiogram import Bot, Dispatcher, types
from aiogram.types import Message
from handlers.catalog import catalog_router
from aiogram.fsm.storage.memory import MemoryStorage
import asyncio
TOKEN = "YOUR_BOT_TOKEN"
bot = Bot(token=TOKEN)
dp = Dispatcher(storage=MemoryStorage())
@dp.message(commands=["start"])
async def start(msg: Message):
await msg.answer("👋 Привет! Добро пожаловать в магазин спортивного питания.\nНапиши /catalog, чтобы посмотреть товары.")
async def main():
dp.include_router(catalog_router)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
🛒 Шаг 2: Каталог товаров с кнопками (handlers/catalog.py)
from aiogram import Router
from aiogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton
catalog_router = Router()
@Catalog_router.message(commands=["catalog"])
async def show_catalog(msg: Message):
kb = InlineKeyboardMarkup(
inline_keyboard=[
[
InlineKeyboardButton(text="Протеин 💪", callback_data="buy_protein")
],
[
InlineKeyboardButton(text="Аминокислоты ⚡", callback_data="buy_amino")
],
]
)
await msg.answer("Выбери товар:", reply_markup=kb)
💳 Шаг 3: Добавляем оплату (handlers/catalog.py)
1. Подключи Telegram Payments через @BotFather
Выбери Payment Provider (например, ЮKassa или Stripe), получи payment_token.
2. Код для кнопки оплаты:
from aiogram.types import LabeledPrice, PreCheckoutQuery, ShippingOption
from aiogram import F
from aiogram.types import CallbackQuery
PAY_TOKEN = "YOUR_PAYMENT_PROVIDER_TOKEN"
@catalog_router.callback_query(F.data == "buy_protein")
async def buy_protein(callback: CallbackQuery):
prices = [
LabeledPrice(label="Протеин", amount=1500_00)
] # 1500 рублей
await callback.bot.send_invoice(
chat_id=callback.from_user.id,
title="Протеин",
description="1 кг, вкус: шоколад",
payload="order_protein_001",
provider_token=PAY_TOKEN,
currency="RUB",
prices=prices,
start_parameter="protein-purchase",
)
await callback.answer()
@catalog_router.pre_checkout_query()
async def checkout(pre_checkout_query: PreCheckoutQuery):
await pre_checkout_query.answer(ok=True)
📬 Шаг 4: Обработка успешной оплаты (handlers/catalog.py)
from aiogram.types import Message, SuccessfulPayment
@catalog_router.message(F.successful_payment)
async def success(msg: Message):
await msg.answer("✅ Спасибо за покупку! Ваш заказ принят.")
📊 Результат
Теперь у тебя есть Telegram-магазин, который:
показывает каталог
даёт оплатить товар
присылает тебе уведомление
ничего не падает, не глючит, не требует 100 плагинов
💡 Что можно добавить дальше?
Базу товаров (SQLite, PostgreSQL, JSON)
Корзину с несколькими товарами
Админку (через FSM и Inline-кнопки)
Отправку заказа в Google Таблицы
Подключение CRM и аналитики
🧾 Вывод
Создание Telegram-магазина — это реально, работает и не требует сложных технологий.
А с aiogram на Python ты получаешь максимум контроля, минимум боли и полностью свой инструмент.

