diff --git a/handlers/profile.py b/handlers/profile.py index ce70e17..e99d32c 100644 --- a/handlers/profile.py +++ b/handlers/profile.py @@ -33,7 +33,12 @@ async def call_api(method, endpoint, data=None,base_url = BASE_URL_FASTAPI): try: async with aiohttp.ClientSession() as session: - async with session.request(method, url, json=data) as response: + async with session.request( + method, + url, + json=data, + headers={"Content-Type": "application/json"} + ) as response: logger.info( f"Получен ответ от {url}: статус {response.status}" ) @@ -250,8 +255,34 @@ async def method_ykassa_handler(callback: CallbackQuery): Обработчик оплаты через YooKassa. """ amount = callback.data.split("_")[-1] - data = {"user_id": callback.from_user.id, "amount": amount, "provider": "yookassa"} - result = await call_api("POST", "billing/payments/init", data,"http://billing:8000") + + # Формируем данные для отправки + data = { + "user_id": callback.from_user.id, + "amount": float(amount), # Преобразуем в float + "provider": "yookassa" + } + + logger.info(f"Отправка запроса на инициализацию платежа: {data}") + + # Отправляем POST запрос с JSON телом + result = await call_api("POST", "/billing/payments/init", data, "http://billing:8000") + + if result == "ERROR": + await callback.message.edit_text( + "❌ Произошла ошибка при создании платежа. Попробуйте позже." + ) + await callback.answer() + return + + # Проверяем успешность операции + if not result.get("success", False): + error_msg = result.get("error", "Неизвестная ошибка") + await callback.message.edit_text( + f"❌ Ошибка: {error_msg}" + ) + await callback.answer() + return payment_url = result.get("confirmation_url", "#") payment_id = result.get("payment_id", "") @@ -263,7 +294,15 @@ async def method_ykassa_handler(callback: CallbackQuery): f"➡️ Перейти к оплате\n\n" f"После оплаты нажмите кнопку 'Проверить оплату'", parse_mode="HTML", - disable_web_page_preview=True + disable_web_page_preview=True, + reply_markup=types.InlineKeyboardMarkup( + inline_keyboard=[[ + types.InlineKeyboardButton( + text="🔄 Проверить оплату", + callback_data=f"check_payment:{payment_id}" + )] + ] + ) ) await callback.answer() @@ -276,7 +315,7 @@ async def method_crypto_handler(callback: CallbackQuery): """ amount = callback.data.split("_")[-1] data = {"user_id": callback.from_user.id, "amount": amount, "provider": "cryptobot"} - result = await call_api("POST", "billing/payments/init", data,"http://billing:8000") + result = await call_api("POST", "billing/payments/init", data,"http://billing:8000/") payment_url = result.get("confirmation_url", "#") payment_id = result.get("payment_id", "")