Заявка на подключение магазина
Представьте сайт на проверку после входа через Telegram и отслеживайте каждый этап по личной ссылке. Автоматические проверки помогают специалисту, а окончательное решение всегда принимает модератор.
В этой статье
Заполните заявку#
Для описания требуется 40–3000 символов, для имени проекта — до 100. Сайт должен быть доступен без входа. Адреса с паролем, внутренним хостом, нестандартным портом или параметрами запроса не принимаются.
Право на заявку связано с подтверждённым аккаунтом. Введённый контакт Telegram используется для связи и не меняет владельца. Пересылка адреса заявки не даёт другому пользователю доступ к ней.
- 1
Войдите или зарегистрируйтесь через Telegram и откройте /account#applications.
- 2
Укажите публичный HTTPS-адрес сайта, название проекта, категорию и описание товаров или услуг.
- 3
Добавьте Telegram-имя для связи. Объясните, что получает покупатель и как исполняется заказ.
- 4
Подтвердите право представить сайт на проверку и отправьте форму.
- 5
Сохраните адрес /account#applications/{id}: страница сразу открывается после отправки.
Четыре этапа проверки#
Соединительная линия и круги отражают сохранённые серверные состояния. Повторное открытие страницы продолжает тот же процесс. Закрытие вкладки не отменяет заявку: фоновые задания продолжают работу и восстанавливают прерванные этапы.
| Этап | Что происходит | Что видно в статусе |
|---|---|---|
| Заявка принята | Данные и личный адрес сохранены на сервере | Выполненный первый пункт |
| Проверка материалов | ИИ сопоставляет описание с открытым содержимым сайта | Проверка выполняется, завершена или требует специалиста |
| Техническая проверка | Проверяются доступность и ограниченный набор ссылок | Отдельный результат и время этапа |
| Проверка специалистом | Модератор оценивает сведения и результаты | Ожидание решения, одобрение либо причина отказа |
Жёлтый этап — проверка специалистом#
Жёлтый круг означает, что этап требует внимания: например, материалов недостаточно, ссылка недоступна или автоматический результат нельзя уверенно принять. Это не окончательный отказ. На странице указан следующий шаг.
Модератор может подтвердить текущий этап, после чего проверка продолжится со следующего. При отказе этап отмечается крестиком, а заявитель видит причину, которую модератор проверил и может отредактировать перед отправкой. Подтверждение одного этапа не заменяет окончательную ручную проверку.
Границы автоматической проверки#
Проверяется открытая главная страница: HTTPS, HTTP-ответ, заголовок, текст и подозрительные шаблоны ссылок. Дополнительно запрашиваются заголовки не более трёх ссылок того же сайта. Число переходов, размер ответа и время запроса ограничены.
Проверка не входит в закрытые разделы, не запускает скачанные файлы и не заменяет аудит безопасности либо антивирус. Успешный этап не гарантирует отсутствие вредоносного кода на всех страницах.
Содержимое сайта считается недоверенными данными. Текст на сайте не может назначить администратора, изменить условия Kevmi или утвердить заявку. Недоступный ИИ и некорректный ответ модели переводят этап специалисту, а не отмечают его успешно.
Уведомления в Telegram#
При получении заявки, завершении этапа, передаче специалисту и итоговом решении создаётся уведомление с личной ссылкой. Сообщения относятся к категории «Поддержка» в настройках аккаунта. При выключенной категории сообщения не отправляются.
Событие заявки и запись уведомления сохраняются вместе. Доставка в Telegram идёт через очередь с повторными попытками и зависит от подключённого бота. Страница статуса остаётся источником текущего результата, даже если Telegram недоступен или бот заблокирован.
Модерация получает отдельное уведомление. Подтвердить этап из Telegram может только пользователь из серверного списка модераторов; устаревшая кнопка не применяет повторное решение. Причина отказа редактируется в разделе модерации.
Контракт заявки и решения#
Владелец определяется из сессии. Поля userId, status, роль и результаты проверки не принимаются от заявителя. Повтор создания с тем же Idempotency-Key и телом возвращает исходную заявку; другое тело с тем же ключом даёт конфликт.
Решение модератора применяется только к ожидаемой версии заявки. При одновременных решениях сохраняется одно; второму запросу возвращается 409. Причина отказа — обычный текст от 10 до 1500 символов. Внутренние результаты проверок доступны только модераторам.
| Маршрут | Доступ и поведение |
|---|---|
| POST /api/applications | Сессия + CSRF + Idempotency-Key; 202 и личный url |
| GET /api/applications | Список заявок текущего аккаунта |
| GET /api/applications/{id} | Свои данные, этапы и публичная история |
| POST /api/applications/{id}/resume | Сессия + CSRF; продолжает только processing |
| GET /api/moderation/applications | Только подтверждённый модератор |
| POST /api/moderation/applications/{id}/decision | approve_step или reject, expectedVersion и причина отказа |
После решения#
Новый платёж и подготовка карточного запроса требуют одобренной последней заявки магазина на проверку сайта. Одобрение само по себе не подключает платёжный шлюз. Если проверка магазина изменилась после отправки платежа, уже созданная операция остаётся доступна для статуса, сверки и запрошенного банковского кода.
При отклонении магазин видит причину и может исправить материалы перед новой заявкой. Жёлтый этап означает, что решение ещё у специалиста; это не автоматическое одобрение.
Несколько магазинов и единая цена в USD#
В меню магазина выберите «Все магазины» для общего обзора и операций или конкретный магазин для его данных. Каждый магазин имеет собственный storeId, название, правило НДС, счета, API-ключи, вебхуки, журнал событий и заявку на проверку сайта. Уведомления и обращения принадлежат аккаунту. Можно создать до 100 магазинов. Ранее созданные данные сохранены в первом магазине.
Новые ссылки из кабинета используют pricingMode="universal": базовая цена хранится в USD. Any включает card, alipay, sbp и crypto; при необходимости магазин выбирает подмножество. Карты и Alipay оплачиваются в USD, СБП — в RUB по официальному курсу USD/RUB Банка России, криптовалюта — в USDT по явно установленному соотношению 1 USD = 1 USDT. Это правило расчёта счёта, а не рыночная котировка USDT. Курс другой монеты и точные реквизиты предоставляет шлюз перед переводом.
Курс ЦБ и обе суммы сохраняются при создании. Ссылки с рублёвой конвертацией действуют не более 24 часов. Если курс получить не удалось, создание возвращает FX_UNAVAILABLE; выдуманный или старый запасной курс не применяется. amountMinor и quotes в ответе владельцу выражены в базовой валюте USD; quotes[method].settlement содержит сумму и валюту конкретного способа. Публичный checkout возвращает выбранную валюту оплаты в currency, исходную цену в baseAmountMinor/baseCurrency и курс в fx. Возврат к другой валюте после отправки платежа запрещён: у счёта одна операция шлюза.
Для серверной интеграции создайте API-ключ внутри выбранного магазина и передавайте Authorization: Bearer <key>. Привязка ключа к магазину неизменна: заголовок X-Kevmi-Store не позволяет получить данные другого магазина. Для браузерной сессии передавайте X-Kevmi-Store: <storeId>; без заголовка используется первый магазин. Значение all разрешено только для GET /api/account/dashboard и GET /api/payment-links. Изменения требуют выбранного магазина, Origin и X-CSRF-Token. ID аккаунта и ID магазина — разные идентификаторы.
Без pricingMode="universal" API сохраняет прежний режим native и исходные ограничения валют для совместимости. Старые ссылки не пересчитываются. Подтверждённые поступления в обзоре — это проверенные платежи за вычетом расходов по сохранённому расчёту, а не доступный остаток для вывода. Валюты старых счетов учитываются раздельно; выплаты согласуются с поддержкой. Подтверждение исполнения заказа проверяйте через payment.fulfillmentReady=true и payment.status="succeeded" в серверном API, журнале событий или подписанном вебхуке.