> For the complete documentation index, see [llms.txt](https://tinyteam-1.gitbook.io/python-easydonateclient/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tinyteam-1.gitbook.io/python-easydonateclient/callbackapi-beta/rabota-s-callbackapi.md).

# Работа с CallBackApi

{% hint style="danger" %}
Внимание! Система не была полностью проверена. Возможны ошибки, сбои и т.д. На странице приведены примеры только с **дискордом**, так-как на нем все прекрасно работает. Не рекомендуется использовать **CallBackApi для сайтов (Только в отдельном файле, или потоке).**
{% endhint %}

Это работает таким образом: по сути, вы запускаете **"сайт"**, на который после оплаты **easydonate** отправляет данные о **платеже**.&#x20;

### **Код:**

```python
import EasyDonateClient

import disnake.ext

from disnake.ext import commands

import asyncio

intents = disnake.Intents(messages=True, guilds=True, message_content=True)

bot = commands.Bot(command_prefix=">", intents=intents)

bot.remove_command('help')

callback = EasyDonateClient.CallBackAPI(port=5000, debug=True)

@callback.on_payment_get()
async def on_payment(data):
    print(data)

async def run_callbackapi():
    import hypercorn.asyncio
    import hypercorn.config
    config = hypercorn.config.Config()
    config.bind = ["0.0.0.0:5000"]
    await hypercorn.asyncio.serve(callback.app, config)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.create_task(run_callbackapi())
    bot.run('Bot-Token')
```

Здесь мы запускаем **discord бота** и наш **сайт** в разных потоках, тем самым обеспечивая работу обоих библиотек. После получения POST на сайт, выполняется **async def on\_payment**, в котором вы можете прописать **обработчик платежа**.&#x20;

{% hint style="info" %}
Переменная **data** возвращается типом dict, поэтому не нужно использовать **json.loads()** \
\&#xNAN;**(Но это не точно)**
{% endhint %}

## Параметры класса

1. **port** - Порт, на котором необходимо запустить ваш сайт. (Обычно **5000**)
2. **debug** - Включать ли **debug** (Не рекомендуется отключать) (Обычно **True**)

{% hint style="warning" %}
**Easydonate** не сможет отправить **POST** запрос прямо на ваш айпи, вам нужно открыть доступ к вашему **"сайту".** Например, можно использовать **ngrok**. Подробнее можно узнать на сайте <https://dashboard.ngrok.com/>
{% endhint %}
