Chuyển tới nội dung chính

Booking Flow

Tổng quan

Cohost hỗ trợ ba hình thức đặt phòng:

Hình thứcMô tả
Đặt theo đêmCheck-in/check-out theo ngày
Đặt trong ngàyCheck-in và check-out trong cùng một ngày
Đặt theo giờĐặt theo số giờ tối thiểu

Luồng đặt phòng

1. Tìm kiếm

GET /api/v1/search?location=...&check_in=...&check_out=...&guests=...

Trả về danh sách listing khả dụng theo tiêu chí tìm kiếm. Hệ thống tự động clustering các listing gần nhau thành combo khi không đủ listing đơn lẻ.

2. Xem chi tiết listing

GET /api/v1/listings/{listing_id}
GET /api/v1/listings/{listing_id}/availability

Kiểm tra lịch khả dụng và giá theo ngày/giờ.

3. Thêm vào giỏ hàng

POST /api/v1/cart
{
"listing_id": "uuid",
"check_in": "2025-03-01T14:00:00",
"check_out": "2025-03-03T12:00:00",
"guests": 2
}

4. Checkout

POST /api/v1/checkout

Hệ thống thực hiện Soft-Lock — khóa tạm thời inventory trong Redis để tránh overbooking trong quá trình thanh toán. Lock có thời hạn (mặc định 15 phút).

5. Xác nhận & Thanh toán

POST /api/v1/checkout/confirm
{
"payment_method": "...",
"guest_info": { ... }
}

Nếu thanh toán thành công → booking được tạo và inventory bị khóa vĩnh viễn.

Nếu thanh toán thất bại → Soft-Lock được giải phóng, inventory trở lại khả dụng.

6. Sau khi booking

  • Host và Guest nhận thông báo
  • Thread chat được tạo tự động
  • Lịch được đồng bộ với iCal (nếu có cấu hình)

All-or-Nothing Booking

Khi đặt nhiều listing cùng lúc (combo), hệ thống áp dụng logic All-or-Nothing:

  • Tất cả listing phải khả dụng → booking thành công
  • Bất kỳ listing nào không khả dụng → toàn bộ booking bị hủy, không charge phí

Parent-Child Booking

Khi đặt listing cha (nguyên căn):

  • Tất cả listing con bị khóa tự động

Khi đặt listing con (phòng lẻ):

  • Chỉ listing cha bị khóa (các phòng con khác vẫn có thể đặt)

Xem thêm: Listing Parent-Child

Hủy booking

POST /api/v1/bookings/{booking_id}/cancel

Chính sách hoàn tiền phụ thuộc vào refund_rule của listing:

  • Hoàn tiền đầy đủ nếu hủy trước X ngày
  • Không hoàn tiền nếu hủy muộn

Booking States

PENDING ──────────────────────────────────────────► CANCELLED

▼ (thanh toán thành công)
CONFIRMED ────────────────────────────────────────► CANCELLED

▼ (check-in)
CHECKED_IN

▼ (check-out)
CHECKED_OUT

▼ (xác nhận hoàn tất)
COMPLETED

Pricing

Giá được tính dựa trên:

Yếu tốMô tả
full_rateGiá cơ bản theo đêm
prices_by_weekGiá theo từng ngày trong tuần
price_per_hourGiá theo giờ
price_first_hoursGiá cho số giờ đầu tiên
price_rate_in_dayHệ số giá đặt trong ngày (1x / 1.5x / 2x)
night_short_discountGiảm giá đặt qua đêm muộn (0–70%)
last_minute_hourSố giờ trước check-in để áp dụng last-minute discount
last_minute_discountGiảm giá last-minute (%)
cleaning_feePhí dọn dẹp
extra_adult_ratePhụ thu khách thêm
monthly_priceGiá thuê tháng (cố định)