2024-12-02 16:28:57,287 - DEBUG - Сырое тело запроса: status=success&invoice_id=E8ORDF9R&amount_crypto=28.34¤cy=USDT_TRC20&token=&invoice_info=uuid&invoice_info=created&invoice_info=address&invoice_info=currency&invoice_info=date_finished&invoice_info=expiry_date&invoice_info=side_commission&invoice_info=type_payments&invoice_info=amount&invoice_info=amount_&invoice_info=status&invoice_info=invoice_status&invoice_info=is_email_required&invoice_info=project&invoice_info=tx_list&invoice_info=amount_in_crypto&invoice_info=amount_in_fiat&invoice_info=amount_usd&invoice_info=amount_to_pay&invoice_info=amount_to_pay_usd&invoice_info=amount_paid&invoice_info=amount_paid_usd&invoice_info=fee&invoice_info=fee_usd&invoice_info=service_fee&invoice_info=service_fee_usd&invoice_info=received&invoice_info=received_usd&invoice_info=to_surcharge&invoice_info=to_surcharge_usd&invoice_info=total_rub&invoice_info=step&invoice_info=test_mode&invoice_info=type&invoice_info=aml_enabled&invoice_info=aml_side&invoice_info=aml_checks&invoice_info=links_invoice
INFO: 35.233.203.43:3072 - "POST /callback HTTP/1.1" 200 OK
2024-12-02 16:29:04,105 - DEBUG - Сырое тело запроса: status=success&invoice_id=43YA3UCD&amount_crypto=28.33¤cy=USDT_TRC20&token=&invoice_info=uuid&invoice_info=created&invoice_info=address&invoice_info=currency&invoice_info=date_finished&invoice_info=expiry_date&invoice_info=side_commission&invoice_info=type_payments&invoice_info=amount&invoice_info=amount_&invoice_info=status&invoice_info=invoice_status&invoice_info=is_email_required&invoice_info=project&invoice_info=tx_list&invoice_info=amount_in_crypto&invoice_info=amount_in_fiat&invoice_info=amount_usd&invoice_info=amount_to_pay&invoice_info=amount_to_pay_usd&invoice_info=amount_paid&invoice_info=amount_paid_usd&invoice_info=fee&invoice_info=fee_usd&invoice_info=service_fee&invoice_info=service_fee_usd&invoice_info=received&invoice_info=received_usd&invoice_info=to_surcharge&invoice_info=to_surcharge_usd&invoice_info=total_rub&invoice_info=step&invoice_info=test_mode&invoice_info=type&invoice_info=aml_enabled&invoice_info=aml_side&invoice_info=aml_checks&invoice_info=links_invoice
INFO: 35.233.203.43:3074 - "POST /callback HTTP/1.1" 200 OK
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import logging
# Создаем приложение FastAPI
api_app = FastAPI()
# Настройка логирования
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")
class CallbackData(BaseModel):
status: str
invoice_id: str
amount_crypto: float
currency: str
order_id: str
token: str
@api_app.post("/callback")
async def handle_callback(callback_data: CallbackData):
"""
Обработчик для входящих данных в формате JSON.
"""
try:
logging.debug(f"Полученные данные: {callback_data}")
# Обработка данных
if callback_data.status == "success":
logging.info(f"Успешная обработка платежа: Invoice ID={callback_data.invoice_id}, сумма={callback_data.amount_crypto} {callback_data.currency}")
else:
logging.warning(f"Платеж со статусом {callback_data.status} не обработан")
return {"message": f"Платеж со статусом {callback_data.status} обработан частично"}
return {"message": "Callback обработан успешно"}
except Exception as e:
logging.error(f"Ошибка при обработке callback: {str(e)}")
raise HTTPException(status_code=500, detail="Внутренняя ошибка сервера")
INFO: 35.233.203.43:3072 - "POST /callback HTTP/1.1" 422 Unprocessable Entity
INFO: 35.233.203.43:3072 - "POST /callback HTTP/1.1" 422 Unprocessable Entity
INFO: 35.233.203.43:3073 - "POST /callback HTTP/1.1" 422 Unprocessable Entity
INFO: 35.233.203.43:3072 - "POST /callback HTTP/1.1" 422 Unprocessable Entity
DEBUG:python_multipart.multipart:Calling on_field_name with data[977:989]
DEBUG:python_multipart.multipart:Calling on_field_data with data[990:1003]
DEBUG:python_multipart.multipart:Calling on_field_end with no data
DEBUG:python_multipart.multipart:Calling on_end with no data
INFO: 35.233.203.43:3074 - "POST /callback HTTP/1.1" 422 Unprocessable Entity
from fastapi import FastAPI, HTTPException, Request
from pydantic import BaseModel
import logging
# Создаем приложение FastAPI
api_app = FastAPI()
# Настройка логирования
logging.basicConfig(level=logging.INFO)
# Создаем Pydantic-модель для структуры JSON
class CallbackData(BaseModel):
status: str
invoice_id: str
amount_crypto: float
currency: str
order_id: str
token: str
@api_app.post("/callback")
async def handle_callback(callback_data: CallbackData):
"""
Обработчик для входящих JSON postback-уведомлений от CryptoCloud.
"""
try:
# Логируем входящие данные
logging.info(f"Callback получен: {callback_data}")
# Деструктурируем данные из модели
status = callback_data.status
invoice_id = callback_data.invoice_id
amount_crypto = callback_data.amount_crypto
currency = callback_data.currency
order_id = callback_data.order_id
token = callback_data.token
# Логика обработки
if status == "success":
logging.info(f"Успешная обработка платежа: Invoice ID={invoice_id}, сумма={amount_crypto} {currency}")
# Здесь добавьте вашу бизнес-логику, например, обновление баланса пользователя
else:
logging.warning(f"Платеж со статусом {status} не обработан")
return {"message": f"Платеж со статусом {status} обработан частично"}
# Возвращаем успешный ответ
return {"message": "Callback обработан успешно"}
except Exception as e:
logging.error(f"Ошибка при обработке callback: {str(e)}")
raise HTTPException(status_code=500, detail="Внутренняя ошибка сервера")
INFO: 35.233.203.43:3072 - "POST /callback HTTP/1.1" 422 Unprocessable Entity
Как задать правильный запрос в гугле?