# Генератор розыгрышей для магазина

Создавайте колесо, скретч-карту или коробку-сюрприз. Локальное демо или API магазина, без сервиса выдачи призов.

> Каноническая страница: https://elysiatools.com/ru/tools/store-promotion-giveaway-widget-generator

- **Категория:** Design

- **Ключевые слова:** Генератор розыгрышей для магазина, Колесо удачи, Скретч-карта, Коробки-сюрпризы

## Обзор

## Студия кампаний

Создавайте колесо, скретч-карту или коробку-сюрприз. Локальное демо или API магазина, без сервиса выдачи призов.

- Компонент: Колесо удачи / Скретч-карта / Коробки-сюрпризы
- Тема: Морской минимализм / Яркие сладости / Ретро-аркада / Ночное золото / Праздничная бумага / Садовый эскиз

### Источник результата

Локальный розыгрыш можно изменить: это не защищённая выдача призов. Акции в коде видны всем. Нет контроля запасов, личности и повторных попыток.

Сервер отвечает за авторизацию, шансы, запасы, допуск и идемпотентность. Не вводите секретные ключи. Предпросмотр не вызывает API.

### Подключение API магазина

Это контракт интерфейса, а не сервис розыгрышей Elysia. Реализуйте POST /api/draw на сервере с теми же ID кампании и призов, затем укажите адрес. Для реальных запросов скачайте файлы и разместите их на HTTPS; редактор только имитирует розыгрыш.

#### Запрос · POST application/json

Виджет отправляет только version, campaignId и случайный requestId из 32 шестнадцатеричных символов. ID клиента, шансы и API-ключи не отправляются. Сервер сам определяет участника; requestId не является авторизацией.

```json
{
  "version": 1,
  "campaignId": "summer-boutique",
  "requestId": "0123456789abcdef0123456789abcdef"
}
```

#### Успех · 200 application/json

Верните requestId без изменений. prizeId должен быть в списке, включая вариант без приза. Необязательны: receiptId (≤200 символов), claim.code (≤300), claim.url (HTTPS, ≤2048). Неиспользуемые поля пропускайте, не передавайте null. Без обёртки data/result, не более 16 KiB. Ошибка не означает проигрыш.

```json
{
  "requestId": "0123456789abcdef0123456789abcdef",
  "prizeId": "p1",
  "receiptId": "draw_2026_001",
  "claim": {
    "code": "SAMPLE-ONLY",
    "url": "https://shop.example/redeem"
  }
}
```

ID настроенных призов:

- `p1`: Скидка 10%
- `p2`: Бесплатная доставка
- `p3`: Подарок-сюрприз
- `p4`: В другой раз

Лучше разместить виджет и /api/draw на одном origin (схема, хост, порт), при необходимости через обратный прокси. Относительный путь считается от виджета, а не страницы магазина. credentials: same-origin отправляет только одноимённые по origin Cookie. Authorization и свои заголовки не настраиваются. Для другого origin нужны CORS для виджета и OPTIONS для POST + Content-Type; Cookie туда не отправляются. Статического HTML недостаточно для авторизованного розыгрыша; iframe может блокировать сторонние Cookie.

Сервер проверяет личность, Origin/CSRF, допуск, лимиты участия и частоту, использует свои вероятности и сохраняет результат с резервом товара в одной транзакции. Храните идемпотентность по участнику + campaignId + requestId и возвращайте прежний результат при повторе. Получение и сроки проверяйте на сервере. Данные браузера не доказывают право на приз; не публикуйте секреты.

Отклоняйте запросы кодом не 2xx (например, 401/403/409/429/503). Виджет показывает общее сообщение, не текст сервера. Тайм-аут 15 секунд; перенаправления, неверный JSON, requestId, призы и опасные ссылки отклоняются. Ручной повтор сохраняет ID лишь на этой странице; перезагрузка создаёт новый, поэтому лимиты должны храниться постоянно. Нет автоповтора или локального приза вместо ошибки.

Предпросмотр работает без готовых адресов API и хостинга. Заполните отмеченные поля для экспорта; при ошибке призов или стиля остаётся последний верный вид.

### Экспорт и вставка

HTML / CSS / JavaScript / JSON. Разместите файлы на своём HTTPS-сайте и вставьте URL. Инструмент не публикует и не размещает кампании.

Необязательные изображения загружаются с HTTPS-сайтов в браузере. Редактор не хранит изображения или API-ключи.

Равные секторы — только оформление; демо использует указанные шансы. В режиме API решает сервер.

## Входные данные

- **Конфигурация JSON** (textarea)

## Когда использовать

- Запуск маркетинговой акции в интернет-магазине с интерактивом в виде колеса фортуны или скретч-карты.
- Создание локального прототипа промо-игры для быстрого согласования дизайна и анимации без развертывания бэкенда.
- Подключение защищенного серверного розыгрыша подарков и скидочных купонов через собственный эндпоинт POST /api/draw.

## Как это работает

