платежи

ЮKassa для теннисного и падл-клуба

letscourt интегрирован с ЮKassa из коробки: приём платежей картой и СБП, идемпотентные webhook-и, авто-возврат при отмене брони, фискализация чеков через ОФД (54-ФЗ). Подключение за 1 минуту — вставляете SHOP_ID и SECRET_KEY в админке, и сразу принимаете деньги.

Подать заявку →

Что работает из коробки

💳 Карты Visa, Mastercard, Мир

Все основные карты России. ApplePay/GooglePay через ЮKassa автоматически если у клиента в браузере.

📱 СБП

Система быстрых платежей через QR. Клиент платит из любого банка, у клуба ЮKassa-аккаунт.

🔄 Идемпотентные webhook-и

ЮKassa может повторить уведомление 10 раз — letscourt запишет один платёж. UNIQUE constraint на (provider, event_id) в БД.

↩️ Авто-возврат при отмене

Клиент или админ отменили оплаченную бронь — refund в ЮKassa уходит автоматически. Не надо руками заходить в ЛК ЮKassa и искать платёж.

🧾 Фискализация (54-ФЗ)

Через ОФД-провайдера ЮKassa. Клиент получает фискальный чек на email или в SMS — по требованию налоговой.

⏱ Hold-таймер 10 минут

Клиент начал оплату но не подтвердил — слот блокируется на 10 минут, потом возвращается в продажу. Никаких потерянных платежей в подвисшем состоянии.

Подключение — 1 минута

  1. В Личном кабинете ЮKassa → создаёте магазин (если ещё нет) → раздел «Интеграция → API»
  2. Копируете SHOP_ID и SECRET_KEY (live, не тестовые)
  3. В letscourt admin → Интеграции → ЮKassa → вставляете SHOP_ID и SECRET_KEY → «Подключить»
  4. Webhook URL регистрируется автоматически на нашей стороне — копировать ничего не надо
  5. Готово — следующая бронь будет с настоящей оплатой через ЮKassa

До этого момента letscourt работает в режиме PAYMENTS_MODE=stub — брони создаются как «оплачено» без реальных денег. Удобно для теста.

Цикл платежа

От клика клиента «Оплатить» до подтверждения брони:

1
Клиент выбирает корт и время

letscourt создаёт бронь со статусом hold + amount + holdExpiresAt = +10 мин

2
Клик «Оплатить»

letscourt создаёт payment в ЮKassa через POST /v3/payments с return_url и описанием. Получает payment_id и confirmation_url.

3
Редирект на ЮKassa

Клиент видит форму оплаты ЮKassa с картой/СБП. Платит. Возвращается на return_url нашего сайта.

4
ЮKassa отправляет webhook

POST на наш endpoint с event=payment.succeeded. Мы проверяем подпись (HMAC), валидируем event_id (UNIQUE), ставим payment.status=succeeded.

5
Бронь подтверждается

booking.status = hold → confirmed, paymentStatus = unpaid → paid. Клиенту уходит SMS/Telegram-уведомление.

Сколько берёт ЮKassa

Стандартные комиссии ЮKassa (актуальный прайс — на их сайте):

МетодКомиссияЗачисление
Карта (Visa/Master/Мир)~2.8%на след. рабочий день
СБП~0.4-0.7%мгновенно
ApplePay/GooglePay~2.8%на след. рабочий день

letscourt не берёт никакой наценки — все деньги от клиентов идут к вам напрямую через ЮKassa. Нам платите только месячный тариф (см. цены).

Подключить ЮKassa и принимать платежи

Если у вас уже есть ЮKassa-аккаунт — подключение займёт минуту. Если нет — регистрация в ЮKassa тоже простая (часов несколько на проверку), и потом подключаете в letscourt.

Подать заявку →