shopbot/bot/getters/payment.py

49 lines
2.1 KiB
Python
Raw Normal View History

2024-12-24 18:08:03 +00:00
import logging
2024-12-25 01:30:33 +00:00
from typing import Any, Dict
from urllib.parse import parse_qs, urlparse
2024-12-24 18:08:03 +00:00
from aiogram_dialog import DialogManager
2024-12-25 01:30:33 +00:00
from shopbot.bot.services import create_paylink_cryptobot, create_paylink_lolz
2024-12-24 18:08:03 +00:00
async def getter_amount(dialog_manager: DialogManager, **kwargs) -> Dict[str, Any]:
dialog_manager.current_context().dialog_data.pop("pay_data", None)
count = dialog_manager.find("count").get_value()
try:
paylink = await create_paylink_lolz(amount=int(count))
parsed_url = urlparse(paylink)
query_params = parse_qs(parsed_url.query)
amount = query_params.get("amount", [None])[0]
comment = query_params.get("comment", [None])[0]
pay_data = {"paylink": paylink, "order_id": comment, "amount": amount}
dialog_manager.current_context().dialog_data["pay_data"] = pay_data
return pay_data
except Exception as e:
logging.error(f"Error creating Lolz paylink: {e}", exc_info=True)
2024-12-25 01:30:33 +00:00
return {
"error": "Произошла ошибка при создании ссылки для оплаты Lolz. Пожалуйста, попробуйте позже."
}
2024-12-24 18:08:03 +00:00
2024-12-25 01:30:33 +00:00
async def getter_amount_cryptobot(
dialog_manager: DialogManager, **kwargs
) -> Dict[str, Any]:
2024-12-24 18:08:03 +00:00
dialog_manager.current_context().dialog_data.pop("pay_data", None)
count = dialog_manager.find("count").get_value()
if not count:
return {"error": "Сумма не указана!"}
try:
paylink, invoice_id = await create_paylink_cryptobot(amount=int(count))
if not paylink:
return {"error": invoice_id}
pay_data = {"paylink": paylink, "order_id": invoice_id, "amount": count}
dialog_manager.current_context().dialog_data["pay_data"] = pay_data
return pay_data
except Exception as e:
logging.error(f"Error creating CryptoBot paylink: {e}", exc_info=True)
2024-12-25 01:30:33 +00:00
return {
"error": "Произошла ошибка при создании ссылки для оплаты через CryptoBot. Пожалуйста, проверьте настройки и попробуйте снова."
}