shopbot/bot/getters/payment.py
2024-12-24 21:08:03 +03:00

42 lines
2.1 KiB
Python

import logging
from typing import Dict, Any
from urllib.parse import urlparse, parse_qs
from aiogram_dialog import DialogManager
from bot.services import create_paylink_lolz, create_paylink_cryptobot
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)
return {"error": "Произошла ошибка при создании ссылки для оплаты Lolz. Пожалуйста, попробуйте позже."}
async def getter_amount_cryptobot(dialog_manager: DialogManager, **kwargs) -> Dict[str, Any]:
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)
return {"error": "Произошла ошибка при создании ссылки для оплаты через CryptoBot. Пожалуйста, проверьте настройки и попробуйте снова."}