Trang này cung cấp tài liệu tham khảo cho 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 sử dụng <Transaction>
làm phần tử gốc cần có ít nhất một thông báo
phần tử con. Thông báo Giao dịch có thể có số lượng phần tử con bất kỳ, chẳng hạn như
miễn là tổng kích thước thư 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 | 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 tương ứng với 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à "Khoá đối tác" giá trị được niêm yết trên Trang Cài đặt tài khoản trong Hotel Center. |
timestamp | Required | DateTime | Thời điểm thông báo Giao dịch đã gửi. Mọi tin nhắn được gửi kèm dấu thời gian trong vòng 24 giờ trước đó sẽ được đã được xử lý và những dữ liệu chưa được xử lý sẽ bị loại bỏ. Thư được xử lý theo thứ tự |
Phần tử con
Phần tử <Transaction>
có các phần tử con như sau:
Thành phần con | Bắt buộc? | Loại | 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 định dạng 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ử |
* Tối thiểu một trong hai giá trị <PropertyDataSet> hoặc <Result>
là trường bắt buộc. |
Ví dụ
Dữ liệu phòng
Ví dụ sau đây xác định dữ liệu phòng trong một 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 về giá trong một 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>
Mức giá mỗi đêm
Ví dụ sau đây xác định dữ liệu giá cho 1 đến 7 đêm bắt đầu 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>
Cơ sở và Giá phòng có điều kiện
Ví dụ sau đây thể hiện một Thông báo giao dịch chứa 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 đối với nhiều ngày khác nhau) cho khách sạn từ kho hà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 cho thông tin về phòng và gói dịch vụ (hoặc Gói dịch vụ phòng) trong một
<Transaction>
. Giá trị đặt cho khách sạn sẽ thay thế giá trị đặt cho đối tác.
Google lưu trữ thông tin này để bạn không cần xác định mỗi lần thông tin
bạn 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>
không có thuộc tính nào.
Phần tử con
Phần tử <PropertyDataSet>
có các phần tử con như sau:
Thành phần con | Bắt buộc? | Loại | Mô tả |
---|---|---|---|
<PackageData> | Optional* | <PackageData> |
Mô tả Gói dịch vụ phòng. Dữ liệu này có liên kết với một đối tác và
khách sạn, nhưng không kèm theo hành trình. Phần tử này tương tự với
<RoomData> , nhưng mô tả các tiện nghi và điều khoản không thuộc một phần
của nội dung mô tả phòng thực tế.
Bạn cần tham chiếu mã gói trong thông tin cập nhật giá của mình. Để biết thêm thông tin, hãy tham khảo 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 quan. Chiến lược phát hành đĩa đơn
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ả một phòng. Dữ liệu này có liên kết với một đối tác và khách sạn.
nhưng không kèm theo hành trình.
Bạn cần tham chiếu đến mã phòng trong thông tin cập nhật về giá. |
* Tối thiểu một trong hai giá trị <PackageData> hoặc <RoomData>
là trường bắt buộc. |
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 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 còn phòng cho phòng này cũng như Gói dịch vụ phòng, bạn tham chiếu mã phòng và mã gói dịch vụ trong thông báo giá của bạn. Kết quả là giúp giảm đáng kể kích thước thư, đồng thời giảm số lượng lỗi bạn có thể gặp phải do dữ liệu trùng lặp. Để biết thêm 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 siêu dữ liệu độc lập với hành trình về phòng và theo tiện ích, Room
Gói (vì Gói dịch vụ phòng bao gồm phòng và các tiện nghi bổ sung). Sử dụng
<RoomData>
để giảm tình trạng lặp lại dữ liệu mô tả trong phần Giá
Nguồn cấp dữ liệu.
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 kết với một
đối tác và khách sạn, nhưng không kèm theo hành trình. Mục đích là dành cho tất cả
dữ liệu không phải hành trình.
Phần tử <RoomData>
tương tự như <PackageData>
, nhưng mô tả
phòng ở thay vì các tiện nghi và điều khoản của gói dịch vụ. Bạn sử dụng
<RoomData>
và <PackageData>
kết hợp để 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 nằm trong gói dịch vụ, hãy chỉ sử dụng
<RoomData>
.
Bạn có thể xác định cả hai phần tử <RoomData>
và <PackageData>
cho
cùng một phòng hoặc Gói dịch vụ phòng. Khi Google đăng phòng hoặc gói dịch vụ đó trong
kết quả tìm kiếm, thì sẽ bao gồm phần mô tả từ cả hai, được phân tách bằng ký tự
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>
không có thuộc tính nào.
Phần tử con
Phần tử <RoomData>
có các phần tử con như sau:
Thành phần con | Bắt buộc? | Loại | Mô tả |
---|---|---|---|
<Capacity> | Optional | integer | Số lượng khách tối đa mà một phòng có thể lưu trú thực tế
điều chỉnh cho phù hợp. Đối với một phòng, sức chứa lớn hơn hoặc bằng
số người lưu trú.
Khi được chỉ định, 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 sẽ
chứa thông tin chưa được mô tả bởi các phần tử khác hoặc
Phần tử <Name> . Bạn không nên viết hoa toàn bộ
các chữ cái khi chỉ định nội dung mô tả về phòng.
Phần tử
Sử dụng một phần tử Ví dụ sau cho thấy căn phòng phiên bản tiếng Pháp và tiếng Anh mô tả: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
<Name> | Required | string | Tên 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). Không đặt
giá trị của phần tử này viết hoa tất cả.
Phần tử này có một phần tử con duy nhất là
Sử dụng một phần tử Ví dụ sau cho thấy căn phòng phiên bản tiếng Pháp và tiếng Anh tên: <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ụ: một phòng suite lớn có thể có sức chứa thực tế là 6
khách (sức chứa = 6), nhưng chỉ dành cho 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 | Những 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
phòng.
Phần tử
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Bạn không cần 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 về hình ảnh của căn phòng hoặc
Gói dịch vụ phòng. 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 riêng một
<PhotoURL> .
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 đặc điểm của 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 với dữ liệu phòng
bằng quy tắc chặn <Result> trong thông tin cập nhật về giá. Cho
để 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 khi xác định trực tiếp dữ liệu phòng.) |
Ví dụ
Dữ liệu 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>
Phòng và siêu dữ liệu của gói
Ví dụ sau đây xác định siêu dữ liệu của 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 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 Room Gói:
<?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>
không có thuộc tính nào.
Phần tử con
Phần tử <RoomFeatures>
có các phần tử con như sau:
Thành phần con | Bắt buộc? | Loại | Mô tả |
---|---|---|---|
<JapaneseHotelRoomStyle> | Optional | enum | Cho biết kiểu phòng khách sạn kiểu Nhật. Các giá trị hợp lệ là:
|
<Beds> | Optional | Object | Chứa nhiều <Bed> nhất có trong phòng. Ghi chú
không nên tính đệm futon của Nhật Bản ở đây.
Mỗi
<Bed> có các phần tử con như sau:
<Beds> <Bed size="double"> <Width unit="cm" number="140"/> <Length unit="cm" number="195"/> </Bed> <Bed/> <!-- Size unknown --> </Beds> |
<Suite> | Optional | empty | Hãy cung cấp phần tử này khi phòng này là phòng suite. |
<Capsule> | Optional | empty | Hãy 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 dùng chung với những người lưu trú khác như chủ sở hữu hoặc người khác hay không
khách. 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à nơi lưu trú ngoài trời không có tường cố định, hệ thống ống nước và điều hoà không khí. Ví dụ: phòng khách sạn không phải là nơi lưu trú ngoài trời trong khi khu cắm trại nơi khách lưu trú trong lều và Những khu vui chơi giải trí nơi khách mang xe RV riêng đến là nơi lưu trú ngoài trời. |
<MobilityAccessible> | Optional | empty | Cung cấp phần tử này nếu phòng này có hỗ trợ người khuyết tật. |
<Smoking> | Optional | enum | Phòng này là phòng không hút thuốc hay phòng hút thuố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 có thể lấy các phần tử con sau đây (không bắt buộc):
Ví dụ: <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> |
<OpenAirBath> | Optional | empty | Hãy 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à không khí. |
<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. Đang bỏ qua
giá trị không dẫn đến lỗi XML, nhưng danh sách của bạn không được hiển thị trong
kết quả tìm kiếm khi người dùng lọc theo kiểu phòng hoặc 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 theo kiểu western
có hai
double
giường.
<?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ề phòng kiểu Nhật không có giường. Giường
không cần thông tin 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>
Miền Tây Nhật Bản có giường
Sau đây là ví dụ về phòng kiểu japanese_western
có king
giường cỡ nhỏ.
<?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ố lượng giường tại japanese_western
phòng, thì hãy làm theo ví dụ sau:
<?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 kèm theo hành trình. Mục đích là để xác định tất cả các hành trình không phải là hành trình và tham chiếu 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ả những dịch vụ theo giá và điều khoản không thuộc phòng thực tế
mô tả. Bạn 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à các dịch vụ theo giá. Đối với những phòng riêng lẻ
không phải là một phần của gói, chỉ sử dụng <RoomData>
.
Bạn có thể xác định cả hai phần tử <RoomData>
và <PackageData>
cho phần tử
cùng một phòng hoặc Gói dịch vụ phòng. Khi Google đăng phòng hoặc gói dịch vụ đó trong
kết quả tìm kiếm, thì sẽ bao gồm phần mô tả từ cả hai, được phân tách bằng ký tự
dấu gạch nối.
Nếu cập nhật một phần tử <PackageData>
duy nhất cho một tài sản, bạn phải
cập nhật tất cả phần tử <PackageData>
và <RoomData>
cho thuộc tính.
Mỗi <PropertyDataSet>
được coi là toàn bộ dữ liệu về tài sản, và
sẽ 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>
không có thuộc tính nào.
Phần tử con
Phần tử <PackageData>
có các phần tử con như sau:
Thành phần con | Bắt buộc? | Loại | Mô tả |
---|---|---|---|
<BreakfastIncluded> | Optional | boolean | Cho biết gói này có bao gồm bữa sáng kèm theo 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 điểm và địa điểm mà người dùng thanh toán cho lượt đặt trước. Phần tử này sử dụng cùng một
dưới dạng <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 dưới 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 theo giờ địa phương của khách sạn. |
<Description> | Optional | Object | Nội dung mô tả chi tiết về gói. Phần tử này sẽ
chứa thông tin chưa được mô tả bởi các phần tử khác hoặc
Phần tử <Name> . Bạn không nên viết hoa toàn bộ
các chữ cái khi chỉ định 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 miễn phí,
trong khi các gói khác lại không có tiện nghi đó. Không thiết lập
Phần tử Gói dịch vụ phòng trong một khách sạn cung cấp Internet miễn phí cho tất cả mọi người
phòng. Phần tử này không áp dụng cho dịch vụ Internet có dây hoặc không dây trong phòng
Internet không có ở 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ề các 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 Đối với bộ lọc bữa ăn ( |
<Name> | Required | string | Tên gói. 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. Không viết hoa toàn bộ giá trị của phần tử này
chữ cái.
Phần tử này có một phần tử con duy nhất 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à Gói dịch vụ phòng dự kiến phục vụ.
Ví dụ: một phòng suite lớn có thể có sức chứa thực tế là 6
chỉ dành cho 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> (chỉ định kiểu khách)
(người lớn hoặc trẻ em). Tham khảo <OccupancyDetails> để biết cú pháp và
nội dung mô tả về các phần tử con.
|
<PackageID> | Required | string | Mã nhận dạng duy nhất của gói. Sử dụng ID này để khớp với
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 khi xác định dữ liệu Gói dịch vụ phòng inline.) |
<ParkingIncluded> | Optional | boolean | Liệu Gói dịch vụ phòng có bao gồm chỗ đỗ xe miễn phí hay không, địa điểm
nếu không thì việc đỗ xe sẽ là dịch vụ có tính phí tại khách sạn này. Không chỉ định
một 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 | (Tương tự như <PhotoURL> trong <RoomData> ,
nhưng cho gói hàng (ví dụ: ảnh bữa ăn).
|
<Refundable> | Optional | Object | Cho phép niêm yết giá là có thể hoàn tiền đầy đủ hoặc cung cấp miễn phí
huỷ. Nếu không được cung cấp, sẽ không có thông tin nào về khoản tiền hoàn lại được hiển thị.
Chính sách hoàn tiền ở cấp <PackageData> sẽ thay thế chính sách hoàn tiền tại
ở cấp độ <Result> . Chính sách hoàn tiền ở cấp độ <Rates>
chính sách hoàn tiền ở cấp <PackageData> . Giá có thể hoàn tiền có thể
cũng được làm nổi bật cho người dùng
thông qua các lựa chọn thay thế mà không trực tiếp
sửa đổi giản đồ thông báo giao dịch. Tìm hiểu thêm về các lựa chọn này
Chính sách về mức giá có thể hoàn tiền.
Ví dụ sau đây minh hoạ <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. Nguồn cấp dữ liệu Thông báo cảnh báo về trạng thái sẽ được tạo khi một hoặc nhiều thuộc tính chưa được đặt. Nếu bạn không thiết lập thuộc tính thì thuế suất sẽ không xuất hiện dưới dạng có thể hoàn lại. Các thuộc tính đó bao gồm:
Khi đặt thuộc tính, 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 cho khách bay thường xuyên. Các tham 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ụ ăn uống, nghỉ dưỡng, spa và các dịch vụ khác). Thông số:
|
<AirportTransportationIncluded> | Optional | Object | Giá bao gồm dịch vụ đưa đón miễn phí từ/đến một sân bay lân cận. Trường không bắt buộc
Thuộc tính direction chỉ định hướng của
vận tải. Các giá trị hợp lệ bao gồm:
from : Có phương tiện vận chuyển từ sân bay đến
thuộc tính này. Đâ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 vận chuyển đến sân bay từ
thuộc tính này.
round_trip : Dịch vụ vận chuyển được cung cấp cả đi và đến
sân bay.
|
Ví dụ
Gói dịch vụ phòng đơn
Ví dụ sau đây xác định một Gói dịch vụ phòng duy nhất có số người lưu trú 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 của 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 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 Room Gói:
<?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 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 Room với dịch vụ theo 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ụ cho các bữa ăn, ảnh và 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 <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>
để thiết lập hoặc cập nhật giá phòng và xác định
khoảng không quảng cáo có sẵn. Các mục được xác định trong phần tử này thường tham chiếu
siêu dữ liệu không phụ thuộc vào 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
nhóm 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 kèm theo 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 một thông báo Giao dịch để xoá hành trình, như
được mô tả trong Xóa khoảng không quảng cáo.
Để 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 còn hàng, Thêm và cập nhật khoảng không quảng cáo.
Một thông báo Giao dịch có thể bao gồm số lượng phần tử <Result>
bất kỳ
trong ảnh, miễn là kích thước của thư 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 | Mô tả |
---|---|---|---|
mergeable | Optional | boolean | Theo mặc định, các mức giá mới cho một cặp khách sạn và hành trình cụ thể sẽ
ghi đè mọi mức giá trước đó (chưa hết hạn) có trong bộ nhớ đệm của Google. Chiến lược phát hành đĩa đơn
thuộc tính có thể hợp nhất cho phép bạn lưu trữ giá bổ sung vào bộ nhớ đệm của Google
mà không xoá thông tin đặt giá trước đó. Truy vấn Giá hiện tại bằng
Thuộc tính này sẽ luôn được đặt thành true trong các câu trả lời theo ngữ cảnh
(bất kể phản hồi của bạn về thông báo giao dịch là gì). |
Phần tử con
Phần tử <Result>
có các phần tử con như sau:
Thành phần con | Bắt buộc? | Loại | Mô tả |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Một hoặc nhiều trang đích đủ điều kiện cho
khách sạn của bạn. Trang đích là một trang web có thể xử lý quy trình đặt phòng cho
người dùng cuối. Để bao gồm rõ ràng một số trang đích nhất định (và loại trừ)
khác), thêm một hoặc nhiều <AllowablePointsOfSale>
phần tử khớp với phần tử <PointOfSale>
id trong tệp trang đích.
Nếu bạn không bao gồm phần tử này, thì tất cả trang đích được xác định trong thuộc tính tệp trang đích được coi là đủ điều kiện để sử dụng để đặt phòng phòng. Để biết thêm thông tin, hãy tham khảo 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 điều sau:
Khi không thể đặt phòng cho hành trình,
Phải bỏ qua hoặc đặt Để xóa Gói dịch vụ phòng, hãy làm theo hướng dẫn trong bài viết Xóa Gói dịch vụ phòng.
<Baserate currency="USD">1200.40</Baserate> Phần tử
|
<ChargeCurrency> | Optional | enum | Thời điểm và địa điểm mà người dùng thanh toán cho lượt đặt trước. Phần tử này có thể
được dùng trong thông báo Giao dịch trong <Result>
phần tử 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 giá trị Date
. Kết hợp của phần tử <Nights> và
Phần tử <Checkin> tạo nên một hành trình. |
<Custom[1‑5]> | Optional | string | Xác định trường tuỳ chỉnh mà bạn có thể sử 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 với
tên phần tử sau:
Các phần tử <Tuỳ chỉnh> được cung cấp trong |
<ExpirationTime> | Optional | DateTime | Ngày và giờ mà giá được xem là hết hạn (3 giờ
tối thiểu).
Bạn không nên cung cấp dấu thời gian hết hạn nếu 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 và mọi hành trình có giá hết hạn sẽ đủ điều kiện để Truy vấn Yêu cầu cung cấp giá hiện tại. |
<Nights> | Required | integer | Số đêm cho một hành trình. Giá trị của thuộc tính
Phần tử <Nights> phải là một số nguyên dương.
Tổ hợp <Nights> và
<Checkin> tạo nên 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 khoản thuế có ảnh hưởng đến
giá cuối cùng của một căn phòng. Phần tử <OtherFees> sẽ nhận
một thuộc tính bắt buộc, currency , xác định giá trị
mã đơn vị tiền tệ gồm ba chữ cái của các khoản phí. Ví dụ: USD .
Cần có phần tử |
<Occupancy> | Optional | integer | Xác định số người lưu trú tối đa được phép đối với mức giá này.
Khi <Occupancy> xuất hiện ngay trong <Result> ,
lớp này 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 kiểu khách không được xác định,
các em sẽ được xem là người lớn. Hãy tham khảo ý kiến <OccupancyDetails> để biết
cú pháp và mô tả của các phần tử con. Nếu
Chưa cung cấp phần tử <Occupancy> , số người lưu trú là
đặ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 hàng để liên kết với dữ liệu gói được xác định trước. Thuộc tính này còn được dùng để điền biến trang đích PACKAGE-ID. Để biết thêm thông tin, hãy tham khảo Phòng Siêu dữ liệu của gói. |
<Property> | Required | string | Mã của khách sạn bị ảnh hưởng bởi 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 trang thông tin
<id> 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> inch
<Rates> xác định một mức giá khác cho phòng/hành trình
kết hợp.
Sử dụng phần tử Lưu ý: Trong phạm vi |
<Refundable> | Optional | Object | Cho phép niêm yết giá là có thể hoàn tiền đầy đủ hoặc cung cấp miễn phí
huỷ. Nếu không được cung cấp, sẽ không có thông tin nào về khoản tiền hoàn lại được hiển thị.
Chính sách hoàn tiền ở cấp <PackageData> sẽ thay thế chính sách hoàn tiền tại
ở cấp độ <Result> . Chính sách hoàn tiền ở cấp độ <Rates>
chính sách hoàn tiền ở cấp <PackageData> . Giá có thể hoàn tiền có thể
cũng được làm nổi bật cho người dùng
thông qua các lựa chọn thay thế mà không 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 minh hoạ <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. Nguồn cấp dữ liệu Thông báo cảnh báo về trạng thái sẽ được tạo khi một hoặc nhiều thuộc tính chưa được đặt. Nếu bạn không thiết lập thuộc tính thì thuế suất sẽ không xuất hiện dưới dạng có thể hoàn lại. Các thuộc tính đó bao gồm:
Khi đặt thuộc tính, 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ó định giá về một căn phòng,
bao bì tiện nghi và một số thông tin chi tiết về chính sách mua hàng
khách sạn và hành trình cụ thể.
Nói 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, bạn nên sử dụng một thuộc tính Thông báo Giao dịch để 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 trong tất cả các thông tin cập nhật giá trong tương lai. |
<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 đã xác định sẵn. Ngoài ra dùng để điền biến trang đích PARTNER-ROOM-ID. Để biết thêm thông tin, hãy tham khảo Phòng Siêu dữ liệu của gói. |
<Tax> | Optional | float | Các loại thuế được tính cho giá cuối cùng của một phòng.
Phần tử <Tax> có một thuộc tính bắt buộc,
currency xác định mã đơn vị tiền tệ gồm ba chữ cái
cho các khoản thuế. Ví dụ: USD . Chiến lược phát hành đĩa đơn
Cần có phần tử <Tax> nếu
<Baserate> lớn hơn 0.
Nếu là phần tử |
<Unavailable> | Optional | Object | Cho biết rằng không thể đặt hành trình trong hành trình đó. Đóng vai trò là
vùng chứa để biết các lý do chi tiết hơn khiến hành trình không có sẵn. Một
hoặc nhiều lý do không sẵn có sau đây có thể được lồng 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 hành trình thuộc tính:
<?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>
Không xuất hiện trong ví dụ này là cá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 của phòng.
Bạn có thể xác định thông tin đó một lần trong một Giao dịch riêng mà Google lưu trữ. Sau đó, bạn có thể tham chiếu tên này trong tất cả các bản cập nhật giá và kho hàng tiếp theo. Để biết thêm thông tin, hãy tham khảo 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
giá cho nhiều mức sức chứa. 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 là
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 không thể xác định tình trạng phòng được truy xuất từ các kênh thứ cấp, giây đều dưới thời gian tối thiểu đêm lưu trú và đã đặt trước cho các ngày được chỉ định và ngày lưu trú thứ ba có cơ sở lưu trú đóng cửa vào ngày đến nhưng 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>
inch
<Rates>
xác định một mức giá khác cho tổ hợp phòng hoặc hành trình.
Chỉ sử dụng phần tử <Rates>
khi có nhiều mức giá cho
cùng một tổ hợp phòng hoặc hành trình. Ví dụ: bạn xác định nhiều
giá cho 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>
) + ...
Các giá trị được thiết lập trong <Rate>
sẽ thay thế các giá trị liên quan đến giá ở
phần tử mẹ <Result>
hoặc <RoomBundle>
. Nếu bạn không thiết lập các giá trị này trong <Rate>
,
chúng sẽ kế thừa giá trị từ phần tử mẹ. Chỉ
<AllowablePointsofSale> được kế thừa từ 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? | Mô tả |
---|---|---|
rate_rule_id | Optional | Dành cho 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 như sau:
Thành phần con | Bắt buộc? | Loại | Mô tả |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Một hoặc nhiều trang đích đủ điều kiện cho
khách sạn của bạn. Phần tử này sử dụng cú pháp giống như phần tử
<AllowablePointsOfSale> vào ngày <Result> . |
<Baserate> | Required | float | Giá phòng cho lượt lưu trú. Phần tử này sử dụng cùng một
như <Baserate> trên <Result> .
Lưu ý: Phần tử con |
<ChargeCurrency> | Optional | enum | Thời điểm và địa điểm mà người dùng thanh toán cho lượt đặt trước. Phần tử này sử dụng thuộc tính
cú pháp giống như <ChargeCurrency> trong một
<Result> . |
<Custom[1‑5]> | Optional | string | Trường tùy chỉnh mà bạn có thể sử dụng để chuyển dữ liệu bổ sung được liên kết với
khách sạn vào trang đích. Phần tử này sử dụng cú pháp giống như phần tử
<Custom[1‑5]> trong <Result> . Có giới hạn
200 ký tự cho mỗi trường tùy chỉnh. Để biết thêm thông tin, hãy tham khảo
tệp trang đích.
Nếu <Tuỳ chỉnh> được cung cấp trong
|
<ExpirationTime> | Optional | DateTime | Ngày và giờ mà giá được xem là hết hạn. Chiến dịch 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 đối với mức giá này. Nếu không
đã chỉ định, thì mức giá đó được giả định là giống với mức giá gốc.
|
<OtherFees> | Required | float | Các khoản phí khác ngoài giá cơ bản và các khoản thuế ảnh hưởng đến giá sau cùng
của một căn phòng. Phần tử này sử dụng cú pháp giống như
<OtherFees> trong <Result> .
Nếu là phần tử |
<Refundable> | Optional | Object | Cho phép niêm yết giá là có thể hoàn tiền đầy đủ hoặc cung cấp miễn phí
huỷ. Nếu không được cung cấp, sẽ không có thông tin nào về khoản tiền hoàn lại được hiển thị.
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>
chính sách hoàn tiền ở cấp <PackageData> . Giá có thể hoàn tiền có thể
cũng được làm nổi bật cho người dùng
thông qua các lựa chọn thay thế mà không trực tiếp
sửa đổi giản đồ thông báo giao dịch. Tìm hiểu thêm về các lựa chọn này
Chính sách về mức giá có thể hoàn tiền.
Ví dụ sau đây minh hoạ <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. Nguồn cấp dữ liệu Thông báo cảnh báo về trạng thái sẽ được tạo khi một hoặc nhiều thuộc tính chưa được đặt. Nếu bạn không thiết lập thuộc tính thì thuế suất sẽ không xuất hiện dưới dạng có thể hoàn lại. Các thuộc tính đó bao gồm:
Khi đặt thuộc tính, hãy lưu ý những điều sau:
|
<Tax> | Required | float | Các loại thuế được tính cho giá cuối cùng của một phòng. Chiến dịch này
phần tử sử dụng cú pháp giống như <Tax> trong một phần tử
<Result> . |
Ví dụ
Giá cơ bản và giá phòng có điều kiện
Ví dụ sau đây cho thấy 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 tin nhắn <Transaction>
. Xác định một phần tử riêng cho mỗi danh mục
tổ hợp gói 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>
không có thuộc tính nào.
Phần tử con
Phần tử <RoomBundle>
có các phần tử con như sau:
Thành phần con | Bắt buộc? | Loại | 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ó cú pháp giống như <Baserate> trong <Result> , với
ngoại lệ sau đây:
|
<BreakfastIncluded> | Optional | boolean | Chỉ định xem Gói dịch vụ phòng này có bao gồm bữa sáng kèm theo giá hay không. |
<ChargeCurrency> | Optional | enum | Thời điểm và địa điểm mà người dùng thanh toán cho lượt đặt trước. Phần tử này sử dụng cùng một
dưới dạng <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> . Giới hạn tối đa là 200
ký tự cho mỗi trường tùy chỉnh. Để biết thêm thông tin, hãy tham khảo
tệp trang đích.
Nếu <Tuỳ chỉnh> được cung cấp trong
|
<InternetIncluded> | Optional | boolean | Nếu Gói dịch vụ phòng bao gồm cả quyền truy cập Internet miễn phí, trong khi các gói khác không có tiện nghi đó. Không thiết lập Phần tử Gói dịch vụ phòng trong một khách sạn cung cấp Internet miễn phí cho tất cả mọi người phòng. Phần tử này không áp dụng cho dịch vụ Internet có dây hoặc không dây trong phòng Internet không có ở phòng khách. |
<Occupancy> | Required | integer | Xác định số người lưu trú tối đa được phép đối với mức giá này. Ví dụ: một
phòng suite lớn có thể chứa được 6 khách trên thực tế, nhưng
"Gói 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 khoản thuế có ảnh hưởng đến
giá cuối cùng của một căn phòng. Phần tử <OtherFees> sẽ nhận
một thuộc tính bắt buộc, currency , xác định giá trị
mã đơn vị tiền tệ gồm ba chữ cái của các khoản phí. Ví dụ: hãy 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 ID này để khớp với
Dữ liệu về Gói dịch vụ phòng với nội dung đã gửi trong <PackageData> . Cho
thông tin khác, tham khảo
Phòng
Siêu dữ liệu của gói. (Bạn
cũng có thể sử dụng mã này để tham chiếu định nghĩa Gói dịch vụ phòng chung được sử dụng
trong một Thông báo giao dịch duy nhất khi xác định dữ liệu Gói dịch vụ phòng
inline.) |
<ParkingIncluded> | Optional | boolean | Liệu Gói dịch vụ phòng có bao gồm chỗ đỗ xe miễn phí hay không, địa điểm
nếu không thì việc đỗ xe sẽ là dịch vụ có tính phí tại khách sạn này. Không chỉ định
một 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 riêng biệt của một
tổ hợp phòng và gói dịch vụ. Ví dụ: giả sử
Giá trị <RoomID> là 5 và a
<PackageID> , bạn có thể sử dụng giá trị của
5-ABC cho <RatePlanID> . Chúng tôi thực sự khuyên bạn nên sử dụng
RatePlanID dưới dạng biến để tạo trang đích động
(trước đây là Điểm bán hàng).
Để biết thêm thông tin, hãy tham khảo Sử dụng Biến và Điều kiện. |
<Rates> | Optional | <Rates> |
Giá thay thế giá mặc định của Gói dịch vụ phòng này. Chiến dịch này
phần tử sử dụng cú pháp giống như <Rates> trong <Result> . |
<Refundable> | Optional | Object | Cho phép niêm yết giá là có thể hoàn tiền đầy đủ hoặc cung cấp miễn phí
huỷ. Nếu không được cung cấp, sẽ không có thông tin nào về khoản tiền hoàn lại được hiển thị.
Chính sách hoàn tiền ở cấp <PackageData> sẽ thay thế chính sách hoàn tiền tại
ở cấp độ <Result> . Chính sách hoàn tiền ở cấp độ <Rates>
chính sách hoàn tiền ở cấp <PackageData> . Giá có thể hoàn tiền có thể
cũng được làm nổi bật cho người dùng
thông qua các lựa chọn thay thế mà không trực tiếp
sửa đổi giản đồ thông báo giao dịch. Tìm hiểu thêm về các lựa chọn này
Chính sách về mức giá có thể hoàn tiền.
Ví dụ sau đây minh hoạ <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. Nguồn cấp dữ liệu Thông báo cảnh báo về trạng thái sẽ được tạo khi một hoặc nhiều thuộc tính chưa được đặt. Nếu bạn không thiết lập thuộc tính thì thuế suất sẽ không xuất hiện dưới dạng có thể hoàn lại. Các thuộc tính đó bao gồm:
Khi đặt thuộc tính, 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 ID này để khớp với
Dữ liệu về Gói dịch vụ phòng với nội dung bạn đã gửi trong <RoomData> .
Để biết thêm thông tin, hãy tham khảo
Siêu dữ liệu của Gói dịch vụ phòng. (Bạn cũng có thể sử dụng mã nhận dạng này để tham chiếu một
định nghĩa phòng chung trong một Thông báo giao dịch duy nhất khi xác định
cùng dòng dữ liệu phòng.) |
<Tax> | Required | float | Các loại thuế được tính cho giá cuối cùng của một phòng.
Phần tử <Tax> có một thuộc tính bắt buộc,
currency xác định mã đơn vị tiền tệ gồm ba chữ cái
cho các khoản thuế. Ví dụ: sử dụng USD cho đô la Mỹ. |
Ví dụ
Gói một người lưu trú
Ví dụ sau đây xác định nội dung phản hồi có một gói thông tin về số người lưu trú.
Khi người dùng chọn 1
trong Bộ chọn tỷ lệ kín phòng, Google sẽ cho thấy giá trị thấp nhất
giá đủ điều kiện 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á phòng hai người thấp nhất. Lưu ý rằng giá cho một người lưu trú thì không truy vấn trực tiếp nếu giá phòng hai người hoặc nhiều mức giá khác được lưu vào bộ nhớ đệm cho một hành trình.
Ví dụ này tham chiếu đến siêu dữ liệu đã xác định sẵn về phòng và gói dịch vụ bằng
Phần tử <RoomID>
và <PackageID>
. Sử dụng <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>
Hai hoặc nhiều người lưu trú
Ví dụ sau đây xác định nội dung phản hồi có chứa từ hai thông tin về sức chứa trở lên.
Ví dụ này tham chiếu đến siêu dữ liệu đã xác định sẵn về phòng và gói dịch vụ bằng
Phần tử <RoomID>
và <PackageID>
. Sử dụng <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 phòng
Ví dụ sau đây thiết lập Sức chứa trong nhiều gói Phòng để minh hoạ giá phòng nhà nghỉ có thể có.
<?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 một gói dịch vụ. <OccupancyDetails>
có thể chứa thông tin bổ sung
chẳng hạn 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>
<Result>
hoặc <RoomBundle>
, điều này có nghĩa là tỷ lệ này bị hạn chế bởi
thông tin về số người lưu trú.
Cú pháp
Khi <OccupancyDetails>
xuất hiện, phần tử này luôn đứng sau <Occupancy>
.
Xin 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 như sau:
Thành phần con | Bắt buộc? | Loại | Mô tả |
---|---|---|---|
<NumAdults> | Required | integer | Số lượng khách là 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 Trẻ 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>
.
Phản hồi 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 hành trình
thuộc tính tương ứng với Truy vấn Yêu cầu cung cấp giá hiện tại mà người dùng đã chỉ định
số lượng và loại khách. Tại đây, <OccupancyDetails>
gồm 2 người lớn và
một thành phần con -- đượ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>
Giá phản hồi
Ví dụ sau đây xác định một hành trình và giá của hành trình đó cho 1 người lớn
và 1 trẻ. Ở đây, <OccupancyDetails>
được trả về trong <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
hai đêm với giá có thể hoàn tiền. Tại đây, <OccupancyDetails>
sẽ 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 phòng
Ví dụ sau đây xác định nhiều mức giá <RoomBundle>
chỉ có thể chứa 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>