49 lines
3.4 KiB
Markdown
49 lines
3.4 KiB
Markdown
# Интеграция Слёз Элуны
|
||
|
||
Слёзы Элуны хранятся в `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`.
|