Trang tham khảo XML về Giá và Quỹ phòng (Giao dịch)

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<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 liệt kê 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ự timestamp chứ không phải theo thứ tự nhận được. Ví dụ: thông tin cập nhật về giá có dấu thời gian của 2019-05-03 14:09:00 nhận được sau một thông báo có dấu thời gian là 2019-05-03 14:10:00 sẽ vẫn được xử lý theo thứ tự và giá từ thông báo kèm theo dấu thời gian là 2019-05-03 14:10:00 sẽ được sử dụng.

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ử <RoomBundle> xác định Gói dịch vụ phòng và các loại phòng bổ sung cho cơ sở lưu trú. Chiến lược phát hành đĩa đơn Bạn cũng có thể dùng phần tử <Result> để xoá hành trình từ khoảng không quảng cáo.

* 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><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><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ử <Occupancy>, đây là phần tử số lượng khách của một phòng cụ thể. Ví dụ: phòng suite lớn <Capacity> có thể là 6, nhưng <Occupancy> cho kết quả này là 4.

Giá trị của <Capacity> phải là một số nguyên dương từ 1 đến 20.

<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ử <Description> nhận một phần tử con duy nhất <Text>, trong đó có hai phần tử sau thuộc tính bắt buộc:

  • text: Mô tả chi tiết về phòng.
  • language: Mã ngôn ngữ gồm hai chữ cái; ví dụ: fr.

Sử dụng một phần tử <Text> riêng cho mỗi ngôn ngữ mà quảng cáo hoặc đường liên kết miễn phí để đặt phòng của bạn có thể xuất hiện (với các giá trị khác nhau cho thuộc tính language).

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à <Text> Tệp này có hai thuộc tính bắt buộc sau đây:

  • text: Tên phòng.
  • language: Mã ngôn ngữ gồm hai chữ cái; ví dụ: fr.

Sử dụng một phần tử <Text> riêng cho mỗi ngôn ngữ nơi quảng cáo hoặc đường liên kết miễn phí để đặt phòng của bạn có thể xuất hiện (với cho thuộc tính language).

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ử <Capacity>, là số người mà căn phòng có thể chứa được về thực tế.

Giá trị của <Occupancy> phải là số dương số nguyên từ 1 đến 99.

<Occupancy> có thể đi kèm với <OccupancyDetails> chỉ định loại khách (người lớn hoặc trẻ em). Tham khảo cú pháp <OccupancyDetails> và nội dung mô tả về các phần tử con.

<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> sẽ lấy phương thức các phần tử con sau đây:

  • <MinOccupancy>: Số lượng khách tối thiểu có thể ở trong phòng. Ví dụ: nếu giá trị này được đặt thành 2 thân mến! Bạn không thể đặt phòng này cho một khách.

    Giá trị của <MinOccupancy> phải là số dương số nguyên từ 1 đến 99.

  • <MinAge>: Độ tuổi tối thiểu cho tất cả khách ở trong phòng. Ví dụ: nếu bạn đặt thuộc tính này thành 18, chỉ có thể đặt phòng này cho nhóm mà tất cả khách đều từ 18 tuổi hoặc cũ hơn.

    Giá trị của <MinAge> phải là một số nguyên dương từ 0 đến 99.

