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

Коротко
Временный резерв слота удерживает выбранное время за клиентом на ограниченный срок, пока он завершает оформление или оплату. Это ещё не подтверждённая запись: резерв должен либо перейти в подтверждение по правилам бизнеса, либо освободить ресурс. Таймер на экране полезен, но решение о доступности принимает сервер, а не браузер клиента.
Механика особенно важна для последнего места в группе, популярного корта, кабинета или зала. В статье разобраны требования к интеграции, а не обещание готовой настройки во всех тарифах 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
Опишите политику
Зафиксируйте начало резерва, срок, возможность продления, условия подтверждения и поздней оплаты.
Согласуйте идентификаторы
Свяжите клиента, попытку, резерв, запись и платёж так, чтобы повтор и изменение заказа различались.
Проверьте платёжный контур
Пройдите актуальные статусы выбранного способа оплаты, подлинность событий и защиту от повторов.
Настройте очередь исключений
Выделите оплаченные, но не подтверждённые записи и конфликты ресурсов. Назначьте ответственного за разбор.
Сравните метрики
Считайте долю резервов, ставших бронями, истечения, поздние платежи и время удержания непроданных ресурсов.
Меняйте срок по данным
Оценивайте отдельно разные услуги и способы оплаты. Увеличение срока может помочь оплате, но одновременно дольше закрывает слот для других.
Важно
На демонстрации попросите показать не таймер, а три исхода одной попытки: успешное подтверждение, истечение без оплаты и успешный платёж после повторной продажи слота. Именно эти исходы показывают зрелость процесса.
Вывод
Надёжный временный резерв связывает доступность, срок, оплату и подтверждение, сохраняя различия между ними. Его качество определяется поведением при сбоях и конкурирующих запросах, а не наличием обратного отсчёта в форме.
MySlot предлагает календарь, ресурсы, оплаты и интеграции как основу сценария записи. Требования к удержанию слота, повторным операциям и поздним платежам стоит включить в обсуждение внедрения и подтвердить отдельной приёмкой.
Демо
Покажем демо MySlot и разберём ваш процесс: услуги, расписание, ресурсы, CRM, оплаты и уведомления.
MySlot
MySlot подойдёт, если вам нужно:
Похожие статьи
Автоматизация
Как избежать двойных бронирований
Почему возникают пересечения и как система бронирования помогает учитывать слоты, ресурсы и ограничения.
ЧитатьАвтоматизация
Неуспешная оплата в онлайн-записи: повторная ссылка, бронь, CRM и уведомления
Как обрабатывать неуспешную оплату в онлайн-записи: статусы брони, повторная платёжная ссылка, дедлайн оплаты, уведомления и CRM.
ЧитатьАвтоматизация
Сверка оплат и записей: платежи, возвраты, CRM, отчёты и ошибки
Как сверять оплаты и записи: предоплаты, возвраты, статусы платежей, ошибки, CRM, отчёты, выручку и спорные бронирования.
ЧитатьЗапуск
MySlot поможет принимать записи, управлять расписанием, ресурсами, оплатами и передавать данные в CRM.