Интеграции · платежи · бронирование
Приём онлайн-оплаты в платформе бронирования
Клиент:
NDA
Категория: Интеграции
Стек: PHP (собственный backend), платёжный шлюз, webhook, очереди
Срок: 2–3 недели
Проблема
Бронирование без предоплаты превращалось в проблему: часть клиентов не приходила, а сверять оплаты по каждому заказу вручную приходилось поддержке.
Ограничения
Нужно было обрабатывать частичные и полные оплаты и возвраты при отмене брони, не теряя статус оплаты при повторных или запоздалых webhook-уведомлениях от шлюза.
Что сделал
- Создание платежа при оформлении брони с прокидыванием суммы и назначения
- Приём webhook-уведомлений об оплате с проверкой подписи
- Идемпотентная обработка повторных уведомлений — статус брони не дублируется и не «скачет»
- Возвраты при отмене брони с синхронизацией статуса
- Сверка «бронь ↔ платёж» без ручной работы поддержки
Архитектура
Бронирование
→ Платёжный шлюз
→ Webhook-приёмник
→ Идемпотентный обработчик
→ Статус брони
Результат
Оплата брони стала прозрачной: клиент платит на месте оформления, статус брони обновляется автоматически, а поддержка больше не сверяет платежи вручную.
Что можно переиспользовать
Идемпотентный обработчик webhook платёжного шлюза
Логика частичных оплат и возвратов
Сверка брони и платежа без ручной работы