Confirm booking price.
# 1. Tổng quan
- Action URL:
/api/v1/vj/flight/confirm-price-booking - Đặc tả chi tiết: Swagger UI (opens new window)
- Tính năng: API xác nhận giá đặt chỗ của Vietjet Air. Gửi thông tin đặt chỗ để xác nhận giá.
- Điều kiện: Chỉ áp dụng cho tài khoản có quyền truy cập hợp lệ.
# 2. Hướng dẫn
- Bước 1: Xây dựng request với đầy đủ header và body
- Bước 2: Gửi request
POSTtới Action URL - Bước 3: Nhận về response chứa danh sách các dịch vụ bổ sung cho nhiều booking
# 3. Request
# 3.1 Ví dụ
{
"bookingInformation": {
"contactInformation": {
"name": "Business Name",
"phoneNumber": "+84987654222",
"extension": "123",
"email": "abc@gmail.com",
"language": {
"href": "/languages/en",
"code": "en",
"name": "English"
}
}
},
"passengers": [
{
"index": 1,
"fareApplicability": {
"child": false,
"adult": true
},
"reservationProfile": {
"lastName": "Pham",
"firstName": "Quang Minh",
"title": "Mr",
"gender": "Male",
"birthDate": "1985-03-12",
"personalContactInformation": {
"phoneNumber": "",
"mobileNumber": "0905111222",
"email": "minhpham@example.com"
}
}
}
],
"journeys": [
{
"index": 1,
"passengerJourneyDetails": [
{
"passenger": {
"index": 1
},
"segment": null,
"bookingKey": "nlBxOkrƒeWPjoL8DOWVTrSSMIRxvqAwAFKZpI1MQFZPWƒNGuZJElSP4Gl2qOREIS5RXV¥AHFGCPiLN8clSLDSxmyGm2yDqToGbfPbf5ptnEM4gAdMnM2PEdT ...",
"reservationStatus": {
"confirmed": true,
"waitlist": false,
"standby": false,
"cancelled": false,
"open": false,
"finalized": false,
"external": false
}
}
]
}
],
"paymentTransactions": [
{
"paymentMethod": {
"href": "https://vietjet-api.intelisystraining.ca/RESTv1/paymentMethods/tfCeB5%C2%A5mircWvs2C4HkDdOXNJf%C6%92NFOopDW2yQCBh2p1rOTwFA5LN6VUgknLR%C2%A5uSRURzqRAo79Q%C2%A5yB9ni61HUMA==",
"key": "tfCeB5¥mircWvs2C4HkDdOXNJfƒNFOopDW2yQCBh2p1rOTwFA5LN6VUgknLR¥uSRURzqRAo79Q¥yB9ni61HUMA==",
"identifier": "PL",
"description": "Pay Later"
},
"paymentMethodCriteria": {
"thirdParty": {
"clientIP": "118.70.168.28",
"language": {
"code": "en"
}
},
"applicationIdentifier": "",
"redirectURL": "",
"postURL": "",
"postData": "",
"reference": "",
"account": {
"company": {
"key": "AozgTRmbFSmsfRtwtRLfhtfveKseXDpGLFRvaCM7zVE=",
"account": {
"accountNumber": "34101989",
"creditLimit": 0,
"creditAvailable": 97412989333.83,
"currency": {
"code": "VND",
"description": "Vietnam Dong"
}
}
}
}
},
"currencyAmounts": [
{
"totalAmount": 3953200,
"currency": {
"code": "VND"
}
}
]
}
]
}
# 3.2 Cấu trúc dữ liệu Request
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả / Ý nghĩa |
|---|---|---|---|
bookingInformation.contactInformation.name | String | Có | Tên người liên hệ hoặc tên doanh nghiệp |
bookingInformation.contactInformation.phoneNumber | String | Có | Số điện thoại liên hệ chính |
bookingInformation.contactInformation.extension | String | Không | Số máy nhánh |
bookingInformation.contactInformation.email | String | Có | Địa chỉ email liên hệ |
bookingInformation.contactInformation.language.code | String | Có | Mã ngôn ngữ (ví dụ: "en") |
bookingInformation.contactInformation.language.name | String | Có | Tên ngôn ngữ (ví dụ: "English") |
passengers[].index | Integer | Có | Số thứ tự hành khách trong danh sách |
passengers[].fareApplicability.child | Boolean | Có | Xác định hành khách là trẻ em hay không |
passengers[].fareApplicability.adult | Boolean | Có | Xác định hành khách là người lớn |
passengers[].reservationProfile.lastName | String | Có | Họ của hành khách |
passengers[].reservationProfile.firstName | String | Có | Tên của hành khách |
passengers[].reservationProfile.title | String | Có | Danh xưng (Mr, Ms, Mrs, v.v.) |
passengers[].reservationProfile.gender | String | Có | Giới tính của hành khách |
passengers[].reservationProfile.birthDate | Date | Có | Ngày sinh hành khách (YYYY-MM-DD) |
passengers[].reservationProfile.personalContactInformation.phoneNumber | String | Không | Số điện thoại bàn (nếu có) |
passengers[].reservationProfile.personalContactInformation.mobileNumber | String | Có | Số điện thoại di động của hành khách |
passengers[].reservationProfile.personalContactInformation.email | String | Có | Email cá nhân của hành khách |
journeys[].index | Integer | Có | Số thứ tự hành trình |
journeys[].passengerJourneyDetails[].passenger.index | Integer | Có | Tham chiếu đến hành khách trong danh sách passengers |
journeys[].passengerJourneyDetails[].segment | Object / Null | Có | Thông tin chặng bay, có thể null |
journeys[].passengerJourneyDetails[].bookingKey | String | Có | Mã định danh duy nhất cho hành trình |
journeys[].passengerJourneyDetails[].reservationStatus.confirmed | Boolean | Có | Trạng thái đã xác nhận |
journeys[].passengerJourneyDetails[].reservationStatus.waitlist | Boolean | Có | Trạng thái danh sách chờ |
journeys[].passengerJourneyDetails[].reservationStatus.standby | Boolean | Có | Trạng thái chờ bay |
journeys[].passengerJourneyDetails[].reservationStatus.cancelled | Boolean | Có | Trạng thái hủy |
journeys[].passengerJourneyDetails[].reservationStatus.open | Boolean | Có | Trạng thái mở |
journeys[].passengerJourneyDetails[].reservationStatus.finalized | Boolean | Có | Đã hoàn tất hay chưa |
journeys[].passengerJourneyDetails[].reservationStatus.external | Boolean | Có | Xác định trạng thái bên ngoài |
paymentTransactions[].paymentMethod.key | String | Có | Mã định danh của phương thức thanh toán |
paymentTransactions[].paymentMethod.identifier | String | Có | Mã ngắn phương thức (ví dụ: "PL") |
paymentTransactions[].paymentMethod.description | String | Có | Mô tả phương thức thanh toán ("Pay Later") |
paymentTransactions[].paymentMethodCriteria.thirdParty.clientIP | String | Có | Địa chỉ IP khách hàng |
paymentTransactions[].paymentMethodCriteria.thirdParty.language.code | String | Có | Ngôn ngữ giao dịch ("en") |
paymentTransactions[].paymentMethodCriteria.account.company.key | String | Có | Khóa định danh công ty |
paymentTransactions[].paymentMethodCriteria.account.company.account.accountNumber | String | Có | Số tài khoản công ty |
paymentTransactions[].paymentMethodCriteria.account.company.account.creditLimit | Number | Có | Hạn mức tín dụng |
paymentTransactions[].paymentMethodCriteria.account.company.account.creditAvailable | Number | Có | Số dư tín dụng khả dụng |
paymentTransactions[].paymentMethodCriteria.account.company.account.currency.code | String | Có | Mã tiền tệ ("VND") |
paymentTransactions[].currencyAmounts[].totalAmount | Number | Có | Tổng số tiền giao dịch |
paymentTransactions[].currencyAmounts[].currency.code | String | Có | Mã tiền tệ của giao dịch |
# 4. Response
# 4.1 Ví dụ
{
"statusCode": 200,
"timestamp": "2025-10-28T06:56:27.846Z",
"path": "/api/v1/vj/flight/confirm-price-booking",
"message": "Xác nhận giá đặt chỗ thành công",
"data": {
"key": null,
"number": null,
"locator": null,
"charges": [
{
"key": null,
"passenger": {
"index": 1
},
"journey": {
"index": 1
},
"chargeTime": "2025-10-28 06:56:27Z",
"description": "W1_ECO - Eco1",
"chargeType": {
"code": "FA",
"description": "Fare",
"feeCategory": null,
"index": 20
},
"ancillaryPurchase": null,
"seatSelection": null,
"infant": null,
"fareClass": {
"key": "wb4xb3F9Evee1nOH8bSvfcwi2IV1nwX61XfbWwY6pQc=",
"code": "W1_ECO"
},
"bookingKey": "vGpcreI82HpY1UNRPBqiXWWieJQWb0bUP7DqvjKwHfgIFNermfujo¥Sv5S0qvc8c8gedAJBLipk61PdTNNTk54c¥r5n9WdSXZpRTy41iKvSy6tDlBNE2AEmTWKZ7xƒs3",
"surcharge": null,
"currencyAmounts": [
{
"baseAmount": 962000,
"discountAmount": 0,
"taxAmount": 77000,
"taxRateAmounts": [
{
"name": "Tax 1",
"amount": 77000
}
],
"totalAmount": 1039000,
"currency": {
"code": "VND",
"description": "Vietnam Dong"
},
"exchangeRate": 1.08000000003024
},
{
"totalAmount": 961200,
"currency": {
"code": "NUC",
"description": "NUC"
},
"exchangeRate": 1
}
],
"taxConfiguration": {
"key": "TCI54p3owhwgKKHNAwXBUgDwg¥kIHoP6vG¥b6KGX1xM=",
"name": "VAT8"
},
"status": {
"active": true,
"historical": false,
"pending": true
},
"discount": null,
"refundable": true,
"privateFares": false,
"notes": "",
"timestamp": ""
},
{
"key": null,
"passenger": {
"index": 1
},
"journey": {
"index": 1
},
"chargeTime": "2025-10-28 06:56:27Z",
"description": "Airport Tax Domestic",
"chargeType": {
"code": "AI",
"description": "Airport Improvement Fund",
"feeCategory": null,
"index": 30
},
"ancillaryPurchase": null,
"seatSelection": null,
"infant": null,
"fareClass": null,
"bookingKey": null,
"surcharge": {
"key": "X2fXNzLhG1ZdI6mgOVBri8ETHP1¥z0ESQynMzbzZtIw=",
"identifier": "AXD",
"description": "Airport Tax Domestic"
},
"currencyAmounts": [
{
"baseAmount": 107000,
"discountAmount": 0,
"taxAmount": 0,
"taxRateAmounts": [],
"totalAmount": 107000,
"currency": {
"code": "VND",
"description": "Vietnam Dong"
},
"exchangeRate": 1.08000000003024
},
{
"totalAmount": 99000,
"currency": {
"code": "NUC",
"description": "NUC"
},
"exchangeRate": 1
}
],
"taxConfiguration": {
"key": "TCI54p3owhwgKKHNAwXBUiA1mqklQBHwTGLN3bf3CMs=",
"name": "TAX EXEMPT"
},
"status": {
"active": true,
"historical": false,
"pending": true
},
"discount": null,
"refundable": true,
"privateFares": false,
"notes": "",
"timestamp": ""
},
{
"key": null,
"passenger": {
"index": 1
},
"journey": {
"index": 1
},
"chargeTime": "2025-10-28 06:56:27Z",
"description": "Airport Security",
"chargeType": {
"code": "AS",
"description": "Airport Security Scan",
"feeCategory": null,
"index": 31
},
"ancillaryPurchase": null,
"seatSelection": null,
"infant": null,
"fareClass": null,
"bookingKey": null,
"surcharge": {
"key": "X2fXNzLhG1ZdI6mgOVBri7bCnzberNu3WpKckcRZOT8=",
"identifier": "AS",
"description": "Airport Security"
},
"currencyAmounts": [
{
"baseAmount": 21700,
"discountAmount": 0,
"taxAmount": 0,
"taxRateAmounts": [],
"totalAmount": 21700,
"currency": {
"code": "VND",
"description": "Vietnam Dong"
},
"exchangeRate": 1.08000000003024
},
{
"totalAmount": 20000,
"currency": {
"code": "NUC",
"description": "NUC"
},
"exchangeRate": 1
}
],
"taxConfiguration": {
"key": "TCI54p3owhwgKKHNAwXBUiA1mqklQBHwTGLN3bf3CMs=",
"name": "TAX EXEMPT"
},
"status": {
"active": true,
"historical": false,
"pending": true
},
"discount": null,
"refundable": true,
"privateFares": false,
"notes": "",
"timestamp": ""
},
{
"key": null,
"passenger": {
"index": 1
},
"journey": {
"index": 1
},
"chargeTime": "2025-10-28 06:56:27Z",
"description": "Admin Fee Domestic",
"chargeType": {
"code": "AM",
"description": "Admin Fee",
"feeCategory": null,
"index": 22
},
"ancillaryPurchase": null,
"seatSelection": null,
"infant": null,
"fareClass": null,
"bookingKey": null,
"surcharge": {
"key": "X2fXNzLhG1ZdI6mgOVBrixqhƒC65iPmepw¥2dlis6¥w=",
"identifier": "AFD",
"description": "Admin Fee Domestic"
},
"currencyAmounts": [
{
"baseAmount": 232300,
"discountAmount": 0,
"taxAmount": 18600,
"taxRateAmounts": [
{
"name": "Tax 1",
"amount": 18600
}
],
"totalAmount": 250900,
"currency": {
"code": "VND",
"description": "Vietnam Dong"
},
"exchangeRate": 1.08000000003024
},
{
"totalAmount": 232200,
"currency": {
"code": "NUC",
"description": "NUC"
},
"exchangeRate": 1
}
],
"taxConfiguration": {
"key": "TCI54p3owhwgKKHNAwXBUgDwg¥kIHoP6vG¥b6KGX1xM=",
"name": "VAT8"
},
"status": {
"active": true,
"historical": false,
"pending": true
},
"discount": null,
"refundable": true,
"privateFares": false,
"notes": "",
"timestamp": ""
},
{
"key": null,
"passenger": {
"index": 1
},
"journey": {
"index": 1
},
"chargeTime": "2025-10-28 06:56:27Z",
"description": "Management Fee Domestic",
"chargeType": {
"code": "MF",
"description": "Management Fee",
"feeCategory": null,
"index": 0
},
"ancillaryPurchase": null,
"seatSelection": null,
"infant": null,
"fareClass": null,
"bookingKey": null,
"surcharge": {
"key": "X2fXNzLhG1ZdI6mgOVBri34PdCrKbRzAYAvtMR5Qkaw=",
"identifier": "MF",
"description": "Management Fee Domestic"
},
"currencyAmounts": [
{
"baseAmount": 232300,
"discountAmount": 0,
"taxAmount": 18600,
"taxRateAmounts": [
{
"name": "Tax 1",
"amount": 18600
}
],
"totalAmount": 250900,
"currency": {
"code": "VND",
"description": "Vietnam Dong"
},
"exchangeRate": 1.08000000003024
},
{
"totalAmount": 232200,
"currency": {
"code": "NUC",
"description": "NUC"
},
"exchangeRate": 1
}
],
"taxConfiguration": {
"key": "TCI54p3owhwgKKHNAwXBUgDwg¥kIHoP6vG¥b6KGX1xM=",
"name": "VAT8"
},
"status": {
"active": true,
"historical": false,
"pending": true
},
"discount": null,
"refundable": true,
"privateFares": false,
"notes": "",
"timestamp": ""
}
],
"paymentTransactions": [
{
"key": null,
"paymentTime": "2025-10-28 06:56:27Z",
"description": null,
"paymentMethod": {
"key": "tfCeB5¥mircWvs2C4HkDdOXNJfƒNFOopDW2yQCBh2p1rOTwFA5LN6VUgknLR¥uSRURzqRAo79Q¥yB9ni61HUMA==",
"identifier": "PL"
},
"paymentMethodCriteria": {},
"currencyAmounts": [
{
"totalAmount": 1669500,
"currency": {
"code": "VND",
"description": "Vietnam Dong",
"baseCurrency": false
},
"exchangeRate": 1.08000000003024
},
{
"totalAmount": 0,
"currency": {
"code": "NUC",
"description": "NUC",
"baseCurrency": true
},
"exchangeRate": 1
}
],
"processingCurrencyAmounts": [
{
"totalAmount": 0,
"currency": {
"code": "VND",
"description": "Vietnam Dong",
"baseCurrency": false
},
"exchangeRate": 1.08000000003024
}
],
"payerDescription": null,
"receiptNumber": null,
"payments": null,
"refundTransactions": null,
"notes": null
}
]
},
"errors": null
}
# 4.2 Cấu trúc dữ liệu
| Tên trường | Kiểu dữ liệu | Bắt buộc | Mô tả / Ý nghĩa |
|---|---|---|---|
statusCode | Integer | Có | Mã trạng thái phản hồi HTTP (200 = thành công) |
timestamp | String (DateTime) | Có | Thời gian hệ thống ghi nhận phản hồi |
path | String | Có | Endpoint được gọi |
message | String | Có | Thông báo kết quả xử lý |
data.key | String / Null | Không | Khóa định danh booking (nếu có) |
data.number | Integer / Null | Không | Số thứ tự hoặc mã nội bộ của booking |
data.locator | String / Null | Không | Mã đặt chỗ (PNR code) |
data.charges[] | Array | Có | Danh sách các khoản phí, thuế, phụ thu... |
charges[].key | String / Null | Không | Mã định danh của khoản phí |
charges[].passenger.index | Integer | Có | Thứ tự hành khách trong danh sách |
charges[].journey.index | Integer | Có | Thứ tự hành trình (ví dụ: chiều đi, chiều về) |
charges[].chargeTime | String (DateTime) | Có | Thời điểm ghi nhận phí |
charges[].description | String | Có | Mô tả loại phí (ví dụ: “Eco Fare”, “Airport Tax”) |
charges[].chargeType.code | String | Có | Mã loại phí (FA = Fare, AI = Airport Improvement...) |
charges[].chargeType.description | String | Có | Diễn giải loại phí |
charges[].chargeType.feeCategory | String / Null | Không | Nhóm loại phí (nếu có) |
charges[].chargeType.index | Integer | Có | Chỉ mục nội bộ của loại phí |
charges[].fareClass.key | String / Null | Không | Mã khóa của hạng vé (fare class) |
charges[].fareClass.code | String / Null | Không | Mã hạng vé (ví dụ: “W1_ECO”) |
charges[].bookingKey | String / Null | Không | Mã khóa đặt chỗ cho phí cụ thể |
charges[].surcharge.key | String / Null | Không | Mã phụ phí (nếu có) |
charges[].surcharge.identifier | String / Null | Không | Ký hiệu phụ phí (ví dụ: “AXD”) |
charges[].surcharge.description | String / Null | Không | Mô tả phụ phí (ví dụ: “Airport Tax Domestic”) |
charges[].currencyAmounts[] | Array | Có | Danh sách chi tiết về tiền tệ, thuế, quy đổi |
currencyAmounts[].baseAmount | Number | Có | Giá gốc của khoản phí |
currencyAmounts[].discountAmount | Number | Có | Số tiền giảm giá (nếu có) |
currencyAmounts[].taxAmount | Number | Có | Tổng thuế áp dụng |
currencyAmounts[].taxRateAmounts[] | Array | Có | Danh sách chi tiết các loại thuế cụ thể |
taxRateAmounts[].name | String | Có | Tên loại thuế (ví dụ: “Tax 1”) |
taxRateAmounts[].amount | Number | Có | Số tiền thuế tương ứng |
currencyAmounts[].totalAmount | Number | Có | Tổng số tiền sau thuế |
currencyAmounts[].currency.code | String | Có | Mã tiền tệ (VND, NUC, v.v.) |
currencyAmounts[].currency.description | String | Có | Tên tiền tệ (“Vietnam Dong”, “NUC”) |
currencyAmounts[].exchangeRate | Number | Có | Tỷ giá quy đổi (so với đơn vị chuẩn) |
charges[].taxConfiguration.key | String | Có | Mã cấu hình thuế áp dụng |
charges[].taxConfiguration.name | String | Có | Tên cấu hình thuế (ví dụ: VAT8, TAX EXEMPT) |
charges[].status.active | Boolean | Có | Cho biết phí đang được kích hoạt |
charges[].status.historical | Boolean | Có | Đánh dấu phí đã qua (lịch sử) |
charges[].status.pending | Boolean | Có | Cho biết phí đang chờ xác nhận |
charges[].discount | Object / Null | Không | Thông tin chiết khấu (nếu có) |
charges[].refundable | Boolean | Có | Cho biết có hoàn tiền được không |
charges[].privateFares | Boolean | Có | Cho biết vé thuộc loại đặc biệt hay không |
charges[].notes | String | Không | Ghi chú bổ sung |
charges[].timestamp | String | Không | Thời gian cập nhật cuối cùng |