# Общие сведения

EasyPayments выполняет роль посредника между игровым сервером, исполняя на нем консольные команды, и EasyDonate, принимающим решения по итогам проделанной плагином работы.

Принцип работы плагина основан на постоянном и асинхронном общении с серверами EasyDonate и обмене данными с ними через интерфейс [EasyPayments API](#easypayments-api). Асинхронный метод позволяет не нагружать основной рабочий поток игрового сервера, выполняя необходимую логику в фоне, незаметно для пользователя.

### EasyPayments API

EasyPayments (EP) API — это закрытый интерфейс взаимодействия с EasyDonate, специально разработанный для плагина EasyPayments.

EP API выполняет две задачи:

1. Отправка списка [ивентов](https://easypayments.easydonate.ru/work/events) для реализации на игровом сервере.
2. Получение отчета о выполнении [ивентов](https://easypayments.easydonate.ru/work/events) плагином и принятие дальнейших решений по их обработке.

### Получение ивентов

Плагин, благодаря технологии LongPoll, устанавливает "долгие" соединения с EP API с целью получения событий, требующих завершения на игровом сервере. В случае срабатывания одного из [событий](https://easypayments.easydonate.ru/work/events), платформа принудительно закрывает соединение и возвращает список команд, которые необходимо исполнить. Такие соединения называются "циклами" и могут продолжаться до 30 секунд.

После завершения цикла запускается новый, аналогичный предыдущему.

{% hint style="success" %}
Плагин способен обрабатывать сразу несколько ивентов в течение одного цикла, благодаря чему никаких задержек в обработке событий не возникает.
{% endhint %}

### Отчет о выполнении ивентов

Когда EP API возвращает плагину список ивентов, происходит их исполнение на игровом сервере и отправка результата обратно на серверы EasyDonate, где в дальнейшем происходит проверка и выполнение завершающей логики.

{% hint style="info" %}
Результатом завершения события может быть обновление статуса и/или зачисление денежных средств на баланс владельца магазина.
{% endhint %}

{% hint style="warning" %}
Команды запускаются от имени виртуального пользователя *@EasyPayments*. Настоятельно не рекомендуется взаимодействовать с ним как с сущностью.
{% endhint %}