<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:

  • <URL>: Xác định vị trí của ảnh. Chiến lược phát hành đĩa đơn vị trí phải công khai (không có tường lửa) và phải bao gồm giao thức (ví dụ: https://). Chỉ sử dụng một <URL> trên <PhotoURL>.
  • <Caption>: Xác định chú thích cho ảnh. Phần tử này có một phần tử con duy nhất là <Text> Tệp này có hai thuộc tính bắt buộc: textlanguage. Thuộc tính text là chú thích. còn thuộc tính language chỉ định mã gồm hai chữ cái mã ngôn ngữ như en.

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á. Để để 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à:

  • western: Phòng kiểu phương Tây có giường.
  • japanese: Phòng kiểu Nhật có giường futon.
  • japanese_western: Phòng kiểu phương Tây của Nhật Bản có có cả giường kiểu phương Tây và đệm futon kiểu Nhật.
<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> đều có các thuộc tính sau:

  • size (không bắt buộc): Các giá trị hợp lệ là single, semi_double, double, queen, và king.
Mỗi <Bed> có các phần tử con như sau:
  • <Width> (không bắt buộc): Chỉ định chiều rộng của giường. Phải có thuộc tính unit với giá trị cm và thuộc tính number có chiều rộng của giường ở dạng số nguyên centimet.
  • <Length> (không bắt buộc): Chỉ định chiều dài của giường. Phải có thuộc tính unit với giá trị cm và thuộc tính number có chiều dài của giường centimet.
Ví dụ:
<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à sharedprivate.
<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_smokingsmoking.
<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à:

  • relation (không bắt buộc): Cho biết cách bồn tắm và nhà vệ sinh được đặt cạnh nhau. Các giá trị hợp lệ là together (cả bồn tắm và nhà vệ sinh đặt cạnh nhau trong cùng một phòng (ví dụ: phòng tắm) ngay cạnh nhau) và separate (phòng tắm và nhà vệ sinh đều có không gian riêng). Thuộc tính này không được đặt khi phòng không có cả bồn tắm và nhà vệ sinh.

Phần tử này có thể lấy các phần tử con sau đây (không bắt buộc):

  • <Bath> (không bắt buộc): Sự tồn tại của phần tử này cho biết phòng có bồn tắm.

    Các thuộc tính đó bao gồm:

    • bathtub (không bắt buộc): Cho biết phòng tắm có bồn tắm trong phòng tắm. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).
    • shower (không bắt buộc): Cho biết phòng tắm có vòi hoa sen. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).
  • <Toilet> (không bắt buộc): Sự tồn tại của phần tử này cho biết phòng này có nhà vệ sinh.

    Các thuộc tính đó bao gồm:

    • electronic_bidet (không bắt buộc): Cho biết rằng bồn cầu có bàn vệ sinh điện tử. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).
    • mobility_accessible (không bắt buộc): Cho biết rằng nhà vệ sinh có hỗ trợ người khuyết tật. Các giá trị hợp lệ là 0 (hoặc false) và 1 (hoặc true).

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:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

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_westernking 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><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><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><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 <Meals> thay vì <BreakfastIncluded>.

<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à web.

<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> lấy một là phần tử con <Text>, có hai thuộc tính bắt buộc, textlanguage. text là nội dung mô tả, còn thuộc tính language chỉ định một mã ngôn ngữ gồm hai chữ cái, như ví dụ sau cho thấy:

<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ử <Meals> có 2 phần tử con không bắt buộc các phần tử <Breakfast><Dinner>, có các thuộc tính sau:

  • included (bắt buộc): Đặt thành 1 (hoặc true) nếu giá phòng bao gồm bữa sáng/bữa tối; nếu không, đặt thành 0 hoặc false.
  • in_room (không bắt buộc): Đặt thành 1 (hoặc true) nếu khách có thể dùng bữa sáng/bữa tối trong phòng, họ ở lại in; nếu không, đặt thành 0 (hoặc false).
  • in_private_space (không bắt buộc): Đặt thành 1 (hoặc true) nếu khách có thể dùng bữa sáng/bữa tối không gian (ngoại trừ căn phòng họ ở) nơi họ có thể tránh tiếp xúc khách khác; nếu không, đặt thành 0 (hoặc false).
  • buffet (không bắt buộc): Đặt thành 1 (hoặc true) nếu bữa sáng/bữa tối được phục vụ dưới dạng tự chọn; nếu không, đặt thành 0 (hoặc false).

Các thuộc tính không bắt buộc chỉ được dùng khi included là đúng.

Đối với bộ lọc bữa ăn (no meals, breakfast only, dinner onlybreakfast and dinner) để làm việc, cả <Breakfast><Dinner> đều cần được cung cấp cùng với thuộc tính included.

<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à <Text> có hai thuộc tính: textlanguage. Thuộc tính text là nội dung mô tả và Thuộc tính language chỉ định mã ngôn ngữ gồm hai chữ cái, như trong ví dụ sau đây:

<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ử <Capacity>, là số người mà căn phòng có thể chứa được về thực tế.

Giá trị của <Occupancy> phải là số dương số nguyên từ 1 đến 99.

Nếu bạn chỉ định phần tử này trong cả <RoomBundle><PackageData> thì giá trị trong <RoomBundle> sẽ được ưu tiên hơn.

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 <Result> trong thông tin cập nhật về giá. Để biết thêm thông tin, hãy 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 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à 0 (hoặc false) và 1 (hoặc true). Giá trị mặc định là false.

