# Интеграция Слёз Элуны Слёзы Элуны хранятся в `acore_auth.account_balances`, поэтому сайт и игровой сервер используют один источник истины. Все движения валюты записываются в `acore_auth.balance_transactions`. Курс пополнения задаётся через `MOONWELL_TEARS_PER_RUBLE` и по умолчанию равен `10`: **1 рубль = 10 Слёз Элуны**. Суммы API игрового сервера и ручные операции администратора всегда указываются в Слёзах Элуны, а не в рублях. ## Robokassa В технических настройках магазина укажите: - ResultURL: `https://ВАШ-ДОМЕН/api/payments/robokassa/result`, метод POST; - SuccessURL: `https://ВАШ-ДОМЕН/payments/robokassa/success`; - FailURL: `https://ВАШ-ДОМЕН/payments/robokassa/fail`; - алгоритм подписи, совпадающий с `ROBOKASSA_HASH_ALGORITHM`. Доступны два независимых режима: - `ROBOKASSA_MODE=test` использует `ROBOKASSA_TEST_LOGIN`, `ROBOKASSA_TEST_PASSWORD1`, `ROBOKASSA_TEST_PASSWORD2` и передаёт `IsTest=1`; - `ROBOKASSA_MODE=production` использует отдельные `ROBOKASSA_PRODUCTION_*` значения и передаёт `IsTest=0`. Текущие старые переменные `ROBOKASSA_LOGIN`, `ROBOKASSA_PASSWORD1`, `ROBOKASSA_PASSWORD2` поддерживаются как тестовые для обратной совместимости. Перед боевым запуском заполните production-переменные, переключите `ROBOKASSA_MODE=production` и выполните `php artisan config:clear`. Режим сохраняется в каждом выставленном счёте. Поэтому отложенный тестовый callback продолжит проверяться тестовым Паролем №2 даже после переключения приложения в production. ## API игрового сервера Задайте длинный случайный `GAME_SERVER_BALANCE_API_TOKEN` и передавайте его как `Authorization: Bearer TOKEN`. Получение количества Слёз Элуны: ```http GET /api/game/balance/7 Authorization: Bearer TOKEN ``` Списание: ```http POST /api/game/balance/7/spend Authorization: Bearer TOKEN Content-Type: application/json {"amount":"25.50","idempotency_key":"shop-purchase-42","description":"Название предмета"} ``` `idempotency_key` должен быть уникальным для каждой игровой покупки. `amount` — количество списываемых Слёз Элуны. Повтор запроса с тем же ключом возвращает ту же операцию и не списывает валюту второй раз. Ответ `422` означает недостаточное количество или конфликт ключа; `401` — неверный серверный токен. После развёртывания выполните `php artisan migrate --force`. Миграция создаёт таблицы непосредственно в подключении `azerothcore_auth`.