from aiogram import Router, F, types from aiogram.filters import Command from aiogram.types import LabeledPrice, PreCheckoutQuery, CallbackQuery router = Router() # Функция отправки инвойса (чтобы не дублировать код) async def send_donation_invoice(message: types.Message): await message.answer_invoice( title="Пожертвование", description="пожертвовать на развитие", payload="donation_payload", provider_token="", currency="XTR", prices=[LabeledPrice(label="Пожертвование", amount=10)], start_parameter="donation", allow_paid_broadcast=False, ) @router.message(Command("pay")) async def cmd_pay(message: types.Message): await send_donation_invoice(message) @router.callback_query(F.data == "donate_10_stars") async def on_donate_click(callback: CallbackQuery): await send_donation_invoice(callback.message) await callback.answer() # Обработчик pre_checkout_query (проверка перед оплатой) # Обработчик pre_checkout_query (проверка перед оплатой) @router.pre_checkout_query() async def pre_checkout_handler(pre_checkout_query: PreCheckoutQuery): await pre_checkout_query.answer(ok=True) # Обработчик успешной оплаты @router.message(F.successful_payment) async def success_payment_handler(message: types.Message): payment_info = message.successful_payment # Здесь можно добавить логику начисления дней подписки в БД await message.answer( f"✅ Оплата прошла успешно!\n" f"Сумма: {payment_info.total_amount} {payment_info.currency}\n" f"Спасибо за пожертвование!" )