Tạo booking
Tạo Booking nháp, chưa xuất vé và thanh toán.
Endpoint
POST /api/v1/create-booking
Request
| Trường | Mô tả | Kiểu dữ liệu / Định dạng |
|---|---|---|
| date | Ngày booking | YYYY-MM-DD |
| is_grouped | Vé đoàn: mặc định false | bool |
| note | Ghi chú cho booking | string |
| customer | Thông tin khách hàng | object (nullable) |
| customer.name | Tên khách hàng | string |
| customer.phone | Số điện thoại | string |
| customer.email | string | |
| customer.card_id | Số CCCD | string |
| packages | Danh sách gói bán trong booking | array |
| packages[].code | Mã gói bán | string |
| packages[].quantity | Số lượng gói bán | int |
Vé đoàn là gì?
Vé đoàn (is_grouped = true) là loại vé dành cho nhóm khách đi theo đoàn (tour group, đoàn du lịch). Khi sử dụng vé đoàn:
- Xuất vé theo nhóm: Tất cả vé trong booking được gộp lại thành một đoàn theo loại vé, thay vì xuất từng vé riêng lẻ cho mỗi khách. Thuận tiện cho việc quản lý các đoàn khách lớn, vé đoàn sẽ có số lần sử dụng tương ứng với số lượng vé đã mua.
Ví dụ: Đoàn du lịch 50 người mua gói
TCDT230→ Hệ thống xuất 1 vé đoàn duy nhất với 50 lượt sử dụng. Hướng dẫn viên quét vé 1 lần, hệ thống trừ đi số lượng tương ứng.
Vé lẻ (is_grouped = false - mặc định) là loại vé dành cho khách đi cá nhân hoặc nhóm nhỏ:
- Mỗi vé được xuất riêng biệt với mã QR/barcode độc lập.
Ví dụ: Gia đình 4 người mua gói
TCDT230→ Hệ thống xuất 4 vé riêng biệt, mỗi người giữ 1 vé và tự quét khi vào cổng.
{
"date": "2025-09-10",
"is_grouped": false,
"note": "Booking test",
"customer": {
"name": "Thủy",
"phone": "0999999999",
"email": "customer@gmail.com"
"card_id": "123456789"
},
"packages": [
{
"code": "TCDT230",
"quantity": 1000
}
]
}
Example Request
curl --location '/api/v1/create-booking' \
--header 'X-Client-ID: {{client_id}}' \
--header 'X-Timestamp: {{timestamp}}' \
--header 'X-Signature: {{signature}}' \
--data-raw '{
"date": "2025-08-23",
"note": "Booking test",
"customer": {
"name" : "Thủy",
"phone": "0999999999",
"email": "customer@gmail.com",
"card_id": "123456789"
},
"packages": [
{
"code": "V230",
"quantity": 1
},
{
"code": "TC170",
"quantity": 2
}
]
}'
Response
| Trường | Mô tả | Kiểu dữ liệu / Giá trị |
|---|---|---|
| booking_date | Ngày Booking | YYYY-MM-DD |
| booking_code | Mã booking | string |
| payment_status | Trạng thái thanh toán: UNPAID: Chưa thanh toán PAID: Đã thanh toán CANCEL: Hủy | string |
| total_amount | Tổng tiền | double |
| note | Ghi chú | string |
| status | Trạng thái booking: BOOKING: Chưa xuất vé TICKET_EXPORTED: Đã xuất vé CANCEL: Hủy | string |
| customer | Thông tin khách hàng | object |
| customer.name | Tên khách hàng | string |
| customer.phone | Số điện thoại | string |
| customer.email | string | |
| customer.card_id | Số CCCD | string |
| packages | Thông tin gói bán trong booking | array |
Example Response
{
"success": true,
"code": 1000,
"data": {
"booking_id": "bTBrK2N1d2F6cEUvRTlpZys4MUNGdz09",
"booking_date": "2025-08-22T17:00:00.000000Z",
"booking_code": "BK250823423276",
"payment_status": "UNPAID",
"total_amount": 570000,
"note": "Booking test",
"status": "BOOKING",
"created_at": 1755950825,
"customer": {
"name": "Thủy",
"phone": "0999999999",
"email": "customer@gmail.com",
"card_id": "123456789"
},
"packages": [
{
"package_code": "V230",
"package_name": "Phí Thắng Cảnh, Đò Thuyền",
"quantity": 1
},
{
"package_code": "TC170",
"package_name": "Phí Thắng Cảnh (Ưu Tiên), Đò Thuyền",
"quantity": 2
}
]
},
"message": "Create booking successfully!"
}