<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> là phần tử có tất cả các thuộc tính đã đặ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. 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:

  • available: (Bắt buộc) Đặt thành 1 hoặc true để cho biết liệu mức giá này có cho phép refund; nếu không, hãy đặt thành 0 hoặc false.
  • refundable_until_days: (Bắt buộc nếu availabletrue) Chỉ định số ngày trước khi nhận phòng mà có thể được hoàn lại toàn bộ tiền đã yêu cầu. Giá trị của refundable_until_days phải là một số nguyên từ 0 đến 330, gồm cả hai giá trị này.
  • refundable_until_time: (Rất nên dùng nếu availabletrue) Chỉ định thời điểm mới nhất trong ngày, theo giờ địa phương của khách sạn, yêu cầu hoàn tiền sẽ được thực hiện. Bạn có thể kết hợp các refundable_until_days để chỉ định, cho ví dụ: "có thể hoàn tiền đến 4 giờ chiều hai ngày trước khi xác nhận có mặt". Nếu bạn không đặt refundable_until_time thì giá trị này mặc định là nửa đêm.

    Giá trị của thuộc tính này sử dụng định dạng Thời gian.

Khi đặt thuộc tính, hãy lưu ý những điều sau:

  • Nếu available hoặc refundable_until_days không phải là đã đặt, giá sẽ không hiển thị là có thể hoàn lại.
  • Nếu available0 hoặc false, các thuộc tính khác sẽ bị bỏ qua. Thuế suất không hiển thị dưới dạng được hoàn lại ngay cả khi bạn đã thiết lập một trong hai hoặc cả hai thuộc tính còn lại.
<MembershipBenefits Included> 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:
  • ProgramName: Tên chương trình khách hàng cao cấp
  • ProgramLevel: Cấp chương trình. Ví dụ: "Vàng."
  • NightlyValue (optional): Giá trị mỗi đêm của các lợi ích khác.
<CarRentalIncluded> Optional boolean Giá bao gồm ưu đãi cho thuê ô tô miễn phí trong thời gian lưu trú.
<MilesIncluded>&gt; Optional boolean Giá bao gồm dặm bay cho khách bay thường xuyên. Các tham số bao gồm:
  • NumberofMiles: Số dặm mỗi hành trình.
  • Provider: Cung cấp số dặm bay của khách bay thường xuyên.
<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ố:
  • Amount: Giá trị của khoản tín dụng cho mỗi hành trình, theo địa phương đơn vị tiền tệ.
<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><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:

  • Đối với phòng riêng, hãy đặt giá cho phòng hai người rẻ nhất mà bạn cung cấp. Cho phép số người lưu trú cao hơn nếu bạn không có mức giá cho phòng hai người và tài khoản của bạn có mức giá cho phòng hai người các mức giá. Vui lòng liên hệ với chúng tôi để bật mức giá cho phòng không phải là phòng hai người. Ở đây không cho phép đăng mức giá cho một người lưu trú phải được đặt trong <Rates>.
  • Đối với phòng dùng chung, hãy để trống và sử dụng <RoomBundle>.
  • Giá trị này phải là tổng giá cơ bản cho tất cả các đêm, chứ không phải là mức giá trung bình mỗi đêm.

Khi không thể đặt phòng cho hành trình, Phải bỏ qua hoặc đặt <Baserate> thành -1<Unavailable> phải là đã chỉ định, cùng với mọi lý do đã biết dẫn đến việc không thể sử dụng.

Để 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> không được chứa bất kỳ nhóm chữ số nào , chẳng hạn như dấu phẩy (,) hoặc dấu chấm (.). Luôn tách riêng phân số sử dụng dấu chấm (.) làm dấu thập phân. Ví dụ: biểu thị $1.200,40 là:

<Baserate currency="USD">1200.40</Baserate>

Phần tử <Baserate> sẽ nhận những giá trị sau thuộc tính không bắt buộc:

  • all_inclusive: Giá trị boolean cho biết tỷ lệ này bao gồm thuế và phí. Nói chung, đặt giá trị này thành false cho người dùng cuối ở Hoa Kỳ và Canada cũng như cung cấp các giá trị cho <Tax><OtherFees> phần tử. Nếu sử dụng giá trọn gói, bạn có thể không đủ điều kiện xuất hiện trong trang thông tin nếu giá của bạn không tách biệt các khoản thuế và phí cho người dùng Canada.

    Người dùng ở Hoa Kỳ hiện đã nhìn thấy giá trọn gói.

    Đối với tất cả người dùng cuối khác, bạn thường bao gồm cả thuế và phí trong mức cơ bản và đặt giá trị của all_inclusive cho true. Để biết thêm thông tin, hãy tham khảo Chính sách về thuế và phí.

    Giá trị mặc định là false.

  • currency: Mã đơn vị tiền tệ gồm ba chữ cái. Để ví dụ: USD cho đô la Mỹ.
