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", "")