Задать вопрос
  • Почему возникает ошибка 422 при получении ответа от сервера?

    Quadart
    @Quadart Автор вопроса
    Everything_is_bad, тооочно) спасибо

    P.S и все таки ответ пришел в from)

    2024-12-02 16:28:57,287 - DEBUG - Сырое тело запроса: status=success&invoice_id=E8ORDF9R&amount_crypto=28.34&currency=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&currency=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
    Написано
  • Почему возникает ошибка 422 при получении ответа от сервера?

    Quadart
    @Quadart Автор вопроса
    Everything_is_bad, да, сорян. Вот бляха муха. Ну не могу... Вот что то уперся в какой то угол и все.

    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
    Написано
  • Почему возникает ошибка 422 при получении ответа от сервера?

    Quadart
    @Quadart Автор вопроса
    Everything_is_bad, соответственно вроде это не. JSON, а все таки проблема, скорее всего, связана с тем, что данные отправляются в формате x-www-form-urlencoded
    Написано
  • Почему возникает ошибка 422 при получении ответа от сервера?

    Quadart
    @Quadart Автор вопроса
    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
    Написано
  • Почему возникает ошибка 422 при получении ответа от сервера?

    Quadart
    @Quadart Автор вопроса
    Переделал на JSON:

    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
    Написано
  • Как правильно разделить выделенный сервер на виртуальные?

    АртемЪ, ну допустим дешевле купить один выделенный и раздробить его(под разные задачи) чем несколько виртуалок.
    Написано
  • Можно ли подключить мой плагин ChatGPT4 по API?

    Quadart
    @Quadart Автор вопроса
    chepraov-dev, к сожалению нет. Вроде как данные плагины работают только в экосистеме OpenAi. Можно подключить(на гитабе видел) но с танцами и оооогромным бубном)
    Написано
  • В чем Проблема в постинге от имени бота в чате(telethon, aiogram)?

    Quadart
    @Quadart Автор вопроса
    febday, я не силён в программировании. Лишь пытаюсь запустить бота из паблике. А вернее чуть переделать его своими силами, методом тыка . Можете помочь?
    Написано
  • В чем Проблема в постинге от имени бота в чате(telethon, aiogram)?

    Quadart
    @Quadart Автор вопроса
    shurshur, бот написан не только на aiogram(2.25). Суть вопроса в том, что КАК обойти это?)
    Написано