<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à:

  • web: Người dùng bị tính phí trực tuyến tại thời điểm đặt chỗ. Đây là giá trị mặc định. Trang đích thực tế là được xác định bởi tệp trang đích và có thể bị ảnh hưởng bởi đơn vị tiền tệ của người dùng, vị trí, ngôn ngữ hoặc các yếu tố khác.
  • hotel: Người dùng bị tính phí khi nhận phòng tại khách sạn của bạn. Nếu bạn phải luôn thanh toán bằng đơn vị tiền tệ của khách sạn, hãy đặt giá trị của <ChargeCurrency> thành hotel. Trang đích thực tế không bị ảnh hưởng bởi đơn vị tiền tệ của người dùng.
  • deposit: Người dùng bị tính phí một số phần ngay lập tức và phần còn lại được tính phí sau, thông thường khi người dùng trả phòng khách sạn.
  • installments: Người dùng phải trả một khoản phí ban đầu trên tổng số tiền đến hạn và dự kiến sẽ thanh toán định kỳ số dư đã định trước trong một khoảng thời gian cố định.

Giá trị mặc định là web.

<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:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

Các phần tử <Custom> cho phép bạn truyền dữ liệu tuỳ ý. Ví dụ: bạn có thể chỉ định giá trị trong trường này, sau đó giá trị này sẽ được sử dụng bởi tệp trang đích để tạo URL tùy chỉnh cho trang đích . Mỗi trường tùy chỉnh có giới hạn là 200 ký tự. Để thông tin khác, tham khảo tệp trang đích

&lt;Custom&gt; được cung cấp trong <Rate> phần tử không được kế thừa từ phần tử <RoomBundle>. Bạn nên định nghĩa <Custom> thuộc tính riêng trong mỗi <RoomBundle>.

<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><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ử <OtherFees> nếu <Baserate> lớn hơn 0.

<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ử <Rates> khi có nhiều mức giá cho cùng một tổ hợp phòng/hành trình hoặc khi một mức giá không được phép sẽ được chỉ định ở cấp <Result>. 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, giá phòng có điều kiện trong Gói dịch vụ phòng hoặc về số người lưu trú khác nhau.

Lưu ý: Trong phạm vi <Result>, mức giá cho phòng một người có thể chỉ được chỉ định trong <Rates>. Vui lòng liên hệ với chúng tôi để cho phép giá cho phòng không phải là phòng hai người.

<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> là phần tử có tất cả các thuộc tính đã đặ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. 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:

  • available: (Bắt buộc) Đặt thành 1 (hoặc true) để cho biết liệu giá này có cho phép refund; nếu không, đặt thành 0 (hoặc false).
  • refundable_until_days: (Bắt buộc nếu availabletrue) Chỉ định số ngày trước khi nhận phòng mà có thể được hoàn lại toàn bộ tiền đã yêu cầu. Giá trị của refundable_until_days phải là một số nguyên từ 0 đến 330, gồm cả hai giá trị này.
  • refundable_until_time: (Rất nên dùng nếu availabletrue) Chỉ định thời điểm mới nhất trong ngày, theo giờ địa phương của khách sạn, yêu cầu hoàn tiền sẽ được thực hiện. Bạn có thể kết hợp các refundable_until_days để chỉ định, cho ví dụ: "có thể hoàn tiền đến 4 giờ chiều hai ngày trước khi xác nhận có mặt". Nếu bạn không đặt refundable_until_time thì giá trị này mặc định là nửa đêm.

    Giá trị của thuộc tính này sử dụng định dạng Thời gian.

Khi đặt thuộc tính, hãy lưu ý những điều sau:

  • Nếu available hoặc refundable_until_days không phải là đã đặt, giá sẽ không hiển thị là có thể hoàn lại.
  • Nếu available0 (hoặc false), các thuộc tính khác sẽ bị bỏ qua. Thuế suất không hiển thị dưới dạng được hoàn lại ngay cả khi bạn đã thiết lập một trong hai hoặc cả hai thuộc tính còn lại.
