3.4 KiB
Интеграция Слёз Элуны
Слёзы Элуны хранятся в 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.
Получение количества Слёз Элуны:
GET /api/game/balance/7
Authorization: Bearer TOKEN
Списание:
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.