FIX "KassaI && Heleket"
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user