Trang này cung cấp tài liệu tham khảo về Thông báo giao dịch dựa trên XML.
<Transaction>
Phần tử gốc của Thông báo giao dịch là <Transaction>
. Đây là vùng chứa thông tin mô tả về phòng và gói dịch vụ, cũng như giá và tình trạng phòng và gói dịch vụ.
Phần tử <Transaction>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Những thông báo dùng <Transaction>
làm phần tử gốc cần có ít nhất một phần tử con. Thông báo giao dịch có thể có số lượng phần tử con bất kỳ, miễn là tổng kích thước của thông báo không vượt quá 100 MB.
Cú pháp
Phần tử <Transaction>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">
<!-- Defines data about a room or package (Room Bundle) -->
<PropertyDataSet>
...
</PropertyDataSet>
<!-- Updates/sets prices and availability for rooms and Room Bundles -->
<!-- (Also removes itineraries from inventory) -->
<Result>
...
</Result>
</Transaction>
Thuộc tính
Phần tử <Transaction>
có các thuộc tính như sau:
Thuộc tính | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
id | Required | string | Giá trị nhận dạng duy nhất của mỗi thông báo Giao dịch. |
partner | Optional | string | Tài khoản đối tác chứa thông báo Giao dịch. Bạn thường sử dụng thuộc tính này nếu phần phụ trợ của bạn cung cấp nguồn cấp dữ liệu giá cho nhiều tài khoản đối tác. Giá trị chuỗi này là giá trị của "Khoá đối tác" được liệt kê trên trang Cài đặt tài khoản trong Hotel Center. |
timestamp | Required | DateTime | Thời điểm gửi Thông báo giao dịch. Mọi thông báo được gửi có dấu thời gian trong vòng 24 giờ trước sẽ được xử lý và những thông báo không có dấu thời gian không bị loại bỏ sẽ bị loại bỏ. Tin nhắn được xử lý theo thứ tự |
Phần tử con
Phần tử <Transaction>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<PropertyDataSet> | Optional* | <PropertyDataSet> |
Mô tả một phòng cụ thể và các Gói dịch vụ phòng. Bạn thường sử dụng phần tử này trong một Thông báo giao dịch riêng để xác định các giá trị dùng chung cho Gói dịch vụ phòng và giảm kích thước của Thông báo giao dịch. |
<Result> | Optional* | <Result> |
Dữ liệu giá cho hành trình của một phòng hoặc một phần tử |
* Bạn phải cung cấp <PropertyDataSet> hoặc <Result> . |
Ví dụ
Dữ liệu về phòng
Ví dụ sau đây xác định dữ liệu phòng trong thông báo Giao dịch:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
Dữ liệu định giá
Ví dụ sau đây xác định dữ liệu giá trong thông báo Giao dịch:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
</Result>
</Transaction>
Giá mỗi đêm
Ví dụ sau đây xác định dữ liệu giá cho 1 đến 7 đêm kể từ ngày 7 tháng 6 năm 2023:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">209.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">419.98</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>3</Nights>
<Baserate currency="USD">614.97</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>4</Nights>
<Baserate currency="USD">819.96</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>5</Nights>
<Baserate currency="USD">999.95</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>6</Nights>
<Baserate currency="USD">1193.94</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>7</Nights>
<Baserate currency="USD">1259.93</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
</Transaction>
Giá cơ sở và giá phòng có điều kiện
Ví dụ sau đây minh hoạ một thông báo Giao dịch chứa giá cơ sở và giá phòng có điều kiện:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
<!-- NOTE: OtherFees is inherited from the above setting -->
<Custom1>ratecode123</Custom1>
</Rate>
</Rates>
</Result>
</Transaction>
Xóa khoảng không quảng cáo
Ví dụ sau đây xoá một số quỹ phòng (thời gian lưu trú 1 đêm trong một vài ngày) của một khách sạn khỏi quỹ phòng:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-23</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-24</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<!---Sending <Baserate> is optional with <Unavailable> -->
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-25</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">-1</Baserate>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
</Transaction>
<PropertyDataSet>
Vùng chứa thông tin về phòng và gói dịch vụ (hoặc Gói dịch vụ phòng) trong thông báo <Transaction>
. Các giá trị được đặt cho khách sạn sẽ thay thế các giá trị được đặt cho đối tác.
Google lưu trữ thông tin này để bạn không cần phải xác định mỗi khi gửi thông tin cập nhật về giá.
Phần tử <PropertyDataSet>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng.
Cú pháp
Phần tử <PropertyDataSet>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> <!-- (Required) ID that matches the Hotel List Feed --> <Property>hotel_ID</Property> <!-- (Optional) Defines metadata about a room --> <RoomData> ... </RoomData> <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) --> <PackageData> ... </PackageData> </PropertyDataSet> ... </Transaction>
Thuộc tính
Phần tử <PropertyDataSet>
chưa có thuộc tính nào.
Phần tử con
Phần tử <PropertyDataSet>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<PackageData> | Optional* | <PackageData> |
Mô tả Gói dịch vụ phòng. Dữ liệu này liên kết với đối tác và khách sạn, nhưng không liên kết với hành trình. Phần tử này tương tự như <RoomData> , nhưng mô tả những tiện nghi và điều khoản không có trong nội dung mô tả phòng thực tế.
Bạn cần tham chiếu đến mã gói kỳ nghỉ trong thông tin cập nhật về giá. Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng. |
<Property> | Required | string | Mã của khách sạn áp dụng dữ liệu liên kết. Giá trị của phần tử này phải là một chuỗi khớp với trang thông tin <id> trong nguồn cấp dữ liệu danh sách khách sạn.
|
<RoomData> | Optional* | <RoomData> |
Mô tả phòng. Dữ liệu này liên kết với đối tác và khách sạn, nhưng không liên kết với hành trình.
Bạn cần tham chiếu đến mã phòng trong thông tin cập nhật giá của mình. |
* Bạn phải cung cấp <PackageData> hoặc <RoomData> . |
Ví dụ
Dữ liệu về phòng và gói dịch vụ
Ví dụ sau đây cho thấy cả dữ liệu về phòng và gói dịch vụ trong một <PropertyDataSet>
:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Khi gửi giá và tình trạng phòng của phòng này và Gói dịch vụ phòng, bạn sẽ tham chiếu mã phòng và mã gói trong thông báo giá. Nhờ đó, bạn sẽ giảm đáng kể kích thước của thông báo, đồng thời giảm số lượng lỗi có thể gặp phải do dữ liệu trùng lặp. Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng.
<RoomData>
Xác định những siêu dữ liệu độc lập với hành trình về phòng, và theo tiện ích, Gói dịch vụ phòng (vì Gói dịch vụ phòng bao gồm cả phòng cộng với các tiện nghi bổ sung). Hãy sử dụng <RoomData>
để giảm tình trạng lặp lại dữ liệu mô tả trong Nguồn cấp dữ liệu giá.
Phần tử <RoomData>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Phần tử <RoomData>
chứa thông tin liên quan đến đối tác và khách sạn, nhưng không liên quan đến hành trình. Mục đích của tính năng này là dành cho tất cả dữ liệu không phải dữ liệu hành trình.
Phần tử <RoomData>
tương tự như <PackageData>
, nhưng mô tả phòng thực tế thay vì các tiện nghi và điều khoản của gói dịch vụ. Bạn sẽ sử dụng kết hợp <RoomData>
và <PackageData>
để cung cấp thông tin chi tiết về Gói dịch vụ phòng. Đối với các phòng riêng lẻ không thuộc gói dịch vụ, chỉ sử dụng <RoomData>
.
Bạn có thể xác định cả phần tử <RoomData>
và <PackageData>
cho cùng một phòng hoặc Gói dịch vụ phòng. Khi Google cho thấy phòng hoặc gói dịch vụ đó trong kết quả tìm kiếm, nội dung mô tả của cả hai nội dung trên sẽ được phân tách bằng dấu gạch nối.
Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng.
Cú pháp
Phần tử <RoomData>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> ... <RoomData> <RoomID>room_ID</RoomID> <Name> <Text text="room_name" language="language_code"/> ... </Name> <Description> <Text text="room_description" language="language_code"/> ... </Description> <Capacity>max_number_of_occupants</Capacity> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults, children, or seniors --></OccupancyDetails> <OccupancySettings> <MinOccupancy>min_number_of_occupants</MinOccupancy> <MinAge>min_age_of_occupants</MinAge> </OccupancySettings> <PhotoURL> <Caption> <Text text="photo_description" language="language_code"/> ... </Caption> <URL>photo_location</URL> </PhotoURL> <RoomFeatures> ... </RoomFeatures> </RoomData> ... </PropertyDataSet> </Transaction>
Thuộc tính
Phần tử <RoomData>
chưa có thuộc tính nào.
Phần tử con
Phần tử <RoomData>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<Capacity> | Optional | integer | Số lượng khách tối đa mà một phòng có thể phục vụ trên thực tế. Đối với một phòng, sức chứa lớn hơn hoặc bằng sức chứa.
Nếu bạn chỉ định thì giá trị này phải bằng hoặc lớn hơn giá trị của phần tử Giá trị của |
<Description> | Optional | Object | Nội dung mô tả chi tiết về phòng. Phần tử này phải chứa những thông tin không được mô tả trong các phần tử khác hoặc phần tử <Name> . Bạn không nên viết hoa tất cả chữ cái khi soạn nội dung mô tả về phòng.
Phần tử
Hãy sử dụng một phần tử Ví dụ sau đây cho thấy nội dung mô tả phòng phiên bản tiếng Pháp và tiếng Anh: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
<Name> | Required | string | Tên của danh mục phòng. Giá trị này phải khớp với giá trị xuất hiện trên trang đích của khách sạn (trước đây là điểm bán hàng). Đừng đặt giá trị của phần tử này thành tất cả chữ cái viết hoa.
Phần tử này có một phần tử con là
Hãy sử dụng một phần tử Ví dụ sau đây cho thấy tên phòng phiên bản tiếng Pháp và tiếng Anh: <Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name> |
<Occupancy> | Optional | integer | Số lượng khách tối đa mà một phòng dự kiến sẽ phục vụ.
Ví dụ: Phòng suite lớn có thể chứa được 6 khách trên thực tế (sức chứa = 6), nhưng dự kiến sẽ chỉ ở được tối đa 4 khách.
Giá trị này phải nhỏ hơn hoặc bằng phần tử Giá trị của
|
<OccupancySettings> | Optional | Object | Các chế độ cài đặt có thể hạn chế hoặc sửa đổi các yêu cầu về số người lưu trú của một phòng.
Phần tử
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Bạn không cần phải thêm tất cả các phần tử con. |
<PhotoURL> | Optional | Object | URL và nội dung chú thích không bắt buộc cho ảnh của phòng hoặc Gói dịch vụ phòng cụ thể. Bạn có thể chỉ định nhiều <PhotoURL> cho một phòng hoặc Gói dịch vụ phòng. Mỗi URL ảnh phải nằm trong <PhotoURL> riêng.
Phần tử này có các phần tử con sau đây:
Ví dụ: <PhotoURL> <URL>https://www.example.com/static/bar/image1234.jpg</URL> <Caption> <Text text="A bright and breezy way to enjoy your mornin' cuppa tea." language="en"/> <Text text="Une façon lumineuse et aérée pour profiter de votre journée tasse de thé." language="fr"/> </Caption> </PhotoURL> <PhotoURL> <URL>https://www.foo.com/static/bar/image5678.jpg</URL> <Caption> <Text text="Or, perhaps you prefer coffee." language="en"/> <Text text="Ou peut-être préférez-vous le café." language="fr"/> </Caption> </PhotoURL> |
<RoomFeatures> | Optional | <RoomFeatures> |
Chứa thông tin về các tiện nghi trong phòng. |
<RoomID> | Required | string | Mã nhận dạng duy nhất của phòng. Sử dụng mã này để so khớp dữ liệu phòng với các khối <Result> trong thông tin cập nhật về giá. Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng. (Bạn cũng có thể sử dụng mã này để tham chiếu định nghĩa phòng chung trong một Thông báo giao dịch duy nhất khi xác định trực tiếp dữ liệu phòng.) |
Ví dụ
Dữ liệu về phòng
Ví dụ sau đây xác định dữ liệu phòng:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="Simple Lit de Roi" language="fr"/>
</Name>
<Description>
<Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail. Cable/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
Siêu dữ liệu về phòng và gói dịch vụ
Ví dụ sau đây xác định siêu dữ liệu về phòng và gói dịch vụ:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Nhiều gói dịch vụ phòng
Ví dụ sau đây xác định siêu dữ liệu về phòng và gói dịch vụ cho nhiều Gói dịch vụ phòng:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
<RoomFeatures>
Xác định các tính năng có trong phòng.
Phần tử <RoomFeatures>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<RoomFeatures>
Cú pháp
Phần tử <RoomFeatures>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet ... > ... <RoomData> <RoomFeatures> <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle> <Beds> <Bed size="[single|semi_double|double|queen|king]"> <Width unit="cm" number="width"/> <Length unit="cm" number="length"/> </Bed> <!-- Include with any additional beds. --> </Beds> <Suite/> <Capsule/> <Roomsharing>[shared|private]</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>[smoking|non_smoking]</Smoking> <BathAndToilet relation="[together|separate]"> <Bath bathtub="[false|true]" shower="[false|true]"/> <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <!-- (Optional) Defines the type of views from the room. --> <!-- Example: <OceanView/> --> </Views> </RoomFeatures> ... </RoomData> ... </PropertyDataSet> </Transactions>
Thuộc tính
Phần tử <RoomFeatures>
chưa có thuộc tính nào.
Phần tử con
Phần tử <RoomFeatures>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<JapaneseHotelRoomStyle> | Optional | enum | Cho biết kiểu của một phòng khách sạn kiểu Nhật. Các giá trị hợp lệ là:
|
<Beds> | Optional | Object | Chứa số lượng <Bed> tối đa trong phòng. Xin lưu ý rằng
bàn đạp kiểu Nhật Bản sẽ không được tính ở đây.
Mỗi
<Bed> có các phần tử con sau:
<Beds> <Bed size="double"> <Width unit="cm" number="140"/> <Length unit="cm" number="195"/> </Bed> <Bed/> <!-- Size unknown --> </Beds> |
<Suite> | Optional | empty | Cung cấp phần tử này khi phòng này là một căn suite. |
<Capsule> | Optional | empty | Cung cấp phần tử này khi phòng này là phòng con nhộng. |
<Roomsharing> | Optional | enum | Phòng này có được chia sẻ với những người lưu trú khác như chủ sở hữu hoặc khách khác hay không. Các giá trị hợp lệ là shared và private . |
<Outdoor> | Optional | empty | Cung cấp phần tử này khi phòng này là cơ sở lưu trú ngoài trời không có tường cố định, hệ thống ống nước và hệ thống điều hoà không khí. Ví dụ: phòng khách sạn không phải là chỗ lưu trú ngoài trời, còn những khu cắm trại nơi khách ở trong lều và bãi đỗ xe RV nơi khách mang theo xe RV riêng là chỗ ở ngoài trời. |
<MobilityAccessible> | Optional | empty | Hãy cung cấp phần tử này khi phòng này cho phép người khuyết tật. |
<Smoking> | Optional | enum | Cho dù phòng này là phòng cấm hút thuốc hay phòng hút thuốc. Các giá trị hợp lệ là non_smoking và smoking . |
<BathAndToilet> | Optional | Object | Chứa thông tin về bồn tắm và nhà vệ sinh trong phòng.
Thuộc tính này là:
Phần tử này tuỳ ý nhận các phần tử con sau đây:
Ví dụ: <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> |
<OpenAirBath> | Optional | empty | Cung cấp phần tử này khi phòng này có bồn tắm riêng ngoài trời. |
<AirConditioning> | Optional | empty | Cung cấp phần tử này khi phòng này có máy điều hoà. |
<Balcony> | Optional | empty | Cung cấp phần tử này khi phòng này có ban công hoặc mái hiên. |
<Views> | Optional | Object | Các lựa chọn hợp lệ bao gồm:
|
Ví dụ
JapaneseHotelRoomStyle
không có giá trị mặc định. Việc bỏ qua một giá trị sẽ không dẫn đến lỗi XML. Tuy nhiên, trang thông tin của bạn sẽ không xuất hiện trong kết quả tìm kiếm khi người dùng lọc theo kiểu phòng hoặc loại giường.
2 giường đơn
Ví dụ sau đây trình bày cách sử dụng <RoomFeatures>
:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two single beds -->
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>private</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>non_smoking</Smoking>
<BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet electronic_bidet="1" mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<LakeView/>
<MarinaView/>
<BeachView/>
<ForestView/>
<MountainView/>
<NatureView/>
</Views>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
2 giường đôi nhỏ
Sau đây là ví dụ về phòng kiểu Nhật western
có 2 giường double
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two double beds-->
<Bed size="double"></Bed>
<Bed size="double"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Kiểu Nhật không có giường
Sau đây là ví dụ về một phòng kiểu Nhật không có giường. Bạn không bắt buộc phải cung cấp thông tin về giường cho phòng kiểu japanese
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Phương Tây kiểu Nhật có giường
Sau đây là ví dụ về một phòng kiểu japanese_western
có giường kích thước king
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
<Beds>
<Bed size="king"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
Nếu đối tác không có thông tin về số giường trong phòng japanese_western
, hãy làm theo ví dụ:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
<PackageData>
Xác định siêu dữ liệu độc lập với hành trình về Gói dịch vụ phòng của một cơ sở lưu trú. Phần tử này chứa thông tin liên kết với đối tác và khách sạn, nhưng không liên kết với hành trình. Mục đích là để xác định một lần tất cả dữ liệu không phải hành trình và tham chiếu đến dữ liệu đó từ dữ liệu hành trình.
Phần tử <PackageData>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Phần tử <PackageData>
tương tự như <RoomData>
nhưng mô tả các dịch vụ theo đơn giá và điều khoản không có trong nội dung mô tả phòng thực tế. Bạn sẽ sử dụng kết hợp <RoomData>
và <PackageData>
để cung cấp thông tin chi tiết về Gói dịch vụ phòng và dịch vụ theo đơn giá. Đối với các phòng riêng lẻ không thuộc gói dịch vụ, chỉ sử dụng <RoomData>
.
Bạn có thể xác định cả phần tử <RoomData>
và <PackageData>
cho cùng một phòng hoặc Gói dịch vụ phòng. Khi Google cho thấy phòng hoặc gói dịch vụ đó trong kết quả tìm kiếm, nội dung mô tả của cả hai nội dung trên sẽ được phân tách bằng dấu gạch nối.
Nếu cập nhật một phần tử <PackageData>
duy nhất cho một thuộc tính, bạn phải cập nhật tất cả các phần tử <PackageData>
và <RoomData>
cho thuộc tính đó.
Mỗi <PropertyDataSet>
được xem là toàn bộ dữ liệu về thuộc tính và ghi đè mọi dữ liệu hiện có.
Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng.
Cú pháp
Phần tử <PackageData>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<PropertyDataSet ... >
<PackageData>
<PackageID>package_ID</PackageID>
<Name>
<Text text="package_name" language="language_code"/>
...
</Name>
<Description>
<Text text="package_description" language="language_code"/>
...
</Description>
<Refundable available="[false|true]" refundable_until_days="number_of_days"
refundable_until_time="time"/>
<ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
<Occupancy>max_number_of_intended_occupants</Occupancy>
<OccupancyDetails><!-- optional info about the types of guests,
whether adults or children --></OccupancyDetails>
<!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
<BreakfastIncluded>boolean_value</BreakfastIncluded>
<InternetIncluded>boolean_value</InternetIncluded>
<ParkingIncluded>boolean_value</ParkingIncluded>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
...
</Caption>
<URL>photo_location</URL>
</PhotoURL>
...
<Meals>
<Breakfast
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
<Dinner
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
</Meals>
<CheckinTime>checkin_time</CheckinTime>
<CheckoutTime>checkout_time</CheckoutTime>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Special Rewards">
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum">
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<!-- a PackageID with a MilesIncluded
rate feature -->
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en">
</Name>
<ChargeCurrency>hotel </ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>1000 </NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines">
</Provider>
</MilesIncluded>
</PackageData>
...
...
</PropertyDataSet>
...
</Transaction>
Thuộc tính
Phần tử <PackageData>
chưa có thuộc tính nào.
Phần tử con
Phần tử <PackageData>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<BreakfastIncluded> | Optional | boolean | Chỉ định xem gói này có bao gồm bữa sáng cùng với mức giá hay không.
Các giá trị hợp lệ là 0 (hoặc false ) và 1 (hoặc true ).
Bạn nên sử dụng |
<ChargeCurrency> | Optional | enum | Thời gian và địa điểm mà người dùng thanh toán cho lượt đặt phòng. Phần tử này sử dụng cú pháp giống như <ChargeCurrency> trong <Result> .
Giá trị mặc định là |
<CheckinTime> | Optional | Time | Thời gian nhận phòng sớm nhất có thể. Thời gian phải sớm hơn 24:00 theo giờ địa phương của khách sạn. |
<CheckoutTime> | Optional | Time | Thời gian trả phòng muộn nhất có thể theo giờ địa phương của khách sạn. |
<Description> | Optional | Object | Mô tả chi tiết về gói. Phần tử này phải chứa những thông tin không được mô tả trong các phần tử khác hoặc phần tử <Name> . Bạn không nên viết hoa tất cả chữ cái khi soạn nội dung mô tả về phòng.
Phần tử <Description> <Text text="Two breakfast buffet certificates for each night of stay." language="en"/> <Text text="Deux certificats petit-déjeuner buffet pour chaque nuit de séjour." language="fr"/> </Description> |
<InternetIncluded> | Optional | boolean | Nếu một gói có quyền truy cập Internet không tính phí, trong khi các gói khác sẽ không có tiện nghi đó. Đừng đặt phần tử này cho Gói dịch vụ phòng trong những khách sạn cung cấp Internet miễn phí cho tất cả các phòng. Phần tử này không áp dụng cho Internet có dây trong phòng hoặc dịch vụ Internet không dây không có trong phòng khách. Các giá trị hợp lệ là 0 (hoặc false ) và 1 (hoặc true ).
|
<Meals> | Optional | Object | Chứa thông tin về bữa ăn trong gói này.
Phần tử
Các thuộc tính không bắt buộc chỉ được dùng khi Để bộ lọc bữa ăn ( |
<Name> | Required | string | Tên gói. Giá trị này phải khớp với thông tin xuất hiện trên trang đích của khách sạn. Đừng đặt giá trị của phần tử này thành tất cả chữ cái viết hoa.
Phần tử này có một phần tử con là <Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name> |
<Occupancy> | Optional | integer | Số lượng khách tối đa mà một Gói dịch vụ phòng dự kiến sẽ phục vụ.
Ví dụ: Phòng suite lớn có thể chứa được 6 khách trên thực tế, nhưng dự kiến sẽ chỉ phục vụ tối đa 4 khách.
Giá trị này phải nhỏ hơn hoặc bằng phần tử Giá trị của Nếu bạn chỉ định phần tử này trong cả Lưu ý: <Occupancy> có thể đi kèm với <OccupancyDetails> – giúp xác định loại khách (người lớn hoặc trẻ em). Hãy tham khảo cú pháp và nội dung mô tả về các phần tử con trong <OccupancyDetails> .
|
<PackageID> | Required | string | Mã nhận dạng duy nhất của gói. Sử dụng mã này để so khớp dữ liệu Gói dịch vụ phòng với các khối (Bạn cũng có thể sử dụng mã này để tham chiếu định nghĩa chung về Gói dịch vụ phòng được dùng trong một Thông báo giao dịch duy nhất khi xác định trực tiếp dữ liệu Gói dịch vụ phòng.) |
<ParkingIncluded> | Optional | boolean | Liệu Gói dịch vụ phòng có bao gồm chỗ đỗ xe miễn phí hay không. Nếu không, chỗ đỗ xe tại khách sạn này sẽ là dịch vụ có tính phí. Đừng chỉ định giá trị cho phần tử này đối với khách sạn cung cấp chỗ đỗ xe miễn phí.
Các giá trị hợp lệ là |
<PhotoURL> | Optional | Object | (Giống như <PhotoURL> trong <RoomData> , nhưng đối với gói dịch vụ (ví dụ: ảnh bữa ăn).)
|
<Refundable> | Optional | Object | Cho phép đăng giá là có thể được hoàn tiền đầy đủ hoặc cung cấp dịch vụ huỷ miễn phí. Nếu không được cung cấp, sẽ không có thông tin nào về việc hoàn tiền xuất hiện.
Chính sách hoàn tiền ở cấp <PackageData> sẽ thay thế chính sách hoàn tiền ở cấp <Result> . Chính sách hoàn tiền ở cấp <Rates> sẽ thay thế chính sách hoàn tiền ở cấp <PackageData> . Bạn cũng có thể làm nổi bật chính sách cho người dùng thấy giá có thể hoàn tiền thông qua các lựa chọn thay thế mà không cần trực tiếp sửa đổi giản đồ thông báo giao dịch. Tìm hiểu thêm về những lựa chọn này
Chính sách về mức giá có thể hoàn tiền.
Ví dụ sau đây cho thấy phần tử <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Lưu ý: Bạn nên đặt tất cả các thuộc tính. Hệ thống sẽ tạo thông báo cảnh báo về trạng thái của nguồn cấp dữ liệu khi bạn chưa thiết lập một hoặc nhiều thuộc tính. Nếu bạn không thiết lập thuộc tính nào thì giá sẽ không xuất hiện dưới dạng có thể hoàn tiền. Các thuộc tính đó bao gồm:
Khi thiết lập các thuộc tính này, hãy lưu ý những điều sau:
|
<MembershipBenefits |
Optional | boolean | Giá bao gồm các lợi ích dành cho khách hàng cao cấp trong thời gian lưu trú. Bao gồm các thông số sau:
|
<CarRentalIncluded> | Optional | boolean | Giá bao gồm ưu đãi cho thuê ô tô miễn phí trong thời gian lưu trú. |
<MilesIncluded>> | Optional | boolean | Giá bao gồm dặm bay của khách bay thường xuyên. Các thông số bao gồm:
|
<OnPropertyCredit> | Optional | boolean | Giá bao gồm tín dụng tại cơ sở lưu trú (dịch vụ thực phẩm và đồ uống, khu nghỉ dưỡng, spa, v.v.). Thông số:
|
<AirportTransportationIncluded> | Optional | Object | Giá bao gồm dịch vụ đưa đón miễn phí đến/từ sân bay gần đó. Thuộc tính direction không bắt buộc chỉ định hướng di chuyển. Các giá trị hợp lệ bao gồm:
from : Phương tiện di chuyển được cung cấp từ sân bay đến
cơ sở lưu trú. Đây là giá trị mặc định nếu không có hướng nào được chỉ định.
to : Có phương tiện đưa đón từ cơ sở lưu trú đến sân bay.
round_trip : Có phương tiện đi lại cả hai chiều đến và đi từ sân bay.
|
Ví dụ
Gói phòng đơn
Ví dụ sau đây xác định một Gói dịch vụ phòng duy nhất có sức chứa là 2 (một người lớn và một trẻ em) và bao gồm bữa sáng:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Two certificates for continental
breakfast will be provided." language="en"/>
<Text text="Deux certificats pour le petit déjeuner
continental seront fournis." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Siêu dữ liệu về phòng và gói dịch vụ
Ví dụ sau đây xác định siêu dữ liệu về phòng và gói dịch vụ:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Nhiều gói dịch vụ phòng
Ví dụ sau đây xác định siêu dữ liệu về phòng và gói dịch vụ cho nhiều Gói dịch vụ phòng:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
Gói dịch vụ phòng kèm theo giá
Ví dụ sau đây xác định siêu dữ liệu về phòng và gói dịch vụ cho một Gói dịch vụ phòng kèm theo các dịch vụ theo đơn giá:
<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
...
</RoomData>
<!-- definitions of PackageData types including rate features -->
<PackageData>
<PackageID>room_with_addl_benefits</PackageID>
<Name>
<Text text="Acme Hotels 2017 Promotion Package" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<BreakfastIncluded>1</BreakfastIncluded>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Marriott Rewards"/>
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum"/>
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>1000</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
</MilesIncluded>
<AirportTransportationIncluded direction="from"/>
</PackageData>
</PropertyDataSet>
<!-- The actual list of prices -->
<Result>
…
</Result>
</Transaction>
Bữa ăn và ảnh
Ví dụ sau đây xác định siêu dữ liệu về phòng và gói dịch vụ của bữa ăn, ảnh cũng như thời gian nhận và trả phòng:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Meals Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<!-- Guests can choose to have breakfast in their room or in another
space to avoid contact with other guests. -->
<Breakfast included="1" in_room="1" in_private_space="1"/>
<Dinner included="1" buffet="1"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
Bữa sáng
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<Breakfast included="true"/>
<!-- Dinner not included needs to be explicitly specified -->
<Dinner included="false"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
<Result>
Vùng chứa thông tin cập nhật về giá và tình trạng còn hàng trong thông báo <Transaction>
.
Phần tử <Result>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Sử dụng <Result>
để đặt hoặc cập nhật giá phòng và xác định quỹ phòng hiện có. Các mục được xác định trong phần tử này thường tham chiếu đến siêu dữ liệu độc lập với hành trình về phòng hoặc gói dịch vụ (chẳng hạn như nội dung mô tả hoặc tập hợp các tiện nghi) được xác định trong <PackageData>
và <RoomData>
.
Thông thường, bạn sẽ gửi Thông báo giao dịch có thông tin cập nhật về giá rất thường xuyên. Cách thức và tần suất chính xác bạn thực hiện việc này phụ thuộc vào chế độ phân phối của bạn.
Bạn có thể sử dụng <Result>
trong Thông báo giao dịch để xoá hành trình, như mô tả trong bài viết Xoá quỹ phòng.
Để biết thêm thông tin về cách sử dụng thông báo Giao dịch để cập nhật giá và tình trạng phòng, hãy Thêm và cập nhật quỹ phòng.
Một thông báo Giao dịch có thể chứa số lượng phần tử <Result>
bất kỳ, miễn là kích thước của thông báo không vượt quá 100 MB.
Cú pháp
Phần tử <Result>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <!-- Required --> <Property>hotel_ID</Property> <!-- Required --> <Checkin>YYYY-MM-DD</Checkin> <!-- Required --> <Nights>number_of_nights</Nights> <Baserate currency="currency_code">price</Baserate> <!-- Only required when <Baserate> contains a real price --> <Tax currency="currency_code">tax_amount</Tax> <!-- Only required when <Baserate> contains a real price --> <OtherFees currency="currency_code">fee_amount</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <RoomID>room_ID</RoomID> <PackageID>package_ID</PackageID> <ExpirationTime>expiration_time</ExpirationTime> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <!-- For Baserate, occupancy value must be greater than or equal to 2. If a value is not provided for occupancy, it defaults to 2. --> <OccupancyDetails>occupancy_info</OccupancyDetails> <Rates>...</Rates> <RoomBundle>...</RoomBundle> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> ... </AllowablePointsOfSale> <Custom[1-5]>custom_value</Custom[1-5]> </Result> ... </Transaction>
Thuộc tính
Phần tử <Result>
có các thuộc tính như sau:
Thuộc tính | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
mergeable | Optional | boolean | Theo mặc định, giá mới cho một cặp khách sạn và hành trình cụ thể sẽ thay thế mọi mức giá trước đó (chưa hết hạn) có trong bộ nhớ đệm của Google. Thuộc tính có thể hợp nhất cho phép bạn lưu trữ các mức giá bổ sung vào bộ nhớ đệm của Google mà không cần xoá thông tin về giá trước đó. Truy vấn giá hiện tại có phản hồi theo Bối cảnh sẽ luôn đặt thuộc tính này thành true (bất kể phản hồi của bạn về thông báo giao dịch). |
Phần tử con
Phần tử <Result>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Một hoặc nhiều trang đích đủ điều kiện cho khách sạn. Trang đích là trang web có thể xử lý quy trình đặt phòng cho người dùng cuối. Để đưa vào một trang đích nhất định (và loại trừ các trang đích khác), hãy thêm một hoặc nhiều phần tử <AllowablePointsOfSale> khớp với thuộc tính id của phần tử <PointOfSale> trong tệp trang đích.
Nếu bạn không thêm phần tử này, thì tất cả các trang đích được xác định trong tệp trang đích sẽ được coi là đủ điều kiện dùng để đặt phòng. Để biết thêm thông tin, hãy tham khảo phần Cú pháp của tệp trang đích. |
<Baserate> | Optional | float | Giá phòng cho lượt lưu trú. Giá trị của phần tử này phải phản ánh những nội dung sau:
Khi không có phòng cho hành trình, bạn nên bỏ qua hoặc đặt Để xoá Gói dịch vụ phòng, hãy làm theo hướng dẫn trong bài viết Xoá Gói dịch vụ phòng.
<Baserate currency="USD">1200.40</Baserate> Phần tử
|
<ChargeCurrency> | Optional | enum | Thời gian và địa điểm mà người dùng thanh toán cho lượt đặt phòng. Bạn có thể sử dụng phần tử này trong Thông báo giao dịch trong phần tử <Result> cho Giá khách sạn hoặc khối <PackageData> cho Gói dịch vụ phòng.
Các giá trị hợp lệ là:
Giá trị mặc định là |
<Checkin> | Required | Date | Ngày nhận phòng của hành trình sử dụng định dạng Ngày. Sự kết hợp giữa phần tử <Nights> và phần tử <Checkin> sẽ tạo thành một hành trình. |
<Custom[1‑5]> | Optional | string | Xác định trường tuỳ chỉnh mà bạn có thể dùng để chuyển dữ liệu bổ sung liên kết với một khách sạn. Bạn có thể chuyển tối đa 5 giá trị tuỳ chỉnh qua các tên phần tử sau:
Các phần tử Các phần tử <Custom> đã cung cấp trong phần tử |
<ExpirationTime> | Optional | DateTime | Ngày và giờ mà giá được coi là đã hết hạn (tối thiểu là 3 giờ).
Bạn không nên cung cấp dấu thời gian hết hạn nếu dấu thời gian đó không quan trọng đối với cơ cấu giá của bạn. Google không phân phát bất kỳ mức giá nào đã hết hạn. Mọi hành trình có giá đã hết hạn sẽ đủ điều kiện để Truy vấn giá hiện tại. |
<Nights> | Required | integer | Số đêm của một hành trình. Giá trị của phần tử <Nights> phải là số nguyên dương.
<Nights> và <Checkin> kết hợp với nhau sẽ tạo thành một hành trình. |
<OtherFees> | Optional | float | Các khoản phí khác ngoài giá cơ bản và các loại thuế có ảnh hưởng đến giá cuối cùng của phòng. Phần tử <OtherFees> lấy một thuộc tính bắt buộc là currency . Thuộc tính này giúp xác định mã đơn vị tiền tệ gồm ba chữ cái cho các khoản phí. Ví dụ: USD .
Bạn phải có phần tử |
<Occupancy> | Optional | integer | Xác định số người lưu trú tối đa được phép ở mức giá này.
Khi <Occupancy> xuất hiện ngay trong <Result> , phải chỉ định 2 trở lên. <Occupancy> có thể đi kèm với <OccupancyDetails> – giúp xác định loại khách (người lớn hoặc trẻ em). Nếu bạn không chỉ định loại khách, thì họ sẽ được coi là người lớn. Hãy tham khảo cú pháp và nội dung mô tả về các phần tử con trong <OccupancyDetails> . Nếu bạn không cung cấp phần tử <Occupancy> , thì số người lưu trú sẽ được đặt mặc định là 2 .
Lưu ý: Hãy liên hệ với nhóm hỗ trợ của bạn để bật tính năng này để gửi giá cho phòng không phải là phòng hai người. |
<PackageID> | Optional | string | Mã nhận dạng duy nhất của gói để liên kết với dữ liệu gói đã xác định trước. Thuộc tính này cũng được dùng để điền biến trang đích PACKAGE-ID. Để biết thêm thông tin, hãy tham khảo mục Siêu dữ liệu của Gói dịch vụ phòng. |
<Property> | Required | string | Mã của một khách sạn chịu ảnh hưởng của dữ liệu liên quan (giá, hành trình, Gói dịch vụ phòng hoặc siêu dữ liệu). Giá trị của phần tử này phải là một chuỗi. Giá trị của phần tử này phải khớp với <id> của trang thông tin mà bạn đã xác định trong nguồn cấp dữ liệu danh sách khách sạn.
|
<Rates> | Optional | <Rates> |
Vùng chứa một hoặc nhiều khối <Rate> . Mỗi <Rate> trong <Rates> xác định một mức giá riêng cho tổ hợp phòng/hành trình.
Sử dụng phần tử Lưu ý: Trong |
<Refundable> | Optional | Object | Cho phép đăng giá là có thể được hoàn tiền đầy đủ hoặc cung cấp dịch vụ huỷ miễn phí. Nếu không được cung cấp, sẽ không có thông tin nào về việc hoàn tiền xuất hiện.
Chính sách hoàn tiền ở cấp <PackageData> sẽ thay thế chính sách hoàn tiền ở cấp <Result> . Chính sách hoàn tiền ở cấp <Rates> sẽ thay thế chính sách hoàn tiền ở cấp <PackageData> . Bạn cũng có thể làm nổi bật chính sách cho người dùng thấy giá có thể hoàn tiền thông qua các lựa chọn thay thế mà không cần trực tiếp sửa đổi giản đồ thông báo giao dịch. Tìm hiểu thêm về
Chính sách về mức giá có thể hoàn tiền.
Ví dụ sau đây cho thấy phần tử <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Lưu ý: Bạn nên đặt tất cả các thuộc tính. Hệ thống sẽ tạo thông báo cảnh báo về trạng thái của nguồn cấp dữ liệu khi bạn chưa thiết lập một hoặc nhiều thuộc tính. Nếu bạn không thiết lập thuộc tính nào thì giá sẽ không xuất hiện dưới dạng có thể hoàn tiền. Các thuộc tính đó bao gồm:
Khi thiết lập các thuộc tính này, hãy lưu ý những điều sau:
|
<RoomBundle> | Optional | <RoomBundle> |
Vùng chứa thông tin về nội dung mô tả thực tế của một phòng được định giá,
bao bì tiện nghi và một số thông tin chi tiết về chính sách mua hàng của
khách sạn và hành trình cụ thể.
Nhìn chung, hãy sử dụng phần tử này để xác định giá cho phòng cơ bản và các loại phòng khác nhau trong cùng một cơ sở lưu trú. Mặc dù có thể xác định cùng dòng nội dung mô tả Gói dịch vụ phòng, nhưng bạn nên sử dụng Thông báo giao dịch riêng để xác định thông tin đó. Google sẽ lưu trữ siêu dữ liệu để bạn có thể tham chiếu thay vì lặp lại siêu dữ liệu đó trong mọi thông tin cập nhật về giá sau này. |
<RoomID> | Optional | string | Mã nhận dạng duy nhất của phòng để liên kết với dữ liệu phòng được xác định trước. Thuộc tính này cũng được dùng để điền biến trang đích PARTNER-ROOM-ID. Để biết thêm thông tin, hãy tham khảo mục Siêu dữ liệu của Gói dịch vụ phòng. |
<Tax> | Optional | float | Thuế được tính cho giá cuối cùng của phòng.
Phần tử <Tax> có một thuộc tính bắt buộc là currency . Thuộc tính này giúp xác định mã đơn vị tiền tệ gồm ba chữ cái của các khoản thuế. Ví dụ: USD . Bạn bắt buộc phải thiết lập phần tử <Tax> nếu <Baserate> lớn hơn 0. |
<Unavailable> | Optional | Object | Cho biết rằng hành trình không có sẵn để đặt chỗ. Có vai trò như một vùng chứa để biết lý do chi tiết hơn khiến bạn không chọn được hành trình. Có thể lồng một hoặc nhiều lý do sau đây vào bên dưới thẻ <Unavailable> :
|
Ví dụ
Ví dụ về nhiều cơ sở lưu trú
Ví dụ sau đây xác định một hành trình và giá của hành trình đó cho hai cơ sở lưu trú:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
</Result>
</Transaction>
Ví dụ này không có thông tin chi tiết về phòng, chẳng hạn như nội dung mô tả, hình ảnh và chú thích, tên phòng và sức chứa tối đa của phòng.
Bạn có thể xác định thông tin đó một lần trong thông báo Giao dịch riêng mà Google lưu trữ. Sau đó, bạn có thể tham chiếu thông tin này trong tất cả các bản cập nhật giá và quỹ phòng tiếp theo. Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng.
Ví dụ về nhiều mức giá
Ví dụ sau đây xác định một hành trình và cơ sở lưu trú duy nhất có nhiều mức giá cho nhiều số người lưu trú. Bạn có thể sử dụng phần tử <Rates>
để cung cấp nhiều mức giá cho một cơ sở lưu trú cụ thể. Ví dụ sau đây cũng hữu ích đối với các cơ sở lưu trú nhà nghỉ dưỡng cho thuê (VR):
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2021-01-13</Checkin>
<Nights>9</Nights>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>2</Occupancy>
<Rates>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>1</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>3</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>4</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>5</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>6</Occupancy>
</Rate>
</Rates>
</Result>
</Transaction>
Ví dụ không có sẵn
Ví dụ sau đây xác định một hành trình có tình trạng phòng không truy xuất được từ các kênh hạ nguồn, một hành trình thứ hai thấp hơn thời gian lưu trú tối thiểu và đã được đặt trước cho những ngày cụ thể, và một hành trình thứ ba có cơ sở lưu trú đóng cửa vào ngày đến nhưng vẫn mở cửa trong suốt thời gian lưu trú:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NotFetched/>
</Unavailable>
</Result>
<Result>
<Property>073313</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NoVacancy/>
<MinNightStay value=3/>
</Unavailable>
</Result>
<Result>
<Property>052213</Property>
<Checkin>2018-06-10</Checkin>
<Nights>10</Nights>
<Unavailable>
<PropertyClosed first_open="2018-06-15" first_closed="2018-06-10"/>
</Unavailable>
</Result>
</Transaction>
<Rates>
Vùng chứa một hoặc nhiều khối <Rate>
. Mỗi <Rate>
trong <Rates>
xác định một mức giá riêng cho tổ hợp phòng hoặc hành trình.
Chỉ sử dụng phần tử <Rates>
khi cùng một tổ hợp phòng hoặc hành trình có nhiều mức giá. Ví dụ: bạn xác định nhiều mức giá liên quan đến giá phòng có điều kiện, mức giá ưu đãi chọn lọc hoặc giá phòng có điều kiện trong Gói dịch vụ phòng.
Phần tử <Rates>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
(Can also contain<Rates>
) + ...
Giá trị được thiết lập trong <Rate>
sẽ ghi đè các giá trị liên quan đến giá trên phần tử mẹ <Result>
hoặc <RoomBundle>
. Nếu không được thiết lập trong <Rate>
, chúng sẽ kế thừa giá trị từ phần tử mẹ. Chỉ
<AllowablePointsofSale> được kế thừa cho phần tử <RoomBundle>
.
Cú pháp
Phần tử <Rates>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <Rates> <Rate rate_rule_id="rate_rule_id"> <Baserate currency="currency_code">price</Baserate> <Tax currency="currency_code">tax_amount</Tax> <OtherFees currency="currency_code">fee_amount</OtherFees> <ExpirationTime>expiration_time</ExpirationTime> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> </AllowablePointsOfSale> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> ... <Custom[1-5]>custom_value</Custom[1-5]> </Rate> ... </Rates> </Result> ... </Transaction>
Thuộc tính
Phần tử <Rates>
có các thuộc tính như sau:
Thuộc tính | Bắt buộc? | Nội dung mô tả |
---|---|---|
rate_rule_id | Optional | Đối với giá phòng có điều kiện, mã này sẽ so khớp giá với định nghĩa trong tệp Định nghĩa quy tắc giá. Giới hạn ký tự cho trường này là 40 ký tự. |
Phần tử con
Phần tử <Rates>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Một hoặc nhiều trang đích đủ điều kiện cho khách sạn. Phần tử này sử dụng cú pháp giống như <AllowablePointsOfSale> trên <Result> . |
<Baserate> | Required | float | Giá phòng cho lượt lưu trú. Phần tử này sử dụng cú pháp giống như <Baserate> trên <Result> .
Lưu ý: Bạn không thể xác định phần tử con |
<ChargeCurrency> | Optional | enum | Thời gian và địa điểm mà người dùng thanh toán cho lượt đặt phòng. Phần tử này sử dụng cú pháp giống như <ChargeCurrency> trong <Result> . |
<Custom[1‑5]> | Optional | string | Trường tuỳ chỉnh mà bạn có thể dùng để chuyển dữ liệu bổ sung liên kết với khách sạn đến một trang đích. Phần tử này sử dụng cú pháp giống như <Custom[1‑5]> trong <Result> . Mỗi trường tuỳ chỉnh có giới hạn là 200 ký tự. Để biết thêm thông tin, hãy tham khảo
tệp trang đích.
Nếu bạn cung cấp các phần tử <Custom> trong phần tử |
<ExpirationTime> | Optional | DateTime | Ngày và giờ mà giá được xem là hết hạn. Phần tử này sử dụng cú pháp giống như <ExpirationTime> trong <Result> . |
<Occupancy> | Optional | integer | Xác định số người lưu trú tối đa được phép ở mức giá này. Nếu bạn không chỉ định, giá trị này sẽ được giả định là giống với giá gốc.
|
<OtherFees> | Required | float | Các khoản phí khác ngoài giá cơ bản và các loại thuế có ảnh hưởng đến giá sau cùng của phòng. Phần tử này sử dụng cú pháp giống như <OtherFees> trong <Result> . |
<Refundable> | Optional | Object | Cho phép đăng giá là có thể được hoàn tiền đầy đủ hoặc cung cấp dịch vụ huỷ miễn phí. Nếu không được cung cấp, sẽ không có thông tin nào về việc hoàn tiền xuất hiện.
Chính sách hoàn tiền ở cấp <PackageData> sẽ thay thế chính sách hoàn tiền ở cấp <Result> . Chính sách hoàn tiền ở cấp <Rates> sẽ thay thế chính sách hoàn tiền ở cấp <PackageData> . Bạn cũng có thể làm nổi bật chính sách cho người dùng thấy giá có thể hoàn tiền thông qua các lựa chọn thay thế mà không cần trực tiếp sửa đổi giản đồ thông báo giao dịch. Tìm hiểu thêm về những lựa chọn này
Chính sách về mức giá có thể hoàn tiền.
Ví dụ sau đây cho thấy phần tử <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Lưu ý: Bạn nên đặt tất cả các thuộc tính. Hệ thống sẽ tạo thông báo cảnh báo về trạng thái của nguồn cấp dữ liệu khi bạn chưa thiết lập một hoặc nhiều thuộc tính. Nếu bạn không thiết lập thuộc tính nào thì giá sẽ không xuất hiện dưới dạng có thể hoàn tiền. Các thuộc tính đó bao gồm:
Khi thiết lập các thuộc tính này, hãy lưu ý những điều sau:
|
<Tax> | Required | float | Thuế được tính cho giá cuối cùng của phòng. Phần tử này sử dụng cú pháp giống như <Tax> trong <Result> . |
Ví dụ
Giá cơ bản và giá phòng có điều kiện
Ví dụ sau đây minh hoạ một thông báo Giao dịch chứa giá cơ bản và giá phòng có điều kiện:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
<!-- NOTE: OtherFees is inherited from the above setting -->
<Custom1>ratecode123</Custom1>
</Rate>
</Rates>
</Result>
</Transaction>
Nhiều giá phòng có điều kiện
Ví dụ sau đây xác định giá cơ bản và nhiều giá phòng có điều kiện trong <RoomBundle>
:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Custom1>ratebasic</Custom1>
<!-- Neither rate overrides Custom2. -->
<Custom2>ratebasic</Custom2>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode321</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode432</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<RoomBundle>
Xác định giá và tình trạng phòng cho Gói dịch vụ phòng dưới dạng phần tử con của <Result>
trong thông báo <Transaction>
. Hãy xác định một phần tử riêng cho mỗi tổ hợp gói dịch vụ hoặc hành trình. Để xác định gói và điều khoản của Gói dịch vụ phòng, hãy sử dụng <RoomData>
.
Phần tử <RoomBundle>
xuất hiện ở vị trí sau đây trong hệ phân cấp XML của Thông báo giao dịch:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Để biết thêm thông tin, hãy tham khảo bài viết Sử dụng Gói dịch vụ phòng.
Cú pháp
Phần tử <RoomBundle>
sử dụng cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <RoomBundle> <!-- Required unless specified inline under<RoomData>
--> <RoomID>room_ID</RoomID> <!-- Required<PackageData>
--> <PackageID>package_ID</PackageID> <!-- Required --> <Baserate currency="currency_code">price</Baserate> <!-- Required --> <Tax currency="currency_code">taxes</Tax> <!-- Required --> <OtherFees currency="currency_code">other_fees</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <!-- Required --> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> <BreakfastIncluded>boolean_value</BreakfastIncluded> <InternetIncluded>boolean_value</InternetIncluded> <ParkingIncluded>boolean_value</ParkingIncluded> <RatePlanID>rate_plan_ID</RatePlanID> <Rates>...</Rates> <Custom1>custom_value_1</Custom1> <Custom2>custom_value_2</Custom2> <Custom3>custom_value_3</Custom3> <Custom4>custom_value_4</Custom4> <Custom5>custom_value_5</Custom5> </RoomBundle> ... </Result> </Transaction>
Thuộc tính
Phần tử <RoomBundle>
chưa có thuộc tính nào.
Phần tử con
Phần tử <RoomBundle>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<Baserate> | Required | float | Xác định giá của Gói dịch vụ phòng cho lượt lưu trú. Phần tử này sử dụng cú pháp giống như <Baserate> trong <Result> , trừ trường hợp ngoại lệ sau:
|
<BreakfastIncluded> | Optional | boolean | Chỉ định xem Gói dịch vụ phòng này có bao gồm bữa sáng cùng với giá hay không. |
<ChargeCurrency> | Optional | enum | Thời gian và địa điểm mà người dùng thanh toán cho lượt đặt phòng. Phần tử này sử dụng cú pháp giống như <ChargeCurrency> trong <Result> .
Giá trị mặc định là |
<Custom[1‑5]> | Optional | string | Trường tuỳ chỉnh để chuyển dữ liệu bổ sung đến các trang đích cho Gói dịch vụ phòng. Các phần tử này sử dụng cú pháp giống như <Custom[1-5]> trong <Result> . Mỗi trường tuỳ chỉnh chỉ được có tối đa 200 ký tự. Để biết thêm thông tin, hãy tham khảo bài viết tệp trang đích.
Nếu bạn cung cấp các phần tử <Custom> trong phần tử |
<InternetIncluded> | Optional | boolean | Nếu Gói dịch vụ phòng bao gồm cả quyền truy cập Internet không tính phí, trong khi các gói khác sẽ không có tiện nghi đó. Đừng đặt phần tử này cho Gói dịch vụ phòng trong những khách sạn cung cấp Internet miễn phí cho tất cả các phòng. Phần tử này không áp dụng cho Internet có dây trong phòng hoặc dịch vụ Internet không dây không có trong phòng khách. |
<Occupancy> | Required | integer | Xác định số người lưu trú tối đa được phép ở mức giá này. Ví dụ: phòng suite lớn có thể chứa được 6 khách trên thực tế, nhưng "Gói dịch vụ tuần trăng mật" chỉ cho phép 2 khách.
Giá trị này phải nhỏ hơn hoặc bằng Khi xác định số người lưu trú trong URL trang đích, hãy sử dụng biến Giá trị của Lưu ý:
|
<OtherFees> | Required | float | Các khoản phí khác ngoài giá cơ bản và các loại thuế có ảnh hưởng đến giá cuối cùng của phòng. Phần tử <OtherFees> lấy một thuộc tính bắt buộc là currency . Thuộc tính này giúp xác định mã đơn vị tiền tệ gồm ba chữ cái cho các khoản phí. Ví dụ: sử dụng USD cho đô la Mỹ. |
<PackageID> | Optional (recommended) | string | Mã nhận dạng duy nhất của dữ liệu gói. Sử dụng mã này để so khớp dữ liệu Gói dịch vụ phòng với dữ liệu đã gửi trong <PackageData> . Để biết thêm thông tin, hãy tham khảo mục Siêu dữ liệu của Gói dịch vụ phòng. (Bạn cũng có thể sử dụng mã này để tham chiếu định nghĩa chung về Gói dịch vụ phòng được dùng trong một Thông báo giao dịch duy nhất khi xác định trực tiếp dữ liệu Gói dịch vụ phòng.) |
<ParkingIncluded> | Optional | boolean | Liệu Gói dịch vụ phòng có bao gồm chỗ đỗ xe miễn phí hay không. Nếu không, chỗ đỗ xe tại khách sạn này sẽ là dịch vụ có tính phí. Đừng chỉ định giá trị cho phần tử này đối với khách sạn cung cấp chỗ đỗ xe miễn phí.
Các giá trị hợp lệ là |
<RatePlanID> | Optional | string | Mã gói giá đại diện cho giá trị nhận dạng duy nhất của tổ hợp phòng và gói dịch vụ. Ví dụ: với giá trị <RoomID> là 5 và giá trị <PackageID> là ABC, bạn có thể sử dụng giá trị 5-ABC cho <RatePlanID> . Bạn nên sử dụng RatePlanID làm biến để tạo URL động cho trang đích (trước đây là Điểm bán hàng).
Để biết thêm thông tin, hãy tham khảo bài viết Sử dụng biến và điều kiện. |
<Rates> | Optional | <Rates> |
Mức giá ghi đè các giá mặc định của Gói dịch vụ phòng này. Phần tử này sử dụng cú pháp giống như <Rates> trong <Result> . |
<Refundable> | Optional | Object | Cho phép đăng giá là có thể được hoàn tiền đầy đủ hoặc cung cấp dịch vụ huỷ miễn phí. Nếu không được cung cấp, sẽ không có thông tin nào về việc hoàn tiền xuất hiện.
Chính sách hoàn tiền ở cấp <PackageData> sẽ thay thế chính sách hoàn tiền ở cấp <Result> . Chính sách hoàn tiền ở cấp <Rates> sẽ thay thế chính sách hoàn tiền ở cấp <PackageData> . Bạn cũng có thể làm nổi bật chính sách cho người dùng thấy giá có thể hoàn tiền thông qua các lựa chọn thay thế mà không cần trực tiếp sửa đổi giản đồ thông báo giao dịch. Tìm hiểu thêm về những lựa chọn này
Chính sách về mức giá có thể hoàn tiền.
Ví dụ sau đây cho thấy phần tử <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Lưu ý: Bạn nên đặt tất cả các thuộc tính. Hệ thống sẽ tạo thông báo cảnh báo về trạng thái của nguồn cấp dữ liệu khi bạn chưa thiết lập một hoặc nhiều thuộc tính. Nếu bạn không thiết lập thuộc tính nào thì giá sẽ không xuất hiện dưới dạng có thể hoàn tiền. Các thuộc tính đó bao gồm:
Khi thiết lập các thuộc tính này, hãy lưu ý những điều sau:
|
<RoomID> | Required | string | Mã nhận dạng duy nhất của dữ liệu phòng. Sử dụng mã này để so khớp dữ liệu Gói dịch vụ phòng với dữ liệu bạn đã gửi trong <RoomData> .
Để biết thêm thông tin, hãy tham khảo phần
Siêu dữ liệu của Gói dịch vụ phòng. (Bạn cũng có thể sử dụng mã này để tham chiếu định nghĩa phòng chung trong một Thông báo giao dịch duy nhất khi xác định trực tiếp dữ liệu phòng.) |
<Tax> | Required | float | Thuế được tính cho giá cuối cùng của phòng.
Phần tử <Tax> có một thuộc tính bắt buộc là currency . Thuộc tính này giúp xác định mã đơn vị tiền tệ gồm ba chữ cái của các khoản thuế. Ví dụ: sử dụng USD cho đô la Mỹ. |
Ví dụ
Gói một người
Ví dụ sau đây xác định nội dung phản hồi có gói dịch vụ lưu trú một người.
Khi người dùng chọn 1
trong Bộ chọn số người lưu trú, Google sẽ cho thấy giá đủ điều kiện thấp nhất bất kể số người lưu trú.
Nếu không có giá cho phòng một người, Google sẽ hiển thị giá cho phòng hai người thấp nhất. Xin lưu ý rằng giá phòng một người sẽ không được truy vấn trực tiếp nếu giá phòng hai người trở lên được lưu vào bộ nhớ đệm cho một hành trình.
Ví dụ này tham chiếu siêu dữ liệu được xác định trước về phòng và gói dịch vụ, trong đó có các phần tử <RoomID>
và <PackageID>
. Hãy sử dụng các phần tử <RoomData>
và <PackageData>
để xác định thông tin đó.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<!-- Note: Once defined it does not have to be repeated for future
Transaction Messages.
PropertyDataSets can also be defined and sent in their own
Transaction Message separately from pricing. Google can be
configured to pull just PropertyDataSets once per day
(or on a predefined frequency). -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P11111</PackageID>
<Occupancy>1</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P54321</PackageID>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<Result>
<!-- Single occupancy pricing will be specified in a room bundle below -->
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Base Room Bundle -->
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P54321</PackageID>
<Baserate currency="USD">199.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P54321</RatePlanID>
</RoomBundle>
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P11111</PackageID>
<!-- Price for 1 ("occupancy") is the lowest price and will be
displayed -->
<Baserate currency="USD">174.99</Baserate>
<Tax currency="USD">22.08</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P11111</RatePlanID>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
occupancy will be displayed-->
<Baserate currency="USD">298.88</Baserate>
<Tax currency="USD">42.12</Tax>
<OtherFees currency="USD">10.00</OtherFees>
<RatePlanID>436233-P12345</RatePlanID>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 1 or more occupancies..-->
</Result>
</Transaction>
2 chỗ lưu trú trở lên
Ví dụ sau đây xác định một phản hồi có chứa hai số người lưu trú trở lên.
Ví dụ này tham chiếu siêu dữ liệu được xác định trước về phòng và gói dịch vụ, trong đó có các phần tử <RoomID>
và <PackageID>
. Hãy sử dụng các phần tử <RoomData>
và <PackageData>
để xác định thông tin đó.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Efficient method of defining Room Bundles-->
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P33333</PackageID>
<Occupancy>3</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<Result>
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<!-- Base Room Bundle -->
<RoomBundle>
<!-- Baserate above and attributes must match atleast one room bundle
below -->
<RoomID>060773</RoomID>
<PackageID>P33333</PackageID>
<Baserate currency="USD">499.99</Baserate>
<Tax currency="USD">55.12</Tax>
<OtherFees currency="USD">22.00</OtherFees>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
<Baserate currency="USD">598.88</Baserate>
<Tax currency="USD">62.12</Tax>
<OtherFees currency="USD">30.00</OtherFees>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 2 or more occupancies..-->
</Result>
</Transaction>
Nhiều gói dịch vụ phòng
Ví dụ sau đây đặt Số người lưu trú trong nhiều gói dịch vụ Phòng để minh hoạ các mức giá phòng nhà nghỉ có thể áp dụng.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<Result>
...
<!-- Suite Room Bundle -->
<RoomBundle>
<RoomID>suite1</RoomID>
<PackageID>standard</PackageID>
<Occupancy>2</Occupancy>
<!-- Price for room -->
<Baserate currency="USD">80.00</Baserate>
<Tax currency="USD">5.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="Suite for 2" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Small Dorm Room Bundle -->
<RoomBundle>
<RoomID>small_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">35.00</Baserate>
<Tax currency="USD">3.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="1 bed in small dorm" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Large Dorm Room Bundle -->
<RoomBundle>
<RoomID>large_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">20.00</Baserate>
<Tax currency="USD">2.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="1 bed in large dorm" language="en"/>
</Name>
</RoomData>
</RoomBundle>
...
</Result>
</Transaction>
Nhiều giá phòng có điều kiện
Ví dụ sau đây xác định giá cơ bản và nhiều giá phòng có điều kiện trong <RoomBundle>
:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Custom1>ratebasic</Custom1>
<!-- Neither rate overrides Custom2. -->
<Custom2>ratebasic</Custom2>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode321</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode432</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<OccupancyDetails>
<Occupancy>
trong thông báo giao dịch chỉ định số lượng khách tối đa cho một phòng hoặc gói dịch vụ. <OccupancyDetails>
có thể chứa thông tin bổ sung như số lượng và loại khách (người lớn hoặc trẻ em).
Khi <Occupancy>
và <OccupancyDetails>
xuất hiện trong phần tử <Rates>
của <Result>
hoặc <RoomBundle>
, điều đó có nghĩa là tỷ lệ này bị hạn chế do thông tin về số người lưu trú.
Cú pháp
Khi <OccupancyDetails>
xuất hiện, nó luôn đứng sau <Occupancy>
.
Lưu ý cú pháp sau:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <NumAdults>number_of_adults</NumAdults> <Children> <Child age=age_of_one_child_guest/> <Child age=age_of_one_child_guest/> </Children> </OccupancyDetails> </Result> </Transaction>
Phần tử con
Phần tử <OccupancyDetails>
có các phần tử con sau đây:
Phần tử con | Bắt buộc? | Loại | Nội dung mô tả |
---|---|---|---|
<NumAdults> | Required | integer | Số lượng khách người lớn. Tối thiểu:1, Tối đa:20. |
<Children> | Optional | Object | Vùng chứa một hoặc nhiều phần tử <Child> . |
<Child age> | Optional | integer | Độ tuổi tối đa của Thành phần con này (ví dụ: <Child age="17"> ). |
Ví dụ
Các ví dụ sau đây minh hoạ cách <OccupancyDetails>
có thể xuất hiện trong <Results>
, <RoomBundle>
hoặc phần tử con <Rates>
.
Câu trả lời về kết quả
Ví dụ sau đây xác định một hành trình và giá của hành trình đó cho một cơ sở lưu trú để phản hồi Truy vấn giá hiện tại, trong đó người dùng đã chỉ định số lượng và loại khách. Ở đây, <OccupancyDetails>
– 2 người lớn và một trẻ em – được trả về trong <Result>
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
</Result>
</Transaction>
Đánh giá câu trả lời
Ví dụ sau đây xác định một lịch đặt phòng và giá của lịch này cho 1 người lớn và 1 trẻ em. Ở đây, <OccupancyDetails>
được trả về trong phần tử <Rates>
của <Result>
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
<Result>
<Property>8251</Property>
<Checkin>2018-06-20</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">62.18</Baserate>
<Tax currency="USD">2.45</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<Rates>
<Rate rate_rule_id="rule-951">
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<Baserate currency="USD">42.61</Baserate>
<Tax currency="USD">5.70</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<Custom1>abc4</Custom1>
<AllowablePointsOfSale>
<PointOfSale id="yourhotelpartnersite.com"/>
</AllowablePointsOfSale>
</Rate>
</Rates>
</Result>
</Transaction>
Gói dịch vụ phòng
Ví dụ sau đây xác định sức chứa là 2 người lớn và 1 trẻ em cho 2 đêm, giá có thể được hoàn tiền. Ở đây, <OccupancyDetails>
xuất hiện bên trong <RoomBundle>
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>6781291</Property>
<Checkin>2017-08-05</Checkin>
<Nights>2</Nights>
...
<RoomBundle>
<RoomID>10291</RoomID>
<RatePlanID>564739</RatePlanID>
<PackageID>564739</PackageID>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
<Baserate currency="USD">185.34</Baserate>
<Tax currency="USD">37.06</Tax>
<OtherFees currency="USD">2.22</OtherFees>
</RoomBundle>
</Result>
</Transaction>
Nhiều gói dịch vụ phòng
Ví dụ sau đây xác định nhiều mức giá <RoomBundle>
bị giới hạn cho sức chứa là 2 người lớn và 2 trẻ em. Ở đây, <OccupancyDetails>
xuất hiện trong phần tử <Rates>
của <RoomBundle>
.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<RoomBundle>
<RoomID>5</RoomID>
<PackageID>STD</PackageID>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<InternetIncluded>1</InternetIncluded>
<ChargeCurrency>web</ChargeCurrency>
<Custom1>ratebasic</Custom1>
<Custom2>ratebasic</Custom2>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
<Child age="17"/>
</Children>
</OccupancyDetails>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<ChargeCurrency>hotel</ChargeCurrency>
<Custom1>ratecode321</Custom1>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Custom1>ratecode432</Custom1>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>