# Песочница

Песочница — отдельное окружение той же версии API для интеграции и тестов (ADR-0012). В ней работает всё:
мерчанты, программы, акции, чеки, баллы, вебхуки, журнал аудита. Но ничего не уходит реальным людям и деньгам.

## Доступ

- Хост: `https://sandbox.<хост API>` (рабочий — `https://<хост API>`).
- Учётные данные песочницы выдаются отдельно и отличаются маркером `test_` после типа:

  | Что | Рабочее окружение | Песочница |
  |---|---|---|
  | Ключ кассы (Runtime API) | `lk_<префикс>.<секрет>` | `lk_test_<префикс>.<секрет>` |
  | OAuth-клиент партнёра | `lc_…` / `lcs_…` | `lc_test_…` / `lcs_test_…` |
  | Токен партнёра | `lat_…` | `lat_test_…` |
  | Ключ мерчанта | `lm_<префикс>.<секрет>` | `lm_test_<префикс>.<секрет>` |

- Учётные данные другого окружения отвергаются сразу: 401 `environment_mismatch` (на точке токенов —
  `invalid_client` с пояснением). Перепутать окружения нельзя.
- Каждый ответ обоих окружений несёт заголовок `Loyal-Environment: live` или `sandbox`. Покажите плашку
  «ТЕСТОВЫЙ РЕЖИМ», когда пришло `sandbox`.

## Тестовые данные

- **Телефоны:** только +7 900 000-00-00 … +7 900 000-99-99. Они проходят обычную проверку номера на кассе.
- **Код подтверждения** тестового телефона всегда `000000`. SMS и звонки не отправляются никому. Неверный код,
  число попыток, время жизни кода и лимиты работают как в рабочем окружении.
- **E-mail:** только домены `example.com`, `example.net`, `example.org` (и их поддомены) и зоны `.test`,
  `.example`, `.invalid`, `.localhost`.
- Другие телефоны и e-mail получают 422 `sandbox_test_data_required`, в поле `field` — `phone` или `email`.
- Это правило — для участников программ. Учётные записи ваших сотрудников в кабинетах песочницы используют
  настоящие e-mail: на них приходят приглашения и ссылки сброса пароля.
- **Не вводите настоящие данные людей** в свободные поля (имена, даты рождения, номера карт, комментарии).
- В SDK есть помощники: `Testing\Sandbox::phone(1)` (PHP) и `sandbox.phone(1)` (TypeScript) дают тестовые номера,
  `Sandbox::CODE` — код `000000`.

## Сценарий целиком

1. Получите токен партнёра (`POST /api/management/v1/oauth/token`).
2. Создайте мерчанта, программу, тип баллов, документы согласий, правила, точку, кассу и ключ кассы — это делает
   быстрый старт SDK (`sdk/php/examples/quickstart.php`).
3. На кассе зарегистрируйте участника с тестовым телефоном: `members:send-code`, затем код `000000`, затем
   `POST /api/v1/members`.
4. Проведите чек со списанием баллов: расчёт, при необходимости код подтверждения списания (`000000`), регистрация,
   подтверждение.
5. Подключите вебхуки и проверьте подписи своим секретом песочницы.

## Лимиты и данные

- Лимиты ниже рабочих: 60 запросов в минуту на ключ кассы, 120 на мерчанта, 60 на учётные данные Management API,
  500 кодов подтверждения в сутки на мерчанта.
- Данные хранятся. Полная пересборка песочницы — не чаще раза в квартал, с уведомлением за 14 дней; партнёры и
  OAuth-клиенты при ней сохраняются. Чтобы начать с чистого листа, создайте нового мерчанта.
- Песочница без SLA и биллинга.
