Files
telegram_bot_vpn/bot/handlers/payments.py
2026-02-13 03:04:47 +05:00

47 lines
1.8 KiB
Python

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"Спасибо за пожертвование!"
)