5.1. Đặt chỗ tiêu chuẩn
Mô tả
▪ Tính năng này cho phép đặt giữ chỗ với thông tin chuyến bay từ kết quả tìm kiếm API trả về.
▪ Khi đối tác thực hiện tìm kiếm chuyến bay, hệ thống Booking Engine sẽ lưu kết quả tìm kiếm theo từng phiên làm việc (Session) trên máy chủ của Datacom, đối tác truyền lên mã số dữ liệu FareData, Flight đã lựa chọn, hệ thống Booking Engine của Datacom sẽ tìm chính xác thông tin chuyến bay khách hàng đã lựa chọn và tiến hành đặt chỗ.
▪ Thời gian hiệu lực tối đa cho mỗi Session tìm kiếm có thể sử dụng để đặt chỗ là 180 phút.
Kết nối
▪ URL: http://platform.datacom.vn/flights/book
▪ Giao thức: POST
▪ Cấu trúc dữ liệu gửi đi: BookRequest
{
"BookType": "string",
"UseAgentContact": true,
"Remark": "string",
"Contact": {
"Gender": true,
"FirstName": "string",
"LastName": "string",
"Area":"string",
"Phone": "string",
"Email": "string",
"Address": "string"
},
"ListPassenger": [
{
"Index": 0,
"FirstName": "string",
"LastName": "string",
"Type": "string",
"Gender": true,
"Birthday": "string",
"ListBaggage": [
{
"Airline": "string",
"Leg": 0,
"Route": "string",
"Code": "string",
"Currency": "string",
"Name": "string",
"Price": 0,
"Value": "string"
}
]
}
],
"ListFareData": [
{
"Session": "string",
"FareDataId": 0,
"AutoIssue": true,
"ListFlight": [
{
"FlightValue": "string"
}
]
}
],
"HeaderUser": "string",
"HeaderPass": "string",
"ProductKey": "string",
P a g e 28 | 57
"Language": "string",
"AgentAccount": "string",
"AgentPassword": "string"
}
Bảng mô tả cấu trúc dữ
liệu BookRequest
Trường thông
tin
|
Bắt
buộc
|
Mô
tả
|
Kiểu dữ
liệu
|
Ví
dụ
|
BookType
|
Có |
Kiểu đặt chỗ:
|
string[]
|
book-normal
|
UseAgentContact
|
Có |
Sử dụng thông tin liên
hệ của đại lý khi đặt
chỗ
| bool
|
True
|
Contact
|
Có |
Thông tin liên hệ | Contact
|
|
ListPassenger
|
Có |
Danh sách hành khách | Passenger[]
|
|
ListFareData
|
Có |
Danh sách lựa chọn giá | FareDataInfo[]
|
|
Thông tin xác thực
API
|
Có |
Xem mô tả ở mục Các thuộc tính dùng chung |
|
|
Bảng mô tả cấu trúc dữ
liệu Contact
Trường thông
tin
| Bắt
buộc
| Mô
tả
| Kiểu dữ
liệu
| Ví
dụ
|
Gender
| Có | Danh xưng:
True – Ông, False – Bà
| bool
| True
|
FirstName
| Có | Họ người liên hệ | string | NGOC LINH |
LastName
| Có | Tên người liên hệ | string
| TRAN |
Area | Có | Mã vùng điện thoại | string | +84 |
Phone
| Có | Số điện thoại | string
| 912345678
|
Email | Có | Địa chỉ email | string
| linh@mail.com
|
Address
| Có | Địa chỉ liên hệ | string
| Dong Da, Hanoi |
Bảng mô tả cấu trúc dữ
liệu Passenger
Trường thông
tin
|
Bắt
buộc
|
Mô
tả
|
Kiểu dữ
liệu
|
Ví
dụ
|
Index
|
Có |
Số thứ tự trong danh sách
|
int
|
0 |
FirstName
|
Có |
Họ | string |
NGOC LINH
|
LastName
|
Có |
Tên đệm và tên | string
|
TRAN
|
Type
|
Có |
Loại khách
ADT, CHD, INF
| string
|
ADT
|
Gender
|
Có |
Giới tính:
True – Nam, False – Nữ
| bool
|
True
|
Birthday
|
Tùy chọn |
Ngày sinh
Định dạng ddMMyyyy
| string
|
15061988 |
ListBaggage
|
Không |
Danh sách hành lý ký gửi | Baggage[]
|
|
Bảng mô tả cấu trúc dữ
liệu Baggage
Trường thông
tin
|
Bắt
buộc
|
Mô
tả
|
Kiểu dữ
liệu
|
Ví
dụ
|
Airline
|
Có |
Mã hàng hàng không
|
string
|
VJ |
Leg
|
Không |
Thứ tự chuyến bay | int |
0 |
Route
|
Có |
Giá trị chặng bay | string
|
HANSGN
|
Code | Có |
Mã gói hành lý | string
|
15 |
Currency
|
Không |
Mã tiền tệ | string
|
VND
|
Name
|
Không |
Tên gói hành lý | string
|
15kg
baggage
|
Price
|
Có |
Giá tiền gói hành lý | double |
154.000
|
Value | Có |
Số cân nặng gói hành lý | string
|
15kg
|
Bảng mô tả cấu trúc dữ
liệu FareDataInfo
Trường thông
tin
|
Bắt
buộc
|
Mô
tả
|
Kiểu dữ
liệu
|
Ví
dụ
|
Session
|
Có |
Phiên làm việc
|
string
|
DC0001HAN… |
FareDataId
|
Có |
Mã định danh lựa chọn
giá
| int |
15 |
AutoIssue
|
Có |
Đặt chỗ và xuất vé luôn
chuyến bay này
| bool |
False |
ListFlight
|
Có |
Danh sách chuyến bay
lựa chọn
| FlightInfo[] |
|
Bảng mô tả cấu trúc dữ
liệu FlightInfo
Trường thông
tin
|
Bắt
buộc
|
Mô
tả
|
Kiểu dữ
liệu
|
Ví
dụ
|
FlightValue
|
Có |
Giá trị chuyến bay
|
string
|
1VJ123HAN… |
▪ Lưu ý:
- Thông tin FirstName, LastName của hành khách không có dấu tiếng Việt, không chứa số, không chứa ký tự đặc biệt. Đối tác cần nhập vào chính xác tên đầy đủ của hành khách. Không test với dữ liệu phản cảm (aaaaa, bbbb…).
- Khách hàng nên truyền đúng tên hành khách theo định dạng:
+ FirstName (Tên đệm và tên): NGOC LINH
+ LastName (Họ): TRAN
- Lưu ý đối với 2 trường thông tin "Area" và "Phone" trong "Contact":
+ Đối với trường "Area", những số điện thoại tại Việt Nam khi truyền vào khách hàng phải truyền đúng giá trị "+84", còn những số điện thoại tại quốc gia khác khách hàng truyền "Area" theo mã quốc gia của số điện thoại được truyền đi.
+ Đối với trường "Phone", những số điện thoại tại Việt Nam khi truyền vào phải bỏ số "0" ở đầu số. Ví dụ: "904941298"
- Nếu UseAgentContact = True: Hệ thống Booking Engine sẽ lấy thông tin đối tác đã đăng ký tài khoản sử dụng trên hệ thống Datacom để đặt chỗ (Email, Phone, Address).
- Các thông tin liên hệ: Email, Phone, Address phải là dữ liệu hợp lệ, không test với dữ liệu phản cảm (aaaaa@aaa.com, aaaa bbbb, 11112222…). Thông tin liên hệ này để các hãng hàng không gửi thông báo về việc thay đổi chuyến bay cho hành khách, truyền dữ liệu thật nhất có thể.
- Nếu tham số AutoIssue = true: Hệ thống sẽ đặt chỗ và xuất vé luôn (thanh toán bằng tài khoản đại lý) cho chặng bay này. Trong trường hợp các loại giá vé khuyến mại, chuyến bay sát giờ khởi hành, các hãng LCC không cho giữ chỗ, đối tác có thể sử dụng tính năng này để đặt và xuất vé luôn.
- Đối tác cần thận trọng khi sử dụng tính năng này, vì vé xuất sẽ là vé thật và tài khoản đại lý sẽ bị trừ tiền khi xuất vé.
- Vui lòng liên hệ với bộ phận hỗ trợ của Datacom nếu gặp bất cứ khó khăn gì trong quá trình tích hợp đặt chỗ.
Kết quả trả về
▪ Cấu trúc dữ liệu trả về: BookResponse
{
"BookingId": 0,
"ListBooking": [
{
"Status": "string",
"Airline": "string",
"BookingCode": "string",
"GdsCode": "string",
"Flight": "string",
"Route": "string",
"ErrorCode": "string",
"ErrorMessage": "string",
"BookingImage": "string",
"ExpiryDate": "2019-05-31T06:44:02.464Z",
"ResponseTime": 0,
"System": "string",
"Price": 0,
"Difference": 0,
"ListTicket": [
{
"Index": 0,
"Airline": "string",
"TicketNumber": "string",
"IssueDate": "2019-05-31T06:44:02.464Z",
"BookingCode": "string",
P a g e 30 | 57
"PassengerName": "string",
"BookingFile": "string",
"TicketImage": "string",
"TotalPrice": 0,
"Status": "string",
"ErrorMessage": "string"
}
],
"Session": "string",
"FareData": {
"FareDataId": 0,
"Airline": "string",
"Itinerary": 0,
"Leg": 0,
"Promo": true,
"Currency": "string",
"System": "string",
"Adt": 0,
"Chd": 0,
"Inf": 0,
"FareAdt": 0,
"FareChd": 0,
"FareInf": 0,
"TaxAdt": 0,
"TaxChd": 0,
"TaxInf": 0,
"FeeAdt": 0,
"FeeChd": 0,
"FeeInf": 0,
"ServiceFeeAdt": 0,
"ServiceFeeChd": 0,
"ServiceFeeInf": 0,
"TotalNetPrice": 0,
"TotalServiceFee": 0,
"TotalPrice": 0,
"ListFlight": [
{
"FlightId": 0,
"Leg": 0,
"Airline": "string",
"StartPoint": "string",
"EndPoint": "string",
"StartDate": "2019-05-31T06:44:02.464Z",
"EndDate": "2019-05-31T06:44:02.464Z",
"FlightNumber": "string",
"StopNum": 0,
"HasDownStop": true,
"Duration": 0,
"NoRefund": true,
"GroupClass": "string",
"FareClass": "string",
"Promo": true,
"FlightValue": "string",
"ListSegment": [
{
"Id": 0,
"Airline": "string",
"StartPoint": "string",
"EndPoint": "string",
"StartTime": "2019-05-31T06:44:02.464Z",
"EndTime": "2019-05-31T06:44:02.464Z",
"FlightNumber": "string",
"Duration": 0,
"Class": "string",
"Plane": "string",
"StartTerminal": "string",
"EndTerminal": "string",
"HasStop": true,
"StopPoint": "string",
"StopTime": 0,
"DayChange": true,
"StopOvernight": true,
"ChangeStation": true,
"ChangeAirport": true,
"LastItem": true,
"HandBaggage": "string"
}
]
}
]
}
}
],
"Status": true,
"ErrorCode": "string",
"Message": "string",
"Language": "string"
}
▪ Đặc tả cấu trúc dữ liệu trả về
Bảng mô tả cấu trúc dữ liệu BookRespondse
Trường thông
tin
|
Mô
tả
|
Kiểu dữ
liệu
|
Ví
dụ
|
Status
|
Kết quả kết nối
|
bool
|
True
|
ErrorCode
|
Mã lỗi (nếu có) |
string |
|
Message
|
Thông báo lỗi (nếu có) |
string |
|
BookingId
|
Mã giao dịch trên hệ thống
Datacom
|
int |
999999 |
ListBooking
|
Danh sách đặt chỗ
|
Booking |
|
Bảng mô tả cấu trúc dữ liệu VerifyRespondse
Trường thông
tin
|
Mô
tả
|
Kiểu dữ
liệu
|
Ví
dụ
|
Status
|
Trạng thái giữ chỗ
OK: Giữ chỗ thành công
FAIL: Giữ chỗ lỗi
|
bool
|
OKTrue
|
Airline
|
Mã hãng hàng không |
string |
VN |
BookingCode
|
Thông báo lỗi (nếu có) |
string |
HWBGTD
|
GdsCode
|
Mã đặt chỗ trên hệ thống
GDS
|
string |
|
Flight
|
Thông tin chuyến bay của
booking
|
string |
|
Route
|
Chặng bay của booking
|
string |
HANSGN|SGNHAN
|
ErrorMessage
|
Thông báo lỗi (nếu có)
|
string |
|
BookingImage
|
Mặt booking (Sabre)
|
string |
|
ExpiryDate
|
Ngày hết hạn
|
DateTime[] |
|
ResponseTime
|
Thời gian xử lý (giây)
|
double |
8.79
|
System
|
Hệ thống giữ chỗ
|
string |
Sabre
|
Price
|
Tổng giá mới nhất của
chuyến bay
|
double |
1250000
|
Difference
|
Chênh lệch giá vé nếu có
|
double |
0 |
Session
|
Phiên làm việc với giá vé mới |
string |
DTC123VNHANSGN |
FareData
|
Thông tin về chuyến bay mới nhất |
FareData |
|
ListTicket
|
Danh sách vé nếu chọn chế
độ xuất vé tự động
|
Ticket[] |
|
Vui lòng xem mô tả cấu trúc dữ liệu Ticket ở mục 6. Xuất vé
▪ Lưu ý:
- API trả về mã số giao dịch BookingId. Mã này sẽ được sử dụng để truy xuất dữ liệu booking trên hệ thống của Datacom.
- API trả về danh sách thông tin đặt chỗ PNR (Passenger Name Record):
o Nếu Status = OK: Đặt chỗ thành công.
o Nếu Status = FAIL: Đặt chỗ không thành công.
- BookingCode: Mã giữ chỗ trên hãng hàng không.
- GdsCode: Mã giữ chỗ trên hệ thống GDS. Lưu ý về GdsCode:
o Các chuyến bay nội địa hoặc quốc tế trên các hãng hàng không LCC, hệ
thống không có thông tin GdsCode
o Các chuyến bay quốc tế trên GDS: Hệ thống có thể có nhiều BookingCode của từng hãng cho từng chặng bay. Trong trường hợp hệ thống GDS
(Galileo) chưa kết nối được tới hãng hàng không để lấy về mã đặt chỗ từ hãng, API sẽ chỉ trả về GdsCode mà không trả về BookingCode.
- Khách hàng cần kiểm tra mã lỗi, thông báo lỗi để biết được nguyên nhân đặt chỗ không thành công.
- BookingImage: Sẽ được trả về tùy dữ liệu của hãng hàng không, hệ thống giữ chỗ.
- System: Hệ thống giữ chỗ
o lowcost: Giữ chỗ trên hệ thống web agent của các hãng LCC.
o sahre: Giữ chỗ hãng VN trên hệ thống Sabre.
o galileo: Giữ chỗ trên hệt hống GDS Galileo.
- ListTicket: Nếu AutoTicket = True, API sẽ trả về danh sách vé xuất kèm booking.
- Flight: Thông tin giá trị chuyến bay của booking, giá trị được lấy từ trường FlightValue trong request đặt chỗ. Nếu booking khứ hồi, các giá trị chuyến bay sẽ
được ngăn cách nhau bởi ký tự |. Ví dụ:
o Một chiều:0VJ163J_EcoHANSGN201907202010
o Khứ hồi:0VN163PHANSGN201907| 1VN172THANSGN2019072
- Route: Thông tin chặng bay của booking, chặng bay sẽ được ghép từ cặp mã sân bay khởi hành và sân bay hạ cánh của chặng bay. Nếu booking khứ hồi, các chặng bay sẽ
được ngăn cách nhau bởi ký tự |. Ví dụ:
o Một chiều: HANSGN
o Khứ hồi: HANSGN|SGNHAN
- FareData: Thông tin chuyến bay mới nhất còn tồn tại.
- Session: Phiên làm việc với giá vé mới nhất, sử dụng thông tin này để thực hiện đặt chỗ với giá vé mới nhất trong trường hợp giá vé hoặc chuyến bay bị thay đổi.