MySlot

Интеграции

Временный резерв слота: как связать онлайн-запись и оплату без дублей

Как устроить временный резерв слота при онлайн-записи: срок удержания, подтверждение оплаты, повторные запросы, поздний платёж и проверка защиты от двойной брони.

8 минут чтения·Обновлено: 26 августа 2026 г.·Автор: команда MySlot
Концептуальная иллюстрация временного резерва слота с таймером, оплатой и подтверждением бронирования
Удержание времени, статус платежа и подтверждение записи связаны, но не заменяют друг друга. Концептуальная иллюстрация.

Коротко

Временный резерв слота удерживает выбранное время за клиентом на ограниченный срок, пока он завершает оформление или оплату. Это ещё не подтверждённая запись: резерв должен либо перейти в подтверждение по правилам бизнеса, либо освободить ресурс. Таймер на экране полезен, но решение о доступности принимает сервер, а не браузер клиента.

Механика особенно важна для последнего места в группе, популярного корта, кабинета или зала. В статье разобраны требования к интеграции, а не обещание готовой настройки во всех тарифах MySlot. Срок удержания, платёжный сценарий и обработку исключений нужно согласовать при внедрении и проверить на реальных ограничениях вашего бизнеса.

Главное в статье

Выбранный на экране слот не считается зарезервированным, пока сервер не подтвердил удержание.

У резерва есть владелец, состав ресурсов и срок; повторное открытие страницы не должно бесконечно продлевать его.

Статус платежа и статус бронирования учитывают отдельно и связывают идентификаторами.

Поздняя успешная оплата не даёт права отобрать уже подтверждённый слот у другого клиента.

Повторы запросов, повторные уведомления и одновременная покупка последнего места входят в обязательную проверку.

Раздел 01

Что такое временный резерв слота

Резерв представляет собой ограниченное по времени право завершить конкретное бронирование. Его параметры включают услугу, дату, начало и конец, ресурсы, количество мест, владельца операции и момент истечения. Удержание одного места в группе отличается от блокировки всего зала: в первом случае уменьшается остаток, во втором недоступным становится ресурс целиком.

Создавать резерв стоит в момент осмысленного действия клиента, например при переходе к оформлению после выбора услуги и времени. Удержание при простом просмотре календаря может закрыть доступность для остальных посетителей без намерения купить. Конкретный момент зависит от длины формы и дефицита слотов.

Срок жизни резерва, часто обозначаемый TTL, определяет бизнес. Универсального правильного числа минут нет: учитываются время заполнения формы, способы оплаты, цена простоя и доля незавершённых попыток. Клиент должен видеть, до какого момента действует удержание и что произойдёт после него.

Раздел 02

Какие состояния нельзя смешивать

СостояниеЧто означаетКак влияет на календарь
Слот показанДоступность была прочитана в момент запроса.Сам просмотр ничего не удерживает; перед действием нужна новая проверка.
Резерв активенСервер выделил ресурс конкретной операции до установленного срока.Соответствующий ресурс или количество мест недоступны другим клиентам.
Платёж обрабатываетсяУ платежа ещё нет необходимого для подтверждения результата.Действует отдельно согласованное правило удержания; нельзя молча ждать бесконечно.
Бронь подтвержденаВыполнены условия записи и успешно закреплён ресурс.Занятость сохраняется по правилам подтверждённого бронирования.
Резерв истёкПраво завершить исходное удержание закончилось.Доступность пересчитывается, но финансовую судьбу платежа проверяют отдельно.

Раздел 03

Как связать резерв и платёж

У каждой попытки оформления должен быть устойчивый идентификатор, связанный с резервом и платежом. Повторный клик по кнопке не должен создавать независимую покупку. Сумму, валюту и состав заказа проверяют на стороне сервера; значения из страницы клиента не являются достаточным основанием для подтверждения.

В ЮKassa платёж может находиться в состояниях pending, waiting_for_capture, succeeded или canceled. Состояние waiting_for_capture относится к двухстадийному сценарию: средства авторизованы и ожидают списания. Оно не тождественно succeeded. Возвращение клиента на страницу сайта также само по себе не устанавливает итог операции.

Практический вывод для системы записи: заранее определите, какой проверенный статус платежа позволяет подтвердить бронь именно в вашем процессе. Не называйте авторизацию завершённым списанием и не меняйте логику между формой, CRM и сообщением клиенту. Временный резерв календаря и холдирование денежных средств являются разными механизмами.

Раздел 04

Почему повтор запроса не должен создавать дубль

Клиент может дважды нажать кнопку, потерять соединение или открыть платёж в другой вкладке. Идемпотентность означает, что повтор одной и той же операции не создаёт новый результат. В API ЮKassa для этого используется Idempotence-Key: повтор с тем же ключом и параметрами возвращает результат исходного запроса в пределах установленного провайдером срока, сейчас это 24 часа.

