Перейти к основному содержимому

Технические вопросы

Ответы по установке клиента, GraphQL API, настройкам проекта, безопасности, платежам и диагностике.

Установка и конфигурация клиента​

1. Где настраивается подключение клиента?​

Локальные параметры находятся в src/config.php: база данных, URL публичного API, cookie-домен, globalSalt и системные пути. Проектные настройки управляются в панели.

2. Нужно ли вручную редактировать проектные настройки на клиенте?​

Нет. Игровые серверы, меню, платежи, модули, визуальная тема и другие проектные параметры меняются в SaaS-панели и загружаются в клиент штатным механизмом.

3. Что такое globalSalt?​

Это уникальная соль конкретной установки для защиты CSRF/cookie-значений. Установщик создаёт её локально; между сайтами её не копируют.

4. Что делать, если ошибка говорит, что globalSalt required?​

Проверьте, что в src/config.php заполнен $config['globalSalt']. Для новой установки вернитесь в установщик; для действующего сайта не заменяйте значение без необходимости, чтобы не сбросить сессии.

5. Какие версии PHP и MySQL использовать?​

Используйте актуальные версии PHP и MySQL, соответствующие текущему релизу клиента и хостингу. Для локальной разработки в OpenServer используется MySQL 8.4.

6. Можно ли запускать клиент за Nginx?​

Да. Настройте rewrite на публичную точку входа и закройте прямой доступ к непубличным директориям, логам и временным файлам.

GraphQL API​

7. Как выполняется запрос к API?​

Все публичные вызовы идут методом POST на /graphql и содержат только documentId и variables.

{
"documentId": "me",
"variables": {}
}

8. Можно ли отправлять поле query?​

Нет. Публичные клиенты не отправляют произвольный GraphQL-документ. Используйте только документированные имена операций.

9. Какие заголовки обязательны?​

Минимально нужны Content-Type: application/json и X-Project-Context со значением identity.contextToken из актуальной конфигурации проекта. Для авторизованных операций добавьте Authorization: Bearer <sessionId>.

10. Как передать выбранный сервер?​

Авторизованный кабинет меняет сервер документом changeServer, после чего выбор хранится в серверной сессии. Публичные каталоги и целевые запросы передают variables.gameServerId; сервер должен принадлежать проекту из X-Project-Context.

11. Нужно ли передавать платформу?​

Нет. API определяет платформу и login server по выбранному серверу и конфигурации проекта.

12. Как получить сессию?​

Выполните login. В ответе придёт sessionId, который передаётся в Authorization.

13. Как работает восстановление пароля?​

Сначала вызовите sendPasswordRecoveryEmail, затем confirmPasswordRecoveryCode. Код восстановления одноразовый и действует только в рамках текущего проекта.

14. Почему getGameCredentials может требовать PIN?​

Просмотр игрового пароля - чувствительная операция. Если для проекта или пользователя включена PIN-защита, передайте pin вместе с accountLogin.

Безопасность​

15. Можно ли передавать секретные ключи в браузер?​

Нет. Браузерные запросы используют только публичный GraphQL API, сессию пользователя и публичный контекст проекта. Секреты интеграций, платежей и провайдеров не должны попадать в клиентский код.

16. Где хранить ключи платежей и провайдеров?​

В настройках проекта или защищённом хранилище, если оно подключено. Не храните их в шаблонах, JavaScript, URL, логах и публичных файлах.

17. Как логировать ошибки безопасно?​

Записывайте в журнал documentId, код ответа HTTP, категорию ошибки и X-Request-Id. Маскируйте email, токены, PIN, пароли, кошельки и платёжные реквизиты.

18. Что делать при подозрении на утечку ключа?​

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

Платежи​

19. Платёж создан, но не зачислен. Что проверить?​

Проверьте статус счёта, callback/webhook URL у агрегатора, валюту, сумму, выбранный проект и доступность сайта извне.

20. Что означает ошибка подписи платежа?​

Обычно это несовпадение секретного ключа, неверный merchant id, неправильная валюта или callback от другого профиля оплаты.

21. Можно ли использовать разные платежные настройки на серверах?​

Да. Проект может иметь общие платежные настройки и серверные переопределения, если это предусмотрено выбранным сценарием.

Игровые аккаунты и серверы​

22. Почему не отображаются персонажи?​

Проверьте выбранный в сессии сервер, привязку игрового аккаунта, подключение к игровому источнику данных и наличие персонажей на сервере.

23. Почему нельзя привязать игровой аккаунт?​

Возможные причины: неверный пароль, аккаунт уже привязан, выбран неправильный сервер, достигнут лимит аккаунтов или требуется PIN.

24. Почему пункт меню модуля не отображается?​

Проверьте, куплен ли модуль, включён ли он для проекта/сервера и разрешён ли пункт в настройках меню.

Аналитика и лаунчер​

25. Как работает веб-аналитика?​

Откройте Журнал -> Веб-аналитика: здесь показаны посещения, аудитория, скорость страниц, формы, нажатия и ошибки сайта. Поля и примеры всех вкладок описаны в руководстве.

26. Почему лаунчер или сайт не пишет аналитику?​

Для сайта проверьте основной адрес API, подключение проекта и выбранные даты отчёта. Отдельный адрес веб-аналитики не требуется. Блокировка сбора браузером и отсутствие подходящих посещений также влияют на результат. Настройки и отчёты лаунчера проверяются отдельно.

Диагностика​

27. Что приложить к обращению в поддержку?​

Укажите домен, ID проекта, ID команды, сервер, время ошибки, шаги воспроизведения, скриншот, documentId и X-Request-Id, если запрос связан с API.

28. Как проверить, что документация соответствует API?​

Сверьте используемый documentId со справочником API и проверьте пример тела запроса в разделе конкретной операции.

29. Что делать, если после переноса сайта недоступны обновления?​

Проверьте, была ли перенесена папка internal_data. Если служебная идентификация установки потеряна, отзовите старую установку в карточке проекта, создайте новый одноразовый код и повторно подключите сайт через локальную админку клиента. Пользовательские данные и текущая версия сайта при этом не удаляются.