# Как перейти в боевой режим

> Порядок перехода из песочницы в боевой режим: предварительный чек-лист, переключение режима, замена ключа qp_test_ на qp_live_ и проверка первой реальной оплаты небольшой суммой.

## Коротко

Переход в боевой режим — четыре шага: пройти **чек-лист**, переключить режим в кабинете на **боевой**, заменить в коде ключ `qp_test_…` на `qp_live_…` и самому провести первую реальную оплату **небольшой суммой**. И главное, о чём забывают: **пробный период в 7 дней начинается именно здесь — с первого боевого счёта**, а не со дня регистрации.

## Предварительный чек-лист

Проверьте эти четыре пункта до переключения. Большинство проблем после перехода — это как раз пропущенный пункт из списка.

| Что | Где проверить | Как должно быть |
|---|---|---|
| **Кассир Kaspi активен** | Раздел [Кассиры Kaspi](https://qut.kz/app/kaspi/) | Хотя бы одна карточка активна, строки «Причина» нет |
| **Ключ боевой** | Интеграции → API-ключи | Ключ с префиксом `qp_live_`, нужные права выданы |
| **Адрес webhook публичный и по https** | Интеграции → Webhook | Реальный домен, `https://`, открыт без авторизации |
| **Тариф активен** | Раздел Тариф | Пробный или оплаченный тариф в активном состоянии |

Подробнее по каждому:

**Кассир.** В песочнице кассир был не нужен, поэтому многие его так и не подключили. В боевом режиме он обязателен: [Как подключить кассира Kaspi](/kb/ru/connect-cashier).

**Ключ.** Ключ `qp_test_` не создаст боевой счёт, а `qp_live_` не создаст счёт в песочнице. Так сделано намеренно, чтобы не списать реальные деньги случайно. Боевой ключ создаётся в разделе Интеграции и показывается целиком **только один раз** — скопируйте его сразу.

**Webhook.** В продакшене принимается только `https` и реальный домен: ни IP-адрес, ни временный адрес туннеля не подойдут. Адрес должен быть открыт без авторизации, а редирект на другой адрес не отслеживается. Подробнее: [Настройка вебхуков](/kb/ru/webhook-setup).

**Тариф.** Организация без активного тарифа боевой счёт не создаст. Если пробный период ещё не начинался, он включится вместе с первым боевым счётом.

## Переключение режима

Кабинет → **Настройки** → переключатель режима → **Боевой**. Действие доступно ролям developer и owner.

После переключения:

- Новые счета создаются с настоящим Kaspi QR, деньги идут по-настоящему
- Счета из песочницы не пропадают, остаются в списке, но вызвать для них `simulate` в боевом счёте уже нельзя
- Начинает считаться месячный лимит — счета песочницы в него не входили

## Замена ключа

Это единственное изменение в коде. Ни URL, ни эндпоинты, ни поля не меняются — меняется только значение заголовка `X-API-Key`.

```
X-API-Key: qp_test_…   →   X-API-Key: qp_live_…
```

Правильный порядок:

1. Создаёте в кабинете новый боевой ключ и выдаёте ему только нужные права
2. Кладёте ключ в переменную окружения **на сервере**. Не вписывайте в код и не коммитьте в репозиторий
3. Перезапускаете сервис
4. Тестовый ключ не удаляете — он останется для тестового окружения

Ключ должен жить только на сервере: не в коде, исполняемом в браузере, не внутри мобильного приложения (APK/IPA), не в публичном репозитории. Подробнее: [Безопасность интеграции](/kb/ru/security-checklist).

## Проверка первой реальной оплаты

Не ждите клиентов — проверьте сами. Небольшой суммой, 100–200 тенге достаточно.

1. Создаёте **боевой счёт** из кабинета или через API
2. Сканируете QR приложением Kaspi со своего телефона (не с того, где номер кассира!)
3. Оплачиваете
4. Проверяете:
   - Счёт в кабинете перешёл в `paid`
   - На ваш сервер пришёл вебхук `invoice.paid`
   - Заказ у вас в системе закрылся правильно
   - Деньги пришли на счёт вашего аккаунта Kaspi Pay
5. Возвращаете себе деньги: на странице счёта — **Возврат**

После оплаты вебхук обычно приходит в течение 5 секунд. Если прошло больше минуты — где-то ошибка: [Перешёл в боевой режим — не работает](/kb/ru/after-live-not-working).

## Пробный период стартует именно здесь

Это путают чаще всего, поэтому отдельным блоком.

- Пробный период — **7 дней, 50 счетов в сутки**
- Он стартует с **первого боевого счёта**
- Ни дата регистрации, ни день подключения кассира, ни день выпуска ключа его не запускают
- **Песочница пробный период не запускает.** Сколько угодно дней и счетов в песочнице — на пробный период это не влияет

Отсюда правильный порядок работ: доведите интеграцию до конца в песочнице и только потом переходите в боевой. Тогда 7 дней уйдут на реальные продажи, а не на отладку кода. Подробнее: [Пробный период](/kb/ru/trial-period).

## Сразу после перехода

- **Включите логи.** Пишите создание счетов и приём вебхуков — так причина любой проблемы находится за минуту.
- **Подключите Telegram-бота.** Об обрыве привязки кассира узнаете сразу.
- **Посмотрите суточную защиту.** Это не бизнес-лимит, а страховка от зациклившейся интеграции: [Тарифы и лимиты](/kb/ru/tariff-limits).
- **Не сносите песочницу.** Все последующие изменения сначала проверяются там.

Полный список: [Чек-лист выхода в прод](/kb/ru/going-live-checklist).

## Вопросы и ответы

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

**Будут ли счета из песочницы видны в боевом режиме?** Они останутся в списке, но реальными счетами не станут и в лимит не войдут.

**Меняется ли адрес webhook при переключении режима?** Нет. Адреса и секреты остаются прежними.

**Можно в одной организации одновременно создавать тестовые и боевые счета?** Режим счёта определяется типом ключа, а новый счёт создаётся в текущем режиме организации. Если нужно вести обе ветки параллельно, тест удобнее держать в [отдельной организации](/kb/ru/multiple-organizations).

**Можно проверить оплату телефоном с номером кассира?** Нет, на этом телефоне Kaspi Pay открывать нельзя — привязка оборвётся. Проверяйте с другого телефона.