<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ử <Baserate> "all_inclusive" được đặt rõ ràng thành true, sau đó đặt thuộc tính này là tùy chọn.

<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>:
  • <NoVacancy/>: Không còn phòng nào để bán cho một hoặc nhiều đêm lưu trú.
  • <MinNightStay value=N/>: Hành trình thấp hơn thời gian lưu trú tối thiểu N cho các ngày lưu trú.
  • <MaxNightStay value=N/>: Hành trình nằm trên đêm lưu trú tối đa N cho các ngày lưu trú.
  • <MinAdvancePurchase value=N/>: Hành trình cũ là dưới thời hạn đặt trước tối thiểu là N cho thời gian lưu trú ngày tháng.
  • <MaxAdvancePurchase value=N/>: Hành trình cũ là cao hơn thời hạn đặt trước tối đa là N đối với thời gian lưu trú ngày tháng.
  • <ClosedToArrival/>: Tài sản không cho phép ngày nhận phòng vào ngày đến của hành trình.
  • <ClosedToDeparture/>: Tài sản không cho phép ngày trả phòng vào ngày khởi hành của hành trình.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: Cơ sở lưu trú đã đóng cửa đối với một số hoặc toàn bộ thời gian lưu trú. Các thuộc tính nên dùng first_openfirst_closed chỉ định ngày đầu tiên lớn hơn hoặc bằng ngày đến mà cơ sở lưu trú mở cửa hoặc đóng cửa tương ứng. Đối với cơ sở lưu trú đóng cửa sau ngày đến, first_open phải bằng ngày đến và first_closed phải là ngày đóng cửa cơ sở lưu trú. Đối với cơ sở lưu trú đóng cửa vào ngày đến, first_closed phải bằng ngày đến và first_opened phải là ngày tiếp theo mà tài sản đang mở.
  • <NotFetched/>: Giá của hành trình không phải là do các nguồn dữ liệu thứ cấp cung cấp.
  • <InvalidProperty/>: Giá trị nhận dạng tài sản được yêu cầu không nhận dạng được.
  • <InvalidOccupancy/>: Số người lưu trú được yêu cầu không phải là mà cơ sở lưu trú hỗ trợ.
  • <PriceIssue/>: Một vấn đề về giá đã khiến giá này không gửi được.
  • <InternalError reason=""/>: Một số lỗi không được đánh số đã xảy ra. Thuộc tính lý do không bắt buộc có thể báo cáo lỗi dưới dạng văn bản.
  • <OtherRestriction restriction=""/>: Hành trình cũ là không áp dụng được do có một số quy định hạn chế về yêu cầu đặt phòng không trả phí. Không bắt buộc thuộc tính hạn chế cho phép báo cáo quy định hạn chế dưới dạng văn bản.

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ỉ &lt;AllowablePointsofSale&gt; đượ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 <Baserate> trong Không thể xác định <Rate> là không hoạt độ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 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 <Result>, thì chúng không được kế thừa trong <RoomBundle> và cần được xác định riêng cho từng phần tử <RoomBundle> hoặc có thể được đưa vào <PackageData> nếu cần thiết.

<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. <Occupancy> có thể đi kèm với <OccupancyDetails>: xác định loại khách (người lớn hoặc con). Hãy tham khảo <OccupancyDetails> để biết cú pháp và nội dung mô tả về các phần tử con.

<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ử <Baserate> "all_inclusive" được đặt rõ ràng thành true, sau đó đặt thuộc tính này là tùy chọ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 ở 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> là phần tử có tất cả các thuộc tính đã đặ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. 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:

  • available: (Bắt buộc) Đặt thành 1 (hoặc true) để cho biết liệu giá này có cho phép refund; nếu không, đặt thành 0 (hoặc false).
  • refundable_until_days: (Bắt buộc nếu availabletrue) Chỉ định số ngày trước khi nhận phòng mà có thể được hoàn lại toàn bộ tiền đã yêu cầu. Giá trị của refundable_until_days phải là một số nguyên từ 0 đến 330, gồm cả hai giá trị này.
  • refundable_until_time: (Rất nên dùng nếu availabletrue) Chỉ định thời điểm mới nhất trong ngày, theo giờ địa phương của khách sạn, yêu cầu hoàn tiền sẽ được thực hiện. Bạn có thể kết hợp các refundable_until_days để chỉ định, cho ví dụ: "có thể hoàn tiền đến 4 giờ chiều hai ngày trước khi xác nhận có mặt". Nếu bạn không đặt refundable_until_time thì giá trị này mặc định là nửa đêm.

    Giá trị của thuộc tính này sử dụng định dạng Thời gian.

