Skip to content

SDK ​

Тонкие помощники интегратора; публичные примеры — в SDK. Версия пакетов 0.3.0. Публикация в реестры — отдельное действие.

ПутьНазначение
sdk/js/playflow.jsБраузерные mount, progress и destroy; alias RetentionPlay, VERSION
sdk/php/PlayFlow.phpСерверные SessionTokens::issue и Webhook::verify
sdk/python/playflow.pyСерверные issue_session_token и verify_webhook

JS SDK не выдаёт токены: оставлен бросающий ошибку migration shim issueSessionToken() с указанием серверной замены. Параметр apiKey отклоняется до сети. PHP/Python запрашивают подписанный токен у платформы ключом проекта со scope session:issue; локальное подписание клиентским секретом не поддерживается.

Жизненный цикл ​

Каждый экземпляр удерживает собственный script и wrapper. Повторный mount ничего не дублирует. Destroy отменяет собственный progress-fetch и запросы loader, удаляет listeners, iframe и script, очищает ссылку на токен, сохраняя контейнер и соседний DOM. Уничтожение до загрузки script тоже окончательно: поздний loader проверяет маркер. Для нового mount нужен новый экземпляр. Контракт focus/handshake — в widget.

Progress использует Authorization и отклоняет HTTP-ошибки. Идентифицированный токен обновляет backend интегратора; после destroy/remount та же личность продолжает серверную партию. Автоматический refresh loader относится к анонимной сессии, а не к переданному токену.

Сборка и подпись ​

games/scripts/build-sdk.mjs минифицирует установленным Rolldown/Oxc без новой runtime-зависимости. Docker копирует минифицированный loader на штатный путь. Версионированные хэшированные файлы и gzip/Brotli идут через существующий asset-маршрут; стабильный /v1/widget.js требует revalidation и поддерживает ETag/304. Политика обновлений — versioning.

Webhook подписан HMAC-SHA256 по timestamp.raw_body; версия передана в v=. Оба заголовка Signature содержат одинаковую подпись. Секрет проекта выводится из WEBHOOK_SIGNING_MASTER_KEY, раскрывается владельцу отдельно и меняется при rotate. Каждая отправка заново читает текущую версию; receiver проверяет 300-секундный skew и сохраняет идемпотентность выдачи. Подробности — webhooks.

Internal & integration documentation