OXU Logo TÀI LIỆU TÍCH HỢP API
Xác thực POST 1. Giá & hạn chế POST 2. Lấy đặt phòng POST 3. Xác nhận
1. XÁC THỰC
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:
  • maloaiphongota: Mã loại phòng OTA (PMS dùng để ánh xạ xếp phòng).
  • rateplanid: Mã gói giá OTA đã bán.
  • soluong: Số lượng phòng đặt của loại phòng này.
  • banggia: Chi tiết doanh thu tiền phòng từng đêm (ngay, sotien).
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!"
}