From c8911220643231066fd36a40611b1b8584eb9dc3 Mon Sep 17 00:00:00 2001 From: raufakchurin Date: Tue, 14 Oct 2025 10:31:55 +0500 Subject: [PATCH] before review --- .env.example | 1 - README.md | 1 - bot/handlers/user/subscription/payments.py | 2 +- bot/services/freekassa_service.py | 6 ++---- config/settings.py | 5 ++++- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index a046fe5..f440273 100644 --- a/.env.example +++ b/.env.example @@ -37,7 +37,6 @@ FREEKASSA_ENABLED=True # FREEKASSA_MERCHANT_ID=your_shop_id # Your shop ID in FreeKassa FREEKASSA_API_KEY=your_api_key # API key for REST requests FREEKASSA_SECOND_SECRET=your_second_secret # Secret word #2 (used to verify notifications) -FREEKASSA_CURRENCY=RUB # Default currency for orders FREEKASSA_PAYMENT_IP= # Public IP address reported to FreeKassa # CryptoBot Payment Gateway Configuration diff --git a/README.md b/README.md index 5601547..9785f83 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,6 @@ | `FREEKASSA_API_KEY` | API-ключ для запросов к FreeKassa REST API. | | `FREEKASSA_SECOND_SECRET` | Секретное слово №2 — используется для проверки уведомлений от FreeKassa. | | `FREEKASSA_PAYMENT_URL` | (Опционально, legacy SCI) Базовый URL платёжной формы FreeKassa. По умолчанию `https://pay.freekassa.ru/`. | - | `FREEKASSA_CURRENCY` | Код валюты платежа (например, `RUB`). | | `FREEKASSA_PAYMENT_IP` | Внешний IP вашего сервера, который будет передаваться в запрос оплаты. | | `STARS_ENABLED` | Включить/выключить Telegram Stars (`true`/`false`). | | `TRIBUTE_ENABLED`| Включить/выключить Tribute (`true`/`false`). | diff --git a/bot/handlers/user/subscription/payments.py b/bot/handlers/user/subscription/payments.py index 9e9b05f..83b217e 100644 --- a/bot/handlers/user/subscription/payments.py +++ b/bot/handlers/user/subscription/payments.py @@ -344,7 +344,7 @@ async def pay_fk_callback_handler( user_id=payment_record.user_id, months=months, amount=price_rub, - currency=settings.DEFAULT_CURRENCY_SYMBOL or "RUB", + currency=freekassa_service.default_currency, method_code=44, ip_address=freekassa_service.server_ip, extra_params={ diff --git a/bot/services/freekassa_service.py b/bot/services/freekassa_service.py index 76016b7..132c875 100644 --- a/bot/services/freekassa_service.py +++ b/bot/services/freekassa_service.py @@ -42,9 +42,7 @@ class FreeKassaService: self.shop_id: Optional[str] = settings.FREEKASSA_MERCHANT_ID self.api_key: Optional[str] = settings.FREEKASSA_API_KEY self.second_secret: Optional[str] = settings.FREEKASSA_SECOND_SECRET - self.default_currency: str = ( - settings.FREEKASSA_CURRENCY or settings.DEFAULT_CURRENCY_SYMBOL or "RUB" - ).upper() + self.default_currency: str = (settings.DEFAULT_CURRENCY_SYMBOL or "RUB").upper() self.server_ip: Optional[str] = settings.FREEKASSA_PAYMENT_IP self.api_base_url: str = "https://api.fk.life/v1" @@ -378,7 +376,7 @@ class FreeKassaService: await notification_service.notify_payment_received( user_id=payment.user_id, amount=float(payment.amount), - currency=self.currency or self.settings.DEFAULT_CURRENCY_SYMBOL, + currency=self.default_currency or self.settings.DEFAULT_CURRENCY_SYMBOL, months=months, payment_provider="freekassa", username=db_user.username if db_user else None, diff --git a/config/settings.py b/config/settings.py index b177561..198bede 100644 --- a/config/settings.py +++ b/config/settings.py @@ -49,7 +49,6 @@ class Settings(BaseSettings): FREEKASSA_FIRST_SECRET: Optional[str] = None FREEKASSA_SECOND_SECRET: Optional[str] = None FREEKASSA_PAYMENT_URL: str = Field(default="https://pay.freekassa.ru/") - FREEKASSA_CURRENCY: str = Field(default="RUB") FREEKASSA_API_KEY: Optional[str] = None FREEKASSA_PAYMENT_IP: Optional[str] = None @@ -400,6 +399,10 @@ def get_settings() -> Settings: logging.warning( "WARNING: FreeKassa second secret is not set. Incoming payment notifications cannot be verified." ) + if not _settings_instance.subscription_options: + logging.warning( + "CRITICAL: FreeKassa is enabled but no subscription prices are configured (RUB_PRICE_*). Users will not see payment buttons." + ) except ValidationError as e: logging.critical(