from decimal import Decimal import uuid from typing import Dict, Any from yookassa import Configuration, Payment as YooPayment from tg_bot.config.settings import settings class YookassaClient: def __init__(self): Configuration.configure( account_id=settings.YOOKASSA_SHOP_ID, secret_key=settings.YOOKASSA_SECRET_KEY ) async def create_payment( self, amount: Decimal, description: str, user_id: int ) -> Dict[str, Any]: try: payment = YooPayment.create({ "amount": { "value": f"{amount:.2f}", "currency": "RUB" }, "payment_method_data": { "type": "bank_card" }, "confirmation": { "type": "redirect", "return_url": settings.YOOKASSA_RETURN_URL }, "capture": True, "description": description, "metadata": { "user_id": str(user_id), "telegram_payment": "true" }, "save_payment_method": False }) return { "id": payment.id, "status": payment.status, "confirmation_url": payment.confirmation.confirmation_url, "amount": payment.amount.value, "description": payment.description, "metadata": payment.metadata } except Exception as e: print(f"Error creating payment: {e}") raise yookassa_client = YookassaClient()