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

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ườngMô tảKiểu dữ liệu / Định dạng
dateNgày bookingYYYY-MM-DD
is_groupedVé đoàn: mặc định falsebool
noteGhi chú cho bookingstring
customerThông tin khách hàngobject (nullable)
customer.nameTên khách hàngstring
customer.phoneSố điện thoạistring
customer.emailEmailstring
customer.card_idSố CCCDstring
packagesDanh sách gói bán trong bookingarray
packages[].codeMã gói bánstring
packages[].quantitySố lượng gói bánint
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ườngMô tảKiểu dữ liệu / Giá trị
booking_dateNgày BookingYYYY-MM-DD
booking_codeMã bookingstring
payment_statusTrạng thái thanh toán:
UNPAID: Chưa thanh toán
PAID: Đã thanh toán
CANCEL: Hủy
string
total_amountTổng tiềndouble
noteGhi chústring
statusTrạng thái booking:
BOOKING: Chưa xuất vé
TICKET_EXPORTED: Đã xuất vé
CANCEL: Hủy
string
customerThông tin khách hàngobject
customer.nameTên khách hàngstring
customer.phoneSố điện thoạistring
customer.emailEmailstring
customer.card_idSố CCCDstring
packagesThông tin gói bán trong bookingarray

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!"
}