From 19dddb3cc051e2bce94baac0a280d4ca07bbedf3 Mon Sep 17 00:00:00 2001 From: gy9vin Date: Wed, 17 Sep 2025 11:26:25 +0300 Subject: [PATCH] changing the minimum and maximum amount for yookassa --- .env.example | 4 ++++ app/config.py | 2 ++ app/handlers/balance.py | 53 ++++++++++++++++++++++++++++++++++------- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index f8fc0f14..1675145e 100644 --- a/.env.example +++ b/.env.example @@ -191,6 +191,10 @@ YOOKASSA_WEBHOOK_PATH=/yookassa-webhook YOOKASSA_WEBHOOK_PORT=8082 YOOKASSA_WEBHOOK_SECRET=your_webhook_secret +# Лимиты сумм пополнения через YooKassa (в копейках) +YOOKASSA_MIN_AMOUNT_KOPEKS=5000 +YOOKASSA_MAX_AMOUNT_KOPEKS=1000000 + # ===== НАСТРОЙКИ ОПИСАНИЙ ПЛАТЕЖЕЙ ===== # Эти настройки позволяют изменить описания платежей, # чтобы избежать блокировок платежных систем diff --git a/app/config.py b/app/config.py index 77ac3e8e..19f9fd64 100644 --- a/app/config.py +++ b/app/config.py @@ -131,6 +131,8 @@ class Settings(BaseSettings): YOOKASSA_WEBHOOK_PATH: str = "/yookassa-webhook" YOOKASSA_WEBHOOK_PORT: int = 8082 YOOKASSA_WEBHOOK_SECRET: Optional[str] = None + YOOKASSA_MIN_AMOUNT_KOPEKS: int = 5000 + YOOKASSA_MAX_AMOUNT_KOPEKS: int = 1000000 PAYMENT_BALANCE_DESCRIPTION: str = "Пополнение баланса" PAYMENT_SUBSCRIPTION_DESCRIPTION: str = "Оплата подписки" PAYMENT_SERVICE_NAME: str = "Интернет-сервис" diff --git a/app/handlers/balance.py b/app/handlers/balance.py index 46279664..ee9cd630 100644 --- a/app/handlers/balance.py +++ b/app/handlers/balance.py @@ -210,9 +210,13 @@ async def start_yookassa_payment( await callback.answer("❌ Оплата картой через YooKassa временно недоступна", show_alert=True) return + # Получаем лимиты из настроек + min_amount_rub = settings.YOOKASSA_MIN_AMOUNT_KOPEKS / 100 + max_amount_rub = settings.YOOKASSA_MAX_AMOUNT_KOPEKS / 100 + await callback.message.edit_text( - "💳 Оплата банковской картой\n\n" - "Введите сумму для пополнения от 100 до 50,000 рублей:", + f"💳 Оплата банковской картой\n\n" + f"Введите сумму для пополнения от {min_amount_rub:.0f} до {max_amount_rub:,.0f} рублей:", reply_markup=get_back_keyboard(db_user.language), parse_mode="HTML" ) @@ -235,9 +239,13 @@ async def start_yookassa_sbp_payment( await callback.answer("❌ Оплата через СБП временно недоступна", show_alert=True) return + # Получаем лимиты из настроек + min_amount_rub = settings.YOOKASSA_MIN_AMOUNT_KOPEKS / 100 + max_amount_rub = settings.YOOKASSA_MAX_AMOUNT_KOPEKS / 100 + await callback.message.edit_text( - "🏦 Оплата через СБП\n\n" - "Введите сумму для пополнения от 100 до 50,000 рублей:", + f"🏦 Оплата через СБП\n\n" + f"Введите сумму для пополнения от {min_amount_rub:.0f} до {max_amount_rub:,.0f} рублей:", reply_markup=get_back_keyboard(db_user.language), parse_mode="HTML" ) @@ -349,6 +357,7 @@ async def process_topup_amount( try: amount_rubles = float(message.text.replace(',', '.')) + # Проверяем общие лимиты if amount_rubles < 1: await message.answer("Минимальная сумма пополнения: 1 ₽") return @@ -361,6 +370,18 @@ async def process_topup_amount( data = await state.get_data() payment_method = data.get("payment_method", "stars") + # Проверяем лимиты для YooKassa (если выбран этот метод) + if payment_method in ["yookassa", "yookassa_sbp"]: + if amount_kopeks < settings.YOOKASSA_MIN_AMOUNT_KOPEKS: + min_rubles = settings.YOOKASSA_MIN_AMOUNT_KOPEKS / 100 + await message.answer(f"❌ Минимальная сумма для оплаты через YooKassa: {min_rubles:.0f} ₽") + return + + if amount_kopeks > settings.YOOKASSA_MAX_AMOUNT_KOPEKS: + max_rubles = settings.YOOKASSA_MAX_AMOUNT_KOPEKS / 100 + await message.answer(f"❌ Максимальная сумма для оплаты через YooKassa: {max_rubles:,.0f} ₽".replace(',', ' ')) + return + if payment_method == "stars": await process_stars_payment_amount(message, db_user, amount_kopeks, state) elif payment_method == "yookassa": @@ -448,8 +469,15 @@ async def process_yookassa_payment_amount( await message.answer("❌ Оплата через YooKassa временно недоступна") return - if amount_kopeks < 10000: - await message.answer("❌ Минимальная сумма для оплаты картой: 100 ₽") + # Проверяем лимиты из настроек + if amount_kopeks < settings.YOOKASSA_MIN_AMOUNT_KOPEKS: + min_rubles = settings.YOOKASSA_MIN_AMOUNT_KOPEKS / 100 + await message.answer(f"❌ Минимальная сумма для оплаты картой: {min_rubles:.0f} ₽") + return + + if amount_kopeks > settings.YOOKASSA_MAX_AMOUNT_KOPEKS: + max_rubles = settings.YOOKASSA_MAX_AMOUNT_KOPEKS / 100 + await message.answer(f"❌ Максимальная сумма для оплаты картой: {max_rubles:,.0f} ₽".replace(',', ' ')) return try: @@ -531,9 +559,15 @@ async def process_yookassa_sbp_payment_amount( await message.answer("❌ Оплата через СБП временно недоступна") return - # Проверяем минимальную сумму оплаты - if amount_kopeks < 10000: # 100 рублей - await message.answer("❌ Минимальная сумма для оплаты через СБП: 100 ₽") + # Проверяем лимиты из настроек + if amount_kopeks < settings.YOOKASSA_MIN_AMOUNT_KOPEKS: + min_rubles = settings.YOOKASSA_MIN_AMOUNT_KOPEKS / 100 + await message.answer(f"❌ Минимальная сумма для оплаты через СБП: {min_rubles:.0f} ₽") + return + + if amount_kopeks > settings.YOOKASSA_MAX_AMOUNT_KOPEKS: + max_rubles = settings.YOOKASSA_MAX_AMOUNT_KOPEKS / 100 + await message.answer(f"❌ Максимальная сумма для оплаты через СБП: {max_rubles:,.0f} ₽".replace(',', ' ')) return try: @@ -714,6 +748,7 @@ async def process_cryptobot_payment_amount( amount_rubles = amount_kopeks / 100 + # Проверяем лимиты для CryptoBot (оставляем как есть, т.к. это отдельный метод) if amount_rubles < 100: await message.answer("Минимальная сумма пополнения: 100 ₽") return