# EGN Pay

EGN Pay — единый платёжный сервис экосистемы EGN. Ваш сервис создаёт платёж одним HTTP-запросом, получает ссылку `https://pay.egnetwork.ru/p/pay_…` и отправляет на неё пользователя. На странице оплаты пользователь видит сумму и QR-код СБП (на телефоне — кнопку «Оплатить в приложении банка»), при необходимости — кнопку оплаты картой. После оплаты ваш сервис получает подписанный вебхук, а пользователь возвращается на `return_url`.

Ключи терминала Т-Банка, подписи запросов, статусы и повторы уведомлений живут только здесь — в сервисах их больше нет.

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

```text
Ваш сервис                    EGN Pay                          Т-Банк / НСПК
    │  POST /api/v1/payments     │                                   │
    │ ─────────────────────────▶ │  Init + GetQr                     │
    │  { payment_url, id }       │ ────────────────────────────────▶ │
    │ ◀───────────────────────── │                                   │
    │                            │                                   │
    │  302 → payment_url         │   пользователь платит по QR (СБП) │
    │ ──────────── пользователь ─▶ ───────────────────────────────▶  │
    │                            │  уведомление CONFIRMED            │
    │                            │ ◀──────────────────────────────── │
    │  webhook payment.succeeded │                                   │
    │ ◀───────────────────────── │                                   │
    │  пользователь → return_url │                                   │
```

## Быстрый старт

### 1. Получите ключи

Администратор создаёт сервис в [админке](https://pay.egnetwork.ru/admin) и выдаёт вашему отделу доступ. Войдите в админку через EGN ID, откройте сервис и выпустите ключи:

- `egn_test_…` — тестовый ключ (деньги не списываются),
- `egn_live_…` — боевой ключ,
- `whsec_…` — секрет для проверки подписи вебхуков.

### 2. Создайте платёж

```bash
curl https://pay.egnetwork.ru/api/v1/payments \
  -H "Authorization: Bearer egn_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 49900,
    "order_id": "order-1042",
    "description": "Подписка Pro на 1 месяц",
    "return_url": "https://example.egnetwork.ru/billing/done",
    "customer": { "email": "user@example.com" },
    "metadata": { "user_id": "u_123" }
  }'
```

`amount` — в **копейках**: `49900` = 499,00 ₽.

Ответ (`201 Created`):

```json
{
  "id": "pay_8fK2mQ1xZbY7cV3nT0aR",
  "object": "payment",
  "livemode": false,
  "status": "pending",
  "amount": 49900,
  "payment_url": "https://pay.egnetwork.ru/p/pay_8fK2mQ1xZbY7cV3nT0aR",
  "order_id": "order-1042",
  "expires_at": "2026-10-27T13:00:00.000Z"
}
```

### 3. Отправьте пользователя на `payment_url`

Сделайте редирект (HTTP 302) или откройте ссылку в WebApp/боте.

### 4. Примите вебхук

На `webhook_url` сервиса придёт `POST` с событием `payment.succeeded`. Проверьте подпись `X-EGN-Signature` (см. [Вебхуки](/docs/webhooks)) и выдайте пользователю товар. **Выдавайте товар только по вебхуку или по `GET /api/v1/payments/{id}`**, а не по факту возврата на `return_url` — URL возврата может открыть кто угодно.

## Разделы

- [Аутентификация](/docs/authentication) — ключи, режимы test/live
- [Платежи](/docs/payments) — создание, статусы, отмена, возвраты, чеки 54-ФЗ
- [Страница оплаты](/docs/payment-page) — что видит пользователь, параметры возврата
- [Вебхуки](/docs/webhooks) — события, подпись, повторы
- [Тестирование](/docs/testing) — тестовый режим и симуляция оплаты
- [Ошибки](/docs/errors) — коды ошибок
- [SDK](/docs/sdk) — однофайловый TypeScript-клиент
- [Для ИИ-агентов](/docs/agents) — `llms.txt`, OpenAPI, Markdown-версии страниц
