# Страница оплаты

`payment_url` = `https://pay.egnetwork.ru/p/{id}`. Страница открывается без авторизации — ID платежа длинный и случайный, его нельзя подобрать. Не публикуйте ссылку на платёж в открытых местах.

## Что видит пользователь

- Название сервиса, сумму и `description`.
- **Компьютер** — QR-код СБП. Пользователь сканирует его камерой телефона или в приложении банка.
- **Телефон** — кнопку «Оплатить в приложении банка». Она открывает ссылку НСПК `https://qr.nspk.ru/…`, система предлагает выбрать банк. QR можно показать по кнопке.
- **«Оплатить картой»**, если в `methods` есть `card`: открывается защищённая форма банка-эквайера. После оплаты пользователь возвращается на ту же страницу.
- Таймер до `expires_at`.

Страница опрашивает статус каждые 3 секунды и сразу показывает результат.

## Возврат в сервис

Когда платёж оплачен, страница через 5 секунд переходит на `return_url` (или сразу по кнопке «Вернуться в сервис»). К URL добавляются параметры:

```text
https://example.egnetwork.ru/billing/done?payment_id=pay_8fK2mQ1xZbY7cV3nT0aR&status=succeeded
```

| Параметр | Значение |
|---|---|
| `payment_id` | ID платежа |
| `status` | Статус на момент перехода: `succeeded`, `expired`, `failed`, `canceled`, `pending` (пользователь нажал «Отменить и вернуться») |

> **Не доверяйте `status` из URL.** Его может подставить кто угодно. На странице возврата запросите `GET /api/v1/payments/{payment_id}` со своим ключом или дождитесь вебхука.

Без `return_url` страница просто показывает «Оплачено».

## Встраивание

- **Редирект** (рекомендуется): `302 Location: payment_url`.
- **Telegram WebApp / бот**: откройте `payment_url` через `openLink` или inline-кнопку с URL. Внутри iframe открывать не нужно — приложения банков не всегда запускаются из iframe.
- **Своя кнопка в мобильном приложении**: откройте `payment_url` во внешнем браузере или SFSafariViewController/Custom Tabs.
