Обновлён профиль и логика выбора способа оплаты

This commit is contained in:
unknown
2025-11-25 07:55:27 +03:00
parent c7ded9e499
commit 779f13b98e

View File

@@ -15,6 +15,7 @@ from keyboard.keyboards import (
confirm_popup_keyboard, confirm_popup_keyboard,
guide_keyboard, guide_keyboard,
balance_keyboard, balance_keyboard,
payment_methods_keyboard,
) )
locale.setlocale(locale.LC_TIME, "ru_RU.UTF-8") locale.setlocale(locale.LC_TIME, "ru_RU.UTF-8")
@@ -57,7 +58,7 @@ async def call_api(method, endpoint, data=None):
async def profile_callback_handler(callback: CallbackQuery): async def profile_callback_handler(callback: CallbackQuery):
""" """
Профиль пользователя. Профиль пользователя.
Логика работы с API сохранена, изменён только текст/визуал (как в профиле Михаила). Логика работы с API сохранена, изменён только текст/визуал.
""" """
try: try:
user_data = await call_api("GET", f"/user/{callback.from_user.id}") user_data = await call_api("GET", f"/user/{callback.from_user.id}")
@@ -78,7 +79,7 @@ async def profile_callback_handler(callback: CallbackQuery):
username = callback.from_user.username or "-" username = callback.from_user.username or "-"
balance = user_data.get("balance", 0) balance = user_data.get("balance", 0)
# Определяем статус подписки # Статус подписки: Активна / Нет активных
sub_status = "⚫ Нет активных" sub_status = "⚫ Нет активных"
if sub_data: if sub_data:
@@ -206,27 +207,65 @@ async def tranhist_callback_handler(callback: CallbackQuery):
@router.callback_query(lambda callback: callback.data.startswith("popup:")) @router.callback_query(lambda callback: callback.data.startswith("popup:"))
async def popup_confirm_callback_handler(callback: CallbackQuery): async def popup_confirm_callback_handler(callback: CallbackQuery):
""" """
Обработчик подтверждения пополнения баланса. После выбора суммы показываем варианты оплаты.
Реального списания пока нет — только выбор метода.
""" """
data = callback.data.split(":") try:
popup_info = data[1] data = callback.data.split(":")
result = await call_api( amount_str = data[1]
"POST", amount = int(float(amount_str))
f"/user/{callback.from_user.id}/balance/{float(popup_info)}", except Exception:
) await callback.message.answer("Некорректная сумма пополнения.")
if result == "ERROR":
await callback.message.answer(
"Произошла ошибка, попробуйте позже или свяжитесь с администрацией."
)
await callback.answer() await callback.answer()
return return
text = ( text = (
f"✅ Баланс пополнен на {popup_info} ₽. " f"💰 Сумма пополнения: {amount}\n\n"
"Спасибо, что остаёшься с Lark." "Выбери способ оплаты:"
) )
await callback.message.edit_text( await callback.message.edit_text(
text=text, reply_markup=confirm_popup_keyboard() text=text,
reply_markup=payment_methods_keyboard(amount),
)
await callback.answer()
@router.callback_query(lambda callback: callback.data.startswith("method_stars_"))
async def method_stars_handler(callback: CallbackQuery):
"""
Заглушка: оплата через Telegram Stars.
"""
amount = callback.data.split("_")[-1]
await callback.message.edit_text(
f"⭐ Оплата через Telegram Stars на {amount} ₽ пока в разработке.\n\n"
"Позже сюда подвяжем реальный платёж.",
)
await callback.answer()
@router.callback_query(lambda callback: callback.data.startswith("method_ykassa_"))
async def method_ykassa_handler(callback: CallbackQuery):
"""
Заглушка: оплата через YooKassa.
"""
amount = callback.data.split("_")[-1]
await callback.message.edit_text(
f"💵 Оплата через YooKassa на {amount} ₽ пока в разработке.\n\n"
"Функционал появится после настройки биллинга.",
)
await callback.answer()
@router.callback_query(lambda callback: callback.data.startswith("method_crypto_"))
async def method_crypto_handler(callback: CallbackQuery):
"""
Заглушка: оплата через CryptoBot.
"""
amount = callback.data.split("_")[-1]
await callback.message.edit_text(
f"🪙 Оплата через CryptoBot на {amount} ₽ пока в разработке.\n\n"
"Платёжный шлюз будет добавлен позже.",
) )
await callback.answer() await callback.answer()