Обновлён профиль и логика выбора способа оплаты
This commit is contained in:
@@ -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()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user