- Задайте параметры кампании в формате JSON: тип механики (колесо, скретч-карта, коробка-сюрприз), визуальную тему, цвета и список призов.
- Выберите режим работы: локальная симуляция со статическими вероятностями или интеграция с серверным API магазина.
- Проверьте внешний вид и интерактивные анимации во встроенном окне предпросмотра.
- Экспортируйте сгенерированные файлы HTML, CSS, JavaScript и JSON для размещения на своем HTTPS-сервере.

## Сценарии использования

- Геймификация сезонной распродажи в интернет-магазине с выдачей промокодов на скидку или бесплатную доставку.
- Прототипирование и демонстрация виджетов вовлечения для маркетинговых презентаций в локальном режиме без бэкенда.
- Интеграция промо-виджета в существующую систему лояльности с серверной проверкой лимитов участия и остатков призов.

## Частые вопросы

### Безопасен ли локальный режим розыгрыша для выдачи реальных призов?

Нет, локальный режим предназначен только для демонстрации: призы и логика в коде видны пользователям и могут быть изменены в браузере.

### Какие данные виджет отправляет на сервер в режиме API?

Виджет отправляет JSON с полями version, campaignId и сгенерированным случайным 32-значным requestId без персональных данных или ключей.

### Что должен возвращать эндпоинт POST /api/draw при успешном запросе?

Сервер возвращает статус 200 и JSON с исходным requestId, идентификатором приза prizeId и опциональными receiptId и claim.

### Где сохраняются загружаемые изображения и секретные ключи?

Инструмент не хранит изображения или ключи; внешние изображения запрашиваются браузером по HTTPS, а секретные ключи на клиенте не используются.

### Предоставляет ли генератор хостинг для созданных кампаний?

Нет, генератор создает файлы кода и конфигурации, которые вы самостоятельно размещаете на собственном веб-сайте с HTTPS.

## Связанные инструменты

- [Генератор каскада цветовых токенов](https://elysiatools.com/ru/tools/color-token-cascade-generator): Преобразует один основной hex-цвет в полную систему токенов с семантикой, CSS-переменными и JSON Style Dictionary
- [Палитра из изображения в design-токены](https://elysiatools.com/ru/tools/image-to-design-tokens): Извлекает доминирующие цвета из изображения методом k-средних и экспортирует их как CSS-переменные / SCSS / конфиг Tailwind / JSON-токены с именами и шкалой оттенков
- [Генератор Сниппетов API Запросов](https://elysiatools.com/ru/tools/api-request-code-snippet-generator): Генерирует cURL и сниппеты на популярных языках по URL, методу, заголовкам, query-параметрам и телу запроса
- [Планировщик миграции CSV в базу данных](https://elysiatools.com/ru/tools/csv-to-database-migration-planner): Выводит реляционную схему из CSV и генерирует CREATE TABLE и ALTER для PostgreSQL, MySQL, SQLite или SQL Server
- [Генератор PDF-плана тренировок](https://elysiatools.com/ru/tools/fitness-workout-pdf-generator): Создает печатный PDF-план тренировок из JSON или CSV с таблицами, ячейками прогресса и QR-кодами
- [Студия README профиля GitHub](https://elysiatools.com/ru/tools/github-profile-readme-studio): Сгенерируйте полный README профиля — баннер, плитки статистики, тепловую карту, 3D-скайлайн и карточки проектов — единожды запечённые в статичные SVG-ассеты с темами. Никаких сервисов-виджетов, способных упасть.
- [OpenAPI в Postman Collection](https://elysiatools.com/ru/tools/openapi-to-postman-collection): Превращает спецификацию OpenAPI 3.x или Swagger 2.0 (JSON/YAML) в импортируемую Postman Collection v2.1.0 с папками, переменными, auth и примерами ответов.
- [Генератор OpenAPI в TypeScript](https://elysiatools.com/ru/tools/openapi-to-typescript-generator): Преобразует спецификации OpenAPI или Swagger в формате JSON/YAML в типы TypeScript, параметры запросов и модели ответов с настраиваемым форматом вывода и стилем имен

## Примеры

- [Примеры Распределенного Трейсинга](https://elysiatools.com/ru/samples/distributed-tracing-samples): Комплексные примеры распределенного трейсинга с использованием Jaeger, OpenTelemetry и современных инструментов
- [Примеры AWS EventBridge](https://elysiatools.com/ru/samples/eventbridge-samples): Примеры AWS EventBridge включая шины событий, правила, цели, реестр схем, пользовательские события и межаккаунтную маршрутизацию событий для бессерверной событийно-ориентированной архитектуры
- [Примеры JWT](https://elysiatools.com/ru/samples/jwt-samples): Полные примеры JWT от базовой структуры токенов до продвинутых реализаций безопасности
- [PDF Примеры](https://elysiatools.com/ru/samples/pdf-samples): PDF примеры, созданные инструментами 2026-02-01..2026-02-10

## Связанные материалы

- [Проверка и передача виджета розыгрыша для собственного хостинга](https://elysiatools.com/ru/hubs/self-hosted-giveaway-widget-review-and-embed-handoff): Проверьте конфигурацию, примеры ответов API, читаемость и адаптивную вёрстку, затем передайте файлы виджета с результатами проверки в браузере.
