FIX "KassaI && Heleket"

This commit is contained in:
Boris Kovalskii
2026-01-25 14:48:35 +10:00
committed by GitHub
parent fcb786399b
commit 78cbe1b0af
4 changed files with 27 additions and 79 deletions
+2 -2
View File
@@ -14,7 +14,7 @@ from logger import logger
from ..constants import ALLOWED_TEMP_PAYMENT_STATES
from .service import (
get_heleket_methods,
HELEKET_METHODS,
generate_heleket_payment_link,
process_callback_pay_heleket,
router as service_router,
@@ -75,7 +75,7 @@ async def handle_custom_amount_input_heleket(
)
return
enabled_methods = [m for m in get_heleket_methods() if m["enable"]]
enabled_methods = [m for m in HELEKET_METHODS.values() if m["enable"]]
if not enabled_methods:
await edit_or_send_message(
target_message=message,
+11 -32
View File
@@ -64,28 +64,9 @@ class ReplenishBalanceHeleket(StatesGroup):
entering_custom_amount = State()
def _is_heleket_enabled() -> bool:
try:
from core.bootstrap import PAYMENTS_CONFIG
return bool(PAYMENTS_CONFIG.get("HELEKET", PROVIDERS_ENABLED.get("HELEKET", False)))
except ImportError:
return bool(PROVIDERS_ENABLED.get("HELEKET", False))
def get_heleket_methods() -> list[dict]:
return [
{
"enable": _is_heleket_enabled(),
"currency": "USD",
"to_currency": None,
"name": "crypto",
"button": HELEKET,
"desc": HELEKET_CRYPTO_DESCRIPTION,
},
]
HELEKET_PAYMENT_METHODS = get_heleket_methods()
HELEKET_METHODS = {
"crypto": {"enable": PROVIDERS_ENABLED.get("HELEKET", False), "currency": "USD", "to_currency": None, "button": HELEKET, "desc": HELEKET_CRYPTO_DESCRIPTION},
}
async def process_callback_pay_heleket(
@@ -97,15 +78,13 @@ async def process_callback_pay_heleket(
await state.clear()
if not method_name:
methods = get_heleket_methods()
enabled_methods = [m["name"] for m in methods if m["enable"]]
enabled_methods = [name for name, m in HELEKET_METHODS.items() if m["enable"]]
if len(enabled_methods) == 1:
method_name = enabled_methods[0]
if method_name:
methods = get_heleket_methods()
method = next((m for m in methods if m["name"] == method_name and m["enable"]), None)
if not method:
method = HELEKET_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(
target_message=callback_query.message,
text="Ошибка: выбранный способ оплаты недоступен.",
@@ -139,10 +118,10 @@ async def process_callback_pay_heleket(
return
builder = InlineKeyboardBuilder()
for method in get_heleket_methods():
for name, method in HELEKET_METHODS.items():
if method["enable"]:
builder.row(
InlineKeyboardButton(text=method["button"], callback_data=f"heleket_method|{method['name']}")
InlineKeyboardButton(text=method["button"], callback_data=f"heleket_method|{name}")
)
builder.row(InlineKeyboardButton(text=BACK, callback_data="balance"))
@@ -165,7 +144,7 @@ async def process_callback_pay_heleket(
@router.callback_query(F.data.startswith("heleket_method|"))
async def process_method_selection(callback_query: types.CallbackQuery, state: FSMContext, session: AsyncSession):
method_name = callback_query.data.split("|")[1]
method = next((m for m in HELEKET_PAYMENT_METHODS if m["name"] == method_name), None)
method = HELEKET_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(
@@ -223,7 +202,7 @@ async def process_custom_amount_button(callback_query: types.CallbackQuery, stat
async def handle_custom_amount_input(message: types.Message, state: FSMContext, session: AsyncSession):
data = await state.get_data()
method_name = data.get("heleket_method")
method = next((m for m in HELEKET_PAYMENT_METHODS if m["name"] == method_name), None)
method = HELEKET_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(
@@ -302,7 +281,7 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F
return
method_name = "crypto"
method = next((m for m in HELEKET_PAYMENT_METHODS if m["name"] == method_name), None)
method = HELEKET_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(
+3 -6
View File
@@ -14,7 +14,7 @@ from logger import logger
from ..constants import ALLOWED_TEMP_PAYMENT_STATES
from .service import (
get_kassai_methods,
KASSAI_METHODS,
generate_kassai_payment_link,
process_callback_pay_kassai,
router as service_router,
@@ -104,11 +104,8 @@ async def _handle_custom_amount_input_kassai(
)
return
method = next(
(m for m in get_kassai_methods() if m["name"] == method_name and m["enable"]),
None,
)
if not method:
method = KASSAI_METHODS.get(method_name)
if not method or not method["enable"]:
method_label = "картами" if method_name == "cards" else "через СБП"
await edit_or_send_message(
target_message=message,
+11 -39
View File
@@ -64,34 +64,10 @@ class ReplenishBalanceKassaiState(StatesGroup):
entering_custom_amount = State()
def _is_kassai_enabled(provider: str) -> bool:
try:
from core.bootstrap import PAYMENTS_CONFIG
return bool(PAYMENTS_CONFIG.get(provider, PROVIDERS_ENABLED.get(provider, False)))
except ImportError:
return bool(PROVIDERS_ENABLED.get(provider, False))
def get_kassai_methods() -> list[dict]:
return [
{
"enable": _is_kassai_enabled("KASSAI_CARDS"),
"method": 36,
"name": "cards",
"button": KASSAI_CARDS,
"desc": KASSAI_CARDS_DESCRIPTION,
},
{
"enable": _is_kassai_enabled("KASSAI_SBP"),
"method": 44,
"name": "sbp",
"button": KASSAI_SBP,
"desc": KASSAI_SBP_DESCRIPTION,
},
]
KASSAI_PAYMENT_METHODS = get_kassai_methods()
KASSAI_METHODS = {
"cards": {"enable": PROVIDERS_ENABLED.get("KASSAI_CARDS", False), "method": 36, "button": KASSAI_CARDS, "desc": KASSAI_CARDS_DESCRIPTION},
"sbp": {"enable": PROVIDERS_ENABLED.get("KASSAI_SBP", False), "method": 44, "button": KASSAI_SBP, "desc": KASSAI_SBP_DESCRIPTION},
}
@router.callback_query(F.data == "pay_kassai")
@@ -108,12 +84,8 @@ async def process_callback_pay_kassai(
await state.clear()
if method_name:
methods = get_kassai_methods()
method = next(
(m for m in methods if m["name"] == method_name and m["enable"]),
None,
)
if not method:
method = KASSAI_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(
target_message=callback_query.message,
text="Ошибка: выбранный способ оплаты недоступен.",
@@ -147,12 +119,12 @@ async def process_callback_pay_kassai(
return
builder = InlineKeyboardBuilder()
for method in get_kassai_methods():
for name, method in KASSAI_METHODS.items():
if method["enable"]:
builder.row(
InlineKeyboardButton(
text=method["button"],
callback_data=f"kassai_method|{method['name']}",
callback_data=f"kassai_method|{name}",
)
)
builder.row(InlineKeyboardButton(text=BACK, callback_data="balance"))
@@ -182,7 +154,7 @@ async def process_callback_pay_kassai(
@router.callback_query(F.data.startswith("kassai_method|"))
async def process_method_selection(callback_query: types.CallbackQuery, state: FSMContext, session: AsyncSession):
method_name = callback_query.data.split("|")[1]
method = next((m for m in KASSAI_PAYMENT_METHODS if m["name"] == method_name), None)
method = KASSAI_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(
@@ -240,7 +212,7 @@ async def process_custom_amount_button(callback_query: types.CallbackQuery, stat
async def handle_custom_amount_input(message: types.Message, state: FSMContext, session: AsyncSession):
data = await state.get_data()
method_name = data.get("kassai_method")
method = next((m for m in KASSAI_PAYMENT_METHODS if m["name"] == method_name), None)
method = KASSAI_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(
@@ -329,7 +301,7 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F
return
method_name = "cards" if callback_query.data.startswith("kassai_cards") else "sbp"
method = next((m for m in KASSAI_PAYMENT_METHODS if m["name"] == method_name), None)
method = KASSAI_METHODS.get(method_name)
if not method or not method["enable"]:
await edit_or_send_message(