# Аутентификация

Каждый запрос к `https://pay.egnetwork.ru/api/v1/*` подписывается секретным ключом сервиса в заголовке `Authorization`:

```http
Authorization: Bearer egn_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```

## Ключи

| Префикс | Режим | Что происходит |
|---|---|---|
| `egn_live_` | боевой | Реальные платежи через терминал Т-Банка |
| `egn_test_` | тестовый | Тестовый терминал Т-Банка или встроенный эмулятор. Деньги не списываются |

Ключ определяет и сервис, и режим. Платежи разных режимов изолированы: test-ключ не видит live-платежи и наоборот. Поле `livemode` в каждом объекте показывает режим.

- Ключ — 32 символа после префикса, храните его только на бэкенде (переменная окружения, secret manager). Никогда не отдавайте его в браузер или мобильное приложение.
- В базе EGN Pay хранится только SHA-256 хэш ключа, восстановить его нельзя — только перевыпустить.
- Перевыпуск (`rotate`) сразу отзывает предыдущий ключ этого режима.

## Проверка ключа

```bash
curl https://pay.egnetwork.ru/api/v1/me -H "Authorization: Bearer $EGN_PAY_KEY"
```

```json
{
  "object": "merchant",
  "id": "mch_3hJ9…",
  "name": "Emerald Games",
  "slug": "emerald",
  "livemode": false,
  "provider": "emulator",
  "webhook_url": "https://emerald.example/api/egn-pay/webhook",
  "allowed_return_hosts": ["emerald.example"]
}
```

`provider` — `tbank` (запросы идут в Т-Банк) или `emulator` (тестовый режим без тестового терминала).

## Ошибки аутентификации

| HTTP | `code` | Причина |
|---|---|---|
| 401 | `unauthorized` | Нет заголовка, неверный формат, ключ не найден или отозван |
| 403 | `merchant_disabled` | Сервис отключён администратором |
