From bdb61613de378efab4de6de98fde2de3b554c548 Mon Sep 17 00:00:00 2001 From: Fringg Date: Wed, 18 Feb 2026 09:50:36 +0300 Subject: [PATCH] fix: add missing payment providers to payment_utils and fix {total_amount} formatting - Add freekassa, cloudpayments, kassa_ai to get_available_payment_methods(), is_payment_method_available(), get_payment_method_status(), and get_enabled_payment_methods_count() - Fix cart reminder message showing literal {total_amount} in platega, stars, mulenpay, wata by adding .format() call --- app/services/payment/mulenpay.py | 2 +- app/services/payment/platega.py | 2 +- app/services/payment/stars.py | 2 +- app/services/payment/wata.py | 2 +- app/utils/payment_utils.py | 51 ++++++++++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 4 deletions(-) diff --git a/app/services/payment/mulenpay.py b/app/services/payment/mulenpay.py index a50a91b5..2f628a19 100644 --- a/app/services/payment/mulenpay.py +++ b/app/services/payment/mulenpay.py @@ -380,7 +380,7 @@ class MulenPayPaymentMixin: 'BALANCE_TOPUP_CART_REMINDER_DETAILED', 'πŸ›’ Π£ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ Π·Π°ΠΊΠ°Π·.\n\n' 'Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.', - ) + ).format(total_amount=settings.format_price(payment.amount_kopeks)) # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ keyboard = types.InlineKeyboardMarkup( diff --git a/app/services/payment/platega.py b/app/services/payment/platega.py index cb0a73ef..877871b4 100644 --- a/app/services/payment/platega.py +++ b/app/services/payment/platega.py @@ -471,7 +471,7 @@ class PlategaPaymentMixin: cart_message = texts.t( 'BALANCE_TOPUP_CART_REMINDER_DETAILED', 'πŸ›’ Π£ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ Π·Π°ΠΊΠ°Π·.\n\nΠ’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.', - ) + ).format(total_amount=settings.format_price(payment.amount_kopeks)) keyboard = types.InlineKeyboardMarkup( inline_keyboard=[ diff --git a/app/services/payment/stars.py b/app/services/payment/stars.py index 434f5ec2..ebdca15c 100644 --- a/app/services/payment/stars.py +++ b/app/services/payment/stars.py @@ -495,7 +495,7 @@ class TelegramStarsMixin: cart_message = texts.t( 'BALANCE_TOPUP_CART_REMINDER_DETAILED', 'πŸ›’ Π£ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ Π·Π°ΠΊΠ°Π·.\n\nΠ’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.', - ) + ).format(total_amount=settings.format_price(amount_kopeks)) keyboard = types.InlineKeyboardMarkup( inline_keyboard=[ diff --git a/app/services/payment/wata.py b/app/services/payment/wata.py index e00ee61d..846f121c 100644 --- a/app/services/payment/wata.py +++ b/app/services/payment/wata.py @@ -561,7 +561,7 @@ class WataPaymentMixin: cart_message = texts.t( 'BALANCE_TOPUP_CART_REMINDER_DETAILED', 'πŸ›’ Π£ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹ΠΉ Π·Π°ΠΊΠ°Π·.\n\nΠ’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.', - ) + ).format(total_amount=settings.format_price(payment.amount_kopeks)) keyboard = types.InlineKeyboardMarkup( inline_keyboard=[ diff --git a/app/utils/payment_utils.py b/app/utils/payment_utils.py index bc7a45b8..bda21adc 100644 --- a/app/utils/payment_utils.py +++ b/app/utils/payment_utils.py @@ -114,6 +114,42 @@ def get_available_payment_methods() -> list[dict[str, str]]: } ) + if settings.is_cloudpayments_enabled(): + cloudpayments_name = settings.get_cloudpayments_display_name() + methods.append( + { + 'id': 'cloudpayments', + 'name': 'Банковская ΠΊΠ°Ρ€Ρ‚Π°', + 'icon': 'πŸ’³', + 'description': f'Ρ‡Π΅Ρ€Π΅Π· {cloudpayments_name}', + 'callback': 'topup_cloudpayments', + } + ) + + if settings.is_freekassa_enabled(): + freekassa_name = settings.get_freekassa_display_name() + methods.append( + { + 'id': 'freekassa', + 'name': freekassa_name, + 'icon': 'πŸ’³', + 'description': f'Ρ‡Π΅Ρ€Π΅Π· {freekassa_name}', + 'callback': 'topup_freekassa', + } + ) + + if settings.is_kassa_ai_enabled(): + kassa_ai_name = settings.get_kassa_ai_display_name() + methods.append( + { + 'id': 'kassa_ai', + 'name': kassa_ai_name, + 'icon': 'πŸ’³', + 'description': f'Ρ‡Π΅Ρ€Π΅Π· {kassa_ai_name}', + 'callback': 'topup_kassa_ai', + } + ) + if settings.is_support_topup_enabled(): methods.append( { @@ -225,6 +261,12 @@ def is_payment_method_available(method_id: str) -> bool: return settings.is_heleket_enabled() if method_id == 'platega': return settings.is_platega_enabled() and bool(settings.get_platega_active_methods()) + if method_id == 'cloudpayments': + return settings.is_cloudpayments_enabled() + if method_id == 'freekassa': + return settings.is_freekassa_enabled() + if method_id == 'kassa_ai': + return settings.is_kassa_ai_enabled() if method_id == 'support': return settings.is_support_topup_enabled() return False @@ -244,6 +286,9 @@ def get_payment_method_status() -> dict[str, bool]: 'cryptobot': settings.is_cryptobot_enabled(), 'heleket': settings.is_heleket_enabled(), 'platega': settings.is_platega_enabled() and bool(settings.get_platega_active_methods()), + 'cloudpayments': settings.is_cloudpayments_enabled(), + 'freekassa': settings.is_freekassa_enabled(), + 'kassa_ai': settings.is_kassa_ai_enabled(), 'support': settings.is_support_topup_enabled(), } @@ -271,4 +316,10 @@ def get_enabled_payment_methods_count() -> int: count += 1 if settings.is_platega_enabled() and settings.get_platega_active_methods(): count += 1 + if settings.is_cloudpayments_enabled(): + count += 1 + if settings.is_freekassa_enabled(): + count += 1 + if settings.is_kassa_ai_enabled(): + count += 1 return count