JS-API витрины
Свой JavaScript (тарифы «База»/«Про», раздел Внешний вид → Продвинутая кастомизация) исполняется на витрине и имеет доступ к объекту window.RB.
Готовность приложения
Витрина загружает данные асинхронно. Дождись готовности перед работой с состоянием:
function main() {
// твой код — состояние уже загружено
console.log(RB.getState());
}
if (window.isAppReady) main();
else window.addEventListener('rb:ready', main);Состояние: RB.getState()
Возвращает снимок (копию) состояния витрины:
const { player, shop, products, servers } = RB.getState();| Поле | Описание |
|---|---|
player | Текущий игрок или null, если не авторизован |
shop | Конфиг магазина (имя, тема, ссылки, соцсети, бонусы) |
products | Массив товаров каталога |
servers | Массив серверов мониторинга |
Объект player:
| Поле | Описание |
|---|---|
steamid | SteamID64 |
name | Имя |
avatar | URL аватара |
balance | Баланс в копейках |
integrations.SteamIdSign | Подпись для проверки игрока во внешнем API |
События
Подпишись через RB.on(name, cb) (или window.addEventListener):
| Событие | Когда |
|---|---|
rb:ready | Витрина загружена и готова |
rb:player | Игрок загружен (detail.player) |
rb:route | Сменился раздел (detail.view: shop/wallet/purchases/page) |
rb:shop:rendered | Перерисована сетка товаров |
RB.on('rb:route', (e) => {
if (e.detail.view === 'shop') console.log('Открыт магазин');
});RB.on возвращает функцию отписки; есть и RB.off(name, cb).
SteamIdSign
Если показываешь данные из своего внешнего API и нужно убедиться, что запрос идёт от настоящего игрока — используй integrations.SteamIdSign. Подпись считается сервером по алгоритму:
SteamIdSign = SHA256(secretKey + "-" + steamId)где secretKey — ключ магазина (API-ключ плагина). Передавай подпись вместе с запросом в свой бэкенд и проверяй её там тем же алгоритмом — сам ключ при этом не раскрывается.
Конфигурация поведения витрины (число колонок, суммы пополнения и т.п.) — в статье Конфиг-переменные. Практические примеры — в Рецептах.