Khi đặt thuộc tính, hãy lưu ý những điều sau:

  • Nếu available hoặc refundable_until_days không phải là đã đặt, giá sẽ không hiển thị là có thể hoàn lại.
  • Nếu available0 (hoặc false), các thuộc tính khác sẽ bị bỏ qua. Thuế suất không hiển thị dưới dạng được hoàn lại ngay cả khi bạn đã thiết lập một trong hai hoặc cả hai thuộc tính còn lại.
<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:
  • Khi không thể sử dụng phòng cho hành trình, hãy xóa Phần tử <RoomBundle> để cho biết một phòng thì không trong kho hàng lâu hơn. Để biết thêm thông tin, hãy tham khảo Xoá Gói dịch vụ phòng.
<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à web.

<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 <Result>, thì chúng không được kế thừa trong <RoomBundle> và cần được xác định riêng cho từng phần tử <RoomBundle> hoặc có thể được đưa vào <PackageData> nếu cần thiết.

<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 <Capacity>, đây là số người căn phòng có thể chứa thực tế.

Khi xác định số người lưu trú trong URL trang đích, hãy sử dụng biến NUM-ADULTSNUM-CHILDREN, như được mô tả trong phần Sử dụng Biến và điều kiện. Giá trị mặc định là 2 người lớn và 0 trẻ em.

Giá trị của <Occupancy> phải là số dương số nguyên từ 1 đến 99.

Lưu ý:

  • <Occupancy> trong <RoomBundle> thực sự nên gắn cờ là bắt buộc và nếu bỏ qua sẽ gửi lỗi 1097.
  • <Occupancy> xuất phát từ đối tượng dữ liệu trong đơn đặt hàng: <RoomBundle>, <PackageData>, sau đó = <RoomData>. Nếu không có giá trị nào trong các trường này, thì giá trị mặc định sẽ là 2.
  • <Occupancy> có thể đi kèm với <OccupancyDetails>, Mã này quy định loại khách (người lớn hoặc trẻ em). Nếu khách không được chỉ định, họ được giả định là người lớn. Tham khảo ý kiến <OccupancyDetails> để xem cú pháp và nội dung mô tả về các phần tử con.
  • Khi bạn đặt <Occupancy> trong cả hai <RoomBundle><PackageData>, giá trị trong <RoomBundle> sẽ được ưu tiên.
<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>. Để 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à 0 (hoặc false) và 1 (hoặc true). Giá trị mặc định là false.

<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> là phần tử có tất cả các thuộc tính đã đặ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. 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:

  • available: (Bắt buộc) Đặt thành 1 (hoặc true) để cho biết liệu giá này có cho phép refund; nếu không, đặt thành 0 (hoặc false).
  • refundable_until_days: (Bắt buộc nếu availabletrue) Chỉ định số ngày trước khi nhận phòng mà có thể được hoàn lại toàn bộ tiền đã yêu cầu. Giá trị của refundable_until_days phải là một số nguyên từ 0 đến 330, gồm cả hai giá trị này.
  • refundable_until_time: (Rất nên dùng nếu availabletrue) Chỉ định thời điểm mới nhất trong ngày, theo giờ địa phương của khách sạn, yêu cầu hoàn tiền sẽ được thực hiện. Bạn có thể kết hợp các refundable_until_days để chỉ định, cho ví dụ: "có thể hoàn tiền đến 4 giờ chiều hai ngày trước khi xác nhận có mặt". Nếu bạn không đặt refundable_until_time thì giá trị này mặc định là nửa đêm.

    Giá trị của thuộc tính này sử dụng định dạng Thời gian.

Khi đặt thuộc tính, hãy lưu ý những điều sau:

  • Nếu available hoặc refundable_until_days nếu bạn không đặt, thì giá sẽ không hiển thị là có thể hoàn tiền.
  • Nếu available0 (hoặc false), các thuộc tính khác sẽ bị bỏ qua. Thuế suất không hiển thị dưới dạng được hoàn lại ngay cả khi bạn đã thiết lập một trong hai hoặc cả hai thuộc tính còn lại.
<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><PackageID>. Sử dụng <RoomData><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><PackageID>. Sử dụng <RoomData><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><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>