Mọi request đều bắt buộc phải đính kèm Token xác thực trong HTTP header
Authorization.
HTTP Request Headers
Content-Type: application/json Authorization: "your-secret-token"
BƯỚC 1: ĐỒNG BỘ PHÒNG TRỐNG & HẠN CHẾ
POST
1. ĐỒNG BỘ PHÒNG TRỐNG & HẠN CHẾ
POST
https://cms.oxu.vn/api/v1/ota/sync-data
| Thuộc tính | Kiểu | Bắt buộc | Mô tả & Ràng buộc |
|---|---|---|---|
| maloaiphongota | string | Bắt buộc | Mã loại phòng OTA |
| batdau | string | Bắt buộc | Ngày bắt đầu áp dụng (định dạng YYYY-MM-DD) |
| ketthuc | string | Bắt buộc | Ngày kết thúc áp dụng (YYYY-MM-DD, batdau <= ketthuc) |
| phongtrong | numeric | Bắt buộc | Số phòng trống cần mở bán (>= 0, không được vượt quá số phòng tối đa của loại phòng) |
| Thuộc tính | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| rateplanid | string | Bắt buộc | Mã gói giá OTA |
| batdau | string | Bắt buộc | Ngày bắt đầu áp dụng (định dạng YYYY-MM-DD) |
| ketthuc | string | Bắt buộc | Ngày kết thúc áp dụng (YYYY-MM-DD, batdau <= ketthuc) |
| gia1dem | numeric | Tùy chọn | Giá bán phòng cho 1 đêm (VNĐ). Bỏ qua hoặc để null nếu không thay đổi giá |
| sodemtoithieu | integer | Tùy chọn | Số đêm ở tối thiểu (>= 1) |
| sodemtoida | integer | Tùy chọn | Số đêm ở tối đa (>= 1) |
| cta | integer (0|1) | Tùy chọn | Chặn nhận phòng (Closed to Arrival): 1 = Chặn, 0 = Mở bình thường |
| ctd | integer (0|1) | Tùy chọn | Chặn trả phòng (Closed to Departure): 1 = Chặn, 0 = Mở bình thường |
| stopsell | integer (0|1) | Tùy chọn | Dừng bán gói giá này (Stop Sell): 1 = Dừng bán, 0 = Mở bán |
JSON Body
{
"online": 2,
"phongtrong": [
{
"maloaiphongota": "10",
"batdau": "2026-11-01",
"ketthuc": "2026-11-05",
"phongtrong": 6
}
],
"otabooking": [
{
"rateplanid": "13232445",
"batdau": "2026-11-01",
"ketthuc": "2026-11-05",
"gia1dem": 550000,
"sodemtoithieu": 1,
"sodemtoida": 30,
"cta": 0,
"ctd": 0,
"stopsell": 0
}
]
}
Thành công
{
"status": true,
"message": "Đồng bộ dữ liệu thành công!"
}
BƯỚC 2: QUẢN LÝ ĐẶT PHÒNG TỪ CÁC KÊNH OTA
POST
2. LẤY DANH SÁCH ĐẶT PHÒNG MỚI
POST
https://cms.oxu.vn/api/v1/ota/bookings
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| online | integer | Bắt buộc | ID định danh của cơ sở khách sạn trong hệ thống |
| from | string | Tùy chọn | Thời điểm bắt đầu lọc theo thời gian đặt phòng (YYYY-MM-DD). Mặc định là ngày hiện tại |
| to | string | Tùy chọn | Thời điểm kết thúc lọc theo thời gian đặt phòng (YYYY-MM-DD, from <= to). Mặc định là ngày hiện tại |
JSON Body
{
"online": 2,
"from": "2026-11-01",
"to": "2026-11-01"
}
200 OK — Chi tiết đặt phòng
{
"status": true,
"message": "Đã lấy thông tin đặt phòng mới thành công.",
"data": [
{
"ma_dat_phong": 69,
"makh": 69,
"time": "2026-10-15 10:15:01",
"ghi_chu": "Khách yêu cầu nhận phòng sớm nếu có thể",
"batdau": "2026-10-15 14:00:00",
"ketthuc": "2026-10-17 12:00:00",
"nguon": "Booking.com",
"otaid": 88888888,
"mabooking": "6979202420",
"nguoilon": 1,
"treem": 1,
"huy": 0,
"trangthai_nhantra": "pending",
"trangthai_thanhtoan": false,
"tiente": "VND",
"tongtien": 200000,
"thongtinkhach": {
"makhach": 69,
"hoten": "Nguyên Văn A",
"dienthoai": "09xxxxxxxxx",
"email": "example@gmail.com",
"diachi": "Ngách 80/92 Đường Xuân Phương"
},
"datloaiphong": [
{
"madatphong": 69,
"maloaiphongota": "6205593",
"rateplanid": 6681866,
"soluong": 1,
"batdau": "2026-10-15 14:00:00",
"ketthuc": "2026-10-17 12:00:00",
"nguoilon": 1,
"treem": 1,
"banggia": [
{
"ngay": "2026-10-15 00:00:00",
"sotien": 100000
},
{
"ngay": "2026-10-16 00:00:00",
"sotien": 100000
}
]
}
]
}
]
}
| Trường | Kiểu | Ý nghĩa & Hướng dẫn nghiệp vụ |
|---|---|---|
| ma_dat_phong | integer | Mã đặt phòng duy nhất trên hệ thống. Bắt buộc lưu mã này để gửi xác nhận đã xử lý qua API confirm-booking. |
| mabooking | string | Mã định danh đặt phòng. |
| nguon | string | Nguồn đặt phòng (Booking.com, Agoda, Traveloka, Expedia, v.v.). |
| time | string | Thời điểm khách tạo đặt phòng trên kênh OTA (YYYY-MM-DD HH:mm:ss). |
| batdau, ketthuc | string | Thời gian nhận phòng (Check-in) và trả phòng (Check-out) của đặt phòng. |
| nguoilon, treem | integer | Tổng số lượng người lớn và số trẻ em lưu trú trong đặt phòng. |
| tongtien, tiente | numeric, string | Tổng giá trị tiền phòng của đặt phòng và đơn vị tiền tệ (VD: 200000, VND). |
| huy | integer | Trạng thái đặt phòng: 0 = Đặt phòng mới; 1 = Đặt phòng có chỉnh sửa thông tin; -1 = Khách đã hủy đặt phòng trên OTA. |
| trangthai_thanhtoan | boolean | true = Khách đã thanh toán qua OTA; false = Chưa thanh toán. |
| thongtinkhach | object | Thông tin liên hệ khách đặt phòng: hoten (họ tên), dienthoai (số điện thoại), email (địa chỉ email). |
| datloaiphong | array |
Mảng danh sách các phòng được đặt, gồm:
|
POST
3. XÁC NHẬN ĐÃ XỬ LÝ ĐẶT PHÒNG
POST
https://cms.oxu.vn/api/v1/ota/confirm-booking
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| online | integer | Bắt buộc | ID định danh của khách sạn/cơ sở |
| madatphongs | array | Bắt buộc | Mảng chứa danh sách các ma_dat_phong của các đặt phòng đã được PMS lưu và xử lý thành công (VD: [10523, 10524]) |
Request Body
{
"online": 2,
"madatphongs": [
10523,
10524
]
}
Response 200 OK
{
"status": true,
"message": "Xác nhận đã lấy booking thành công!"
}