Защита платёжного запроса не заменяет защиту бронирования. Две разные операции разных клиентов могут одновременно пытаться получить последнее место. Проверка остатка и его закрепление должны быть единым согласованным действием на стороне системы записи. Простая последовательность «прочитали свободно, потом сохранили» оставляет окно для конфликта.

Требование для приёмки формулируется без привязки к конкретной базе данных: при одновременных запросах подтверждение получает не больше клиентов, чем позволяет вместимость, а отклонённая попытка получает понятный результат. Детали транзакций и блокировок выбирает команда разработки.

Раздел 05

Что делать с поздней оплатой

Условный пример: резерв закончился в 12:10, в 12:11 слот подтвердил другой клиент, а в 12:12 пришло уведомление об успешном платеже первой попытки. Нельзя автоматически восстановить первую бронь поверх второй. Финансовое событие нужно сохранить и направить в отдельный процесс разрешения конфликта с ответственным и уведомлением клиенту.

Если ресурс ещё свободен, система может повторно закрепить его согласно заранее согласованной политике. Если занят, команда предлагает допустимое решение: другое время с согласия клиента либо обработку возврата по правилам бизнеса и платёжного провайдера. Само истечение таймера на сайте не отменяет платёж у провайдера.

ЮKassa отправляет уведомления об изменениях статуса и при отсутствии успешного ответа повторяет доставку в течение 24 часов. Документация также требует проверять подлинность уведомлений. Для интеграции это означает, что обработчик должен выдерживать повторы, сверять платёж и не подтверждать одну бронь несколько раз.

На границе срока удержания обработку истечения и подтверждения нужно согласовать так, чтобы две операции не приняли противоречивые решения. В журнале сохраняйте время, идентификаторы резерва и платежа, полученное событие и итоговое действие. Тогда спор решается по фактам, а не по скриншоту таймера.

Раздел 06

Как проверить сценарий перед запуском

Последнее место

Отправьте две независимые попытки одновременно. Итоговая занятость не должна превышать вместимость, включая действующие резервы.

Двойной клик

Повторите одну операцию. Должны сохраниться одна логическая бронь и согласованный платёж, а не два заказа.

Закрытая вкладка

Прервите оформление. По окончании срока ресурс должен стать доступным без необходимости держать браузер открытым.

Задержка события

Доставьте подтверждение после истечения резерва и после повторной продажи. Проверьте статус исключения и назначение ответственного.

Повтор уведомления

Доставьте одно событие несколько раз. Не должны повторяться списания, создание записей и клиентские подтверждения.

Перенос и новая сумма

Измените состав заказа. Устаревшая платёжная попытка не должна молча подтвердить новые условия.

Раздел 07

Как внедрить удержание и оценить результат

01

Опишите политику

Зафиксируйте начало резерва, срок, возможность продления, условия подтверждения и поздней оплаты.

02

Согласуйте идентификаторы

Свяжите клиента, попытку, резерв, запись и платёж так, чтобы повтор и изменение заказа различались.

03

Проверьте платёжный контур

Пройдите актуальные статусы выбранного способа оплаты, подлинность событий и защиту от повторов.

04

Настройте очередь исключений

Выделите оплаченные, но не подтверждённые записи и конфликты ресурсов. Назначьте ответственного за разбор.

05

Сравните метрики

Считайте долю резервов, ставших бронями, истечения, поздние платежи и время удержания непроданных ресурсов.

06

Меняйте срок по данным

Оценивайте отдельно разные услуги и способы оплаты. Увеличение срока может помочь оплате, но одновременно дольше закрывает слот для других.

Важно

Практический совет

На демонстрации попросите показать не таймер, а три исхода одной попытки: успешное подтверждение, истечение без оплаты и успешный платёж после повторной продажи слота. Именно эти исходы показывают зрелость процесса.

Вывод

Итог

Надёжный временный резерв связывает доступность, срок, оплату и подтверждение, сохраняя различия между ними. Его качество определяется поведением при сбоях и конкурирующих запросах, а не наличием обратного отсчёта в форме.

MySlot предлагает календарь, ресурсы, оплаты и интеграции как основу сценария записи. Требования к удержанию слота, повторным операциям и поздним платежам стоит включить в обсуждение внедрения и подтвердить отдельной приёмкой.

Демо

Хотите понять, какой сценарий онлайн-записи нужен вашему бизнесу?

Покажем демо MySlot и разберём ваш процесс: услуги, расписание, ресурсы, CRM, оплаты и уведомления.

Получить демо

MySlot

Когда стоит рассмотреть MySlot

MySlot подойдёт, если вам нужно:

принимать онлайн-записи
управлять расписанием
учитывать сотрудников или ресурсы
работать с группами
принимать оплату или предоплату
отправлять уведомления
передавать заявки в CRM
адаптировать запись под бренд
убрать ручной перенос данных

Возможности

Возможности MySlot по теме статьи

Запуск

Хотите запустить онлайн-запись без хаоса и ручных переносов?

MySlot поможет принимать записи, управлять расписанием, ресурсами, оплатами и передавать данные в CRM.