定價與費率;Room 庫存 (交易) XML 參考資料

本頁面提供以 XML 為基礎的交易訊息的參考資料。

<Transaction>

交易訊息的根元素為 <Transaction>。這是一個容器,用於提供客房和套裝方案的描述性資訊,以及/或會議室和套件的定價與可用性。

<Transaction> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

使用 <Transaction> 做為根元素的訊息需要至少一個子元素。交易訊息可以有任意數量的子項元素,只要訊息總大小不超過 100 MB。

語法

<Transaction> 元素使用下列語法:

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

屬性

<Transaction> 元素的屬性如下:

屬性 必填與否 類型 說明
id Required string 每則交易訊息的專屬 ID。
partner Optional string 交易訊息適用的合作夥伴帳戶。如果您的後端為多個合作夥伴帳戶提供價格動態饋給,通常就適合使用這項屬性。這個字串值是 Hotel Center 帳戶設定頁面中列出的「合作夥伴金鑰」值。
timestamp Required DateTime

傳送交易訊息的時間點。

系統會處理含有時間戳記在過去 24 小時內傳送的所有訊息,並移除尚未捨棄的訊息。

訊息會按照 timestamp 順序處理,而不是按照接收順序處理。舉例來說,即使訊息的時間戳記為 2019-05-03 14:09:00,而該訊息在時間戳記為 2019-05-03 14:10:00 的訊息之後,仍會依序處理,系統則仍會使用時間戳記為 2019-05-03 14:10:00 的訊息價格更新。

子元素

<Transaction> 元素包含下列子元素:

子元素 必填與否 類型 說明
<PropertyDataSet> Optional* <PropertyDataSet>

說明特定房型和房型套裝組合。您通常會在獨立的交易訊息中使用這個元素,以定義 Room Bundle 的共用值,並縮減交易訊息的大小。

<Result> Optional* <Result>

客房行程或 <RoomBundle> 元素的價格資料,用於定義房源的 Room Bundle 和其他類型的客房。<Result> 元素也可用來將行程從目錄中移除。

* 至少須有一個 <PropertyDataSet><Result>

範例

客房資料

以下範例定義了簡易交易訊息中的客房資料:

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

價格資料

以下範例說明如何透過簡單的交易訊息定義定價資料:

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

每晚房價

以下範例定義自 2023 年 6 月 7 日起 1 至 7 晚的價格資料:

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


基本費率和條件式費率

以下範例會顯示包含基本費率和條件式費率的交易訊息:

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

移除廣告空間

以下範例說明如何從商品目錄資料中移除飯店的多個商品目錄 (入住不同日期的 1 晚住宿):

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

<Transaction> 訊息中的會議室和套件 (或 Room Bundle) 資訊的容器。針對飯店設定的值,會覆寫合作夥伴上設定的值。 Google 會儲存這些資訊,因此您不必在每次傳送價格更新時定義這項資訊。

<PropertyDataSet> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>  // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

詳情請參閱 Room 套裝組合中繼資料

語法

<PropertyDataSet> 元素使用下列語法:

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

屬性

<PropertyDataSet> 元素沒有屬性。

子元素

<PropertyDataSet> 元素包含下列子元素:

子元素 必填與否 類型 說明
<PackageData> Optional* <PackageData> 說明房型套裝組合。這項資料與合作夥伴和飯店相關聯,但不會與行程相關聯。這個元素類似於 <RoomData>,但說明不屬於實體房間說明的設施和字詞。

你在價格更新中提及套件 ID。

詳情請參閱 Room 套裝組合中繼資料

<Property> Required string 要套用相關資料的飯店 ID。這個元素的值必須是與飯店清單動態饋給中產品資訊 <id> 的字串。
<RoomData> Optional* <RoomData> 描述房間,這項資料與合作夥伴和飯店相關聯,但不會與行程建立關聯。

你在更新價格資訊中參照客房 ID。

* 至少須有一個 <PackageData><RoomData>

範例

Room 和套件資料

以下範例顯示 <PropertyDataSet> 中的 Room 和套件資料:

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

傳送這間客房和/或房型套裝組合的價格和空房資訊時,您可以在定價訊息中參照客房和套件 ID。結果是您可以大幅縮減訊息大小,也能減少因資料重複而出現的錯誤數量。詳情請參閱 Room 套裝組合中繼資料

<RoomData>

定義與房間有關的行程中繼資料,以及 Room 套裝組合 (因為 Room Bundle 是房間和其他設施)。使用 <RoomData> 即可減少價格動態饋給中的描述性資料重複。

<RoomData> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

<RoomData> 元素包含與合作夥伴和飯店相關聯的資訊,但不含行程資訊。這些用途都適用於所有非行程資料。

<RoomData> 元素類似於 <PackageData>,但用來說明實體房間,而非套件的設施和條款。您可以合併使用 <RoomData><PackageData>,提供 Room 套裝組合的詳細資料。如果是不屬於套件的個別會議室,請使用 <RoomData>

您可以為同一個房間或 Room Bundle 定義 <RoomData><PackageData> 元素。Google 在搜尋結果中顯示該會議室或套件時,會包含這兩個會議室或套件的說明,並以連字號分隔。

詳情請參閱 Room 套裝組合中繼資料

語法

<RoomData> 元素使用下列語法:

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

屬性

<RoomData> 元素沒有屬性。

子元素

<RoomData> 元素包含下列子元素:

子元素 必填與否 類型 說明
<Capacity> Optional integer 會議室可實際容納的房客人數上限。會議室的可容納人數大於或等於可住人數。

指定時,這個值必須等於或大於 <Occupancy> 元素的值,也就是特定房間的房客人數。舉例來說,大型套件的 <Capacity> 可能是 6,但 <Occupancy> 為 4。

<Capacity> 的值必須是介於 1 至 20 (含首尾) 之間的正整數。

<Description> Optional Object 會議室的詳細說明。這個元素應包含其他元素或 <Name> 元素未描述的資訊。指定房間說明時,請勿全部使用大寫字母。

<Description> 元素會採用一個子元素 <Text>,這個子元素包含下列兩個必要屬性:

  • text:會議室的詳細說明。
  • language:由兩個字母組成的語言代碼,例如 fr

針對廣告或免費預訂連結的每種語言分別使用不同 <Text> 元素 (language 屬性值各不相同)。

以下範例顯示法文和英文版本的會議室說明:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string 聊天室類別的名稱。這個值應與飯店到達網頁 (舊稱「銷售點」) 上顯示的一致。請勿將這個元素的值設為全部大寫字母。

這個元素會採用一個 <Text> 子元素,該元素包含下列兩個必要屬性:

  • text:會議室的名稱。
  • language:由兩個字母組成的語言代碼,例如 fr

針對廣告或免費預訂連結的每種語言分別使用不同 <Text> 元素 (language 屬性值各不相同)。

以下範例顯示法文和英文版本的會議室名稱:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer 會議室適合的邀請對像人數上限。 舉例來說,大型套房或許能容納 6 位房客 (容量 = 6),但可容納最多 4 名房客。

這個值必須小於或等於 <Capacity> 元素,也就是客房可實際容納的人數。

<Occupancy> 的值必須是介於 1 至 99 (含首尾) 之間的正整數。

<Occupancy> 可隨附用於指定訪客類型 (成人或兒童) 的 <OccupancyDetails>。如需子元素的語法和說明,請參閱 <OccupancyDetails>

<OccupancySettings> Optional Object 可以限製或修改房間座位佔用率的設定。

<OccupancySettings> 元素會採用下列子元素:

  • <MinOccupancy>:可住在房間的房客人數下限。舉例來說,如果設為 2,就無法為單一邀請對象預訂這間會議室。

    <MinOccupancy> 的值必須是介於 1 至 99 (含首尾) 之間的正整數。

  • <MinAge>:所有房客入住會議室的最低年齡。舉例來說,如果設為 18,則只能為所有邀請對像都年滿 18 歲的群組預訂這間會議室。

    <MinAge> 的值必須是介於 0 至 99 (含首尾) 之間的正整數。

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

您不需要加入所有子元素。

<PhotoURL> Optional Object 指定客房或房型套裝組合相片的網址和選用說明文字。您可以為客房或 Room Bundle 指定多個 <PhotoURL>。每個相片網址都必須為專屬的 <PhotoURL>

這個元素會採用下列子元素:

  • <URL>:指定相片的位置。位置必須公開 (而非防火牆後方),且應包含通訊協定 (例如 https://)。每個 <PhotoURL> 只能使用一個 <URL>
  • <Caption>:定義相片的說明文字。這個元素會採用單一子元素 <Text>,其中包含 textlanguage 這兩個必要屬性。text 屬性為說明文字,language 屬性則指定雙字母語言代碼,例如 en

示例:

<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> 包含客房設施的相關資訊。
<RoomID> Required string 房間的專屬 ID。請使用這個 ID,將客房資料與價格更新項目中的 <Result> 區塊進行比對。詳情請參閱 Room 套裝組合中繼資料。(您也可以在以內嵌方式定義會議室資料時,使用這個 ID 在單一交易訊息中參照常見的會議室定義。)

範例

客房資料

以下範例定義客房資料:

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

客房和套件中繼資料

以下範例定義了 Room 和套件中繼資料:

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

多間房型套裝組合

以下範例定義了多個 Room 套裝組合的 Room 和套件中繼資料:

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

定義會議室中的設施。

<RoomFeatures> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
            + <RoomFeatures>

語法

<RoomFeatures> 元素使用下列語法:

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

屬性

<RoomFeatures> 元素沒有屬性。

子元素

<RoomFeatures> 元素包含下列子元素:

子元素 必填與否 類型 說明
<JapaneseHotelRoomStyle> Optional enum

表示日式飯店客房的樣式。

以下為有效值:

  • western:提供床鋪的西式客房。
  • japanese:提供日式床墊的日式客房。
  • japanese_western:日式西式客房,提供西式床鋪和日式日式床墊。
<Beds> Optional Object 包含的 <Bed> 數量等於聊天室中的數量。請注意,此處不應計算日式日式床墊。

每個 <Bed> 都具有下列屬性:

  • size (選用):有效值為 singlesemi_doubledoublequeenking
每個 <Bed> 都具有下列子元素:
  • <Width> (選用):指定床墊寬度。必須包含 cm 值的 unit 屬性,以及 number 屬性的床寬度 (以整數公分為單位)。
  • <Length> (選用):指定床墊長度。必須包含有 cm 值的 unit 屬性,以及 number 屬性的床長度 (以整數公分為單位)。
範例:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty 如果這間客房是套房,請提供這個元素。
<Capsule> Optional empty 如果這間客房是膠囊房,請提供這個元素。
<Roomsharing> Optional enum 這間會議室是否與其他乘客 (例如擁有者或其他邀請對象) 共用。有效值為 sharedprivate
<Outdoor> Optional empty 這間飯店是沒有固定牆、管路和氣候控制的戶外住宿,請提供這個元素。舉例來說,飯店客房不是戶外住宿,而房客可入住帳篷的露營區,而房客可自備休旅車的休旅車公園則是戶外住宿。
<MobilityAccessible> Optional empty 如果這間客房可供旅客使用,請提供這個元素。
<Smoking> Optional enum 這間客房是否為禁煙室或吸煙室。有效值為 non_smokingsmoking
<BathAndToilet> Optional Object 包含房內浴室和馬桶的相關資訊。

屬性:

  • relation (選用):表示浴室和馬桶的彼此方式。有效值為 together (如浴室和廁所放在同一個房間 (例如浴室) 並排放置) 和 separate (浴室和廁所皆有專用空間)。如果房間未同時包含浴室和廁所,則不得設定這個屬性。

元素選擇性接受下列子元素:

  • <Bath> (選用):這個元素存在表示房間設有浴池。

    屬性包括:

    • bathtub (選用):表示浴室設有浴缸。有效值為 0 (或 false) 和 1 (或 true)。
    • shower (選用):表示浴池上有淋浴設備。有效值為 0 (或 false) 和 1 (或 true)。
  • <Toilet> (選用):如果這個元素存在,代表這個房間設有廁所。

    屬性包括:

    • electronic_bidet (選用):表示廁所有電子出價調節係數。有效值為 0 (或 false) 和 1 (或 true)。
    • mobility_accessible (選用):表示廁所可以方便移動。有效值為 0 (或 false) 和 1 (或 true)。

示例:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty 這間客房設有私人露天浴池時,請提供這項屬性。
<AirConditioning> Optional empty 這間房間設有空調時,請提供這個元素。
<Balcony> Optional empty 這間房間設有陽台或陽台,並提供這個元素。
<Views> Optional Object 您可以使用下列功能:

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

範例

JapaneseHotelRoomStyle 沒有預設值。省略值不會導致 XML 錯誤,但當使用者依客房樣式或床鋪篩選時,您的商店資訊不會顯示在搜尋結果中。

兩張單人床

以下範例說明如何使用 <RoomFeatures>

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <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>

兩張雙人床

以下是提供兩張 double 床的 western 風格日式客房範例。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


無床的日式風格

以下為不床鋪的日式客房範例。japanese 樣式房間不需要提供床鋪資訊。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

附床的日本西部

以下是提供 king 尺寸床的 japanese_western 樣式房間範例。

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

如果合作夥伴在 japanese_western 會議室中未提供床鋪資訊,請參考以下範例:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

<PackageData>

定義屬性中與 Room Bundle 無關的行程中繼資料。這個元素包含與合作夥伴和飯店相關聯的資訊,但不含行程資訊。這個意圖的作用是定義所有非行程資料一次,並從行程資料參照該資料。

<PackageData> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

<PackageData> 元素與 <RoomData> 相似,但其說明不屬於實體房間說明的費率功能和字詞。您可以搭配使用 <RoomData><PackageData>,提供 Room Bundle 和費率功能的詳細資料。如果是不屬於套件的個別會議室,請使用 <RoomData>

您可以為同一個會議室或 Room Bundle 定義 <RoomData><PackageData> 元素。Google 在搜尋結果中顯示該會議室或套件時,會包含這兩個會議室或套件的說明,並以連字號分隔。

如果您更新屬性的單一 <PackageData> 元素,就必須更新屬性的所有 <PackageData><RoomData> 元素。每個 <PropertyDataSet> 都會視為該屬性的所有資料,並覆寫任何現有資料。

詳情請參閱 Room 套裝組合中繼資料

語法

<PackageData> 元素使用下列語法:

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

屬性

<PackageData> 元素沒有屬性。

子元素

<PackageData> 元素包含下列子元素:

子元素 必填與否 類型 說明
<BreakfastIncluded> Optional boolean 指定這個套件是否包含含房價的早餐。 有效值為 0 (或 false) 和 1 (或 true)。

建議您使用 <Meals>,而非 <BreakfastIncluded>

<ChargeCurrency> Optional enum 使用者支付預訂費用的時間和位置。這個元素使用的語法與 <Result> 中的 <ChargeCurrency> 相同。

預設值為 web

<CheckinTime> Optional Time 可能的最早入住時間。 時間必須小於飯店當地時間 24:00。
<CheckoutTime> Optional Time 飯店當地時間的最晚退房時間。
<Description> Optional Object 套件的詳細說明。這個元素應包含其他元素或 <Name> 元素未描述的資訊。指定房間說明時,請勿全部使用大寫字母。

<Description> 元素會採用單一子元素 <Text>,後者有兩個必要屬性:textlanguagetext 屬性為說明,language 屬性會指定兩個字母的語言代碼,如以下範例所示:

<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 如果套裝方案包含免付費網際網路連線,其他套件則不包含該設施。在為所有客房提供免費網際網路的飯店中,請勿為 Room Bundle 設定這項元素。這項元素不適用於客房內無法使用的房內有線網際網路或無線網際網路。有效值為 0 (或 false) 和 1 (或 true)。
<Meals> Optional Object 包含這個套件中的飲食資訊。

<Meals> 元素會採用 <Breakfast><Dinner> 這兩個選用子元素,其中的屬性如下:

  • included (必要):如果房價包含早餐/晚餐,請設為 1 (或 true);否則請設為 0false
  • in_room (選用):如果房客可以在入住的房間內享用早餐/晚餐,請設為 1 (或 true);否則請設為 0 (或 false)。
  • in_private_space (選用):如果房客可以在聊天室中 (除了入住的房間外),選擇在空房中享用早餐/晚餐,請設為 1 (或 true),否則請設為 0 (或 false)。
  • buffet (選用):如果提供自助式早餐/晚餐,請設為 1 (或 true);否則請設為 0 (或 false)。

選用屬性只有在 included 為 true 時才會使用。

如要讓餐點篩選器 (no mealsbreakfast onlydinner onlybreakfast and dinner) 正常運作,<Breakfast><Dinner> 都必須使用 included 屬性。

<Name> Required string 套件名稱。這個值應與飯店到達網頁上顯示的值相符。請勿將這個元素的值設為全部大寫字母。

這個元素會採用單一子元素 <Text>,其中包含 textlanguage 這兩個屬性。text 屬性是說明,而 language 屬性指定雙字母的語言代碼,如以下範例所示:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer 會議室套裝組合涵蓋的房客人數上限。舉例來說,大型套房或許能容納 6 人入住,但僅供 4 位房客入住。

這個值必須小於或等於 <Capacity> 元素,也就是客房可實際容納的人數。

<Occupancy> 的值必須是介於 1 至 99 (含首尾) 之間的正整數。

如果您同時在 <RoomBundle><PackageData> 中指定這個元素,系統會優先採用 <RoomBundle> 中的值。

注意

<Occupancy> 可隨附用於指定訪客類型 (成人或兒童) 的 <OccupancyDetails>。如需子項元素的語法和說明,請參閱 <OccupancyDetails>

<PackageID> Required string 檔案包的專屬 ID。請使用這個 ID,將 Room Bundle 資料與價格更新項目中的 <Result> 區塊進行比對。詳情請參閱 Room 套裝組合中繼資料

(在以內嵌方式定義 Room Bundle 資料時,您也可以使用這個 ID 參照單一交易訊息中使用的一般 Room 套裝組合定義)。

<ParkingIncluded> Optional boolean 客房套裝組合是否包含免費停車位,這間飯店的停車場屬於付費服務。請勿為提供免費停車位的飯店指定這項元素的值。

有效值為 0 (或 false) 和 1 (或 true)。預設值為 false

<PhotoURL> Optional Object (與 <RoomData> 中的 <PhotoURL> 相同,但適用於包裹 (例如膳食相片)。
<Refundable> Optional Object 刊登費率為可全額退款或提供免費取消的費率。如未提供,系統就不會顯示退款相關資訊。<PackageData> 層級的退款政策會覆寫 <Result> 層級的退款政策。<Rates> 層級的退款政策會覆寫 <PackageData> 層級的退款政策。您也可以透過替代選項向使用者顯示可退款的定價,而不必直接修改交易訊息結構定義。如要進一步瞭解這些選項,請參閱這篇文章

以下範例顯示 <Refundable> 元素及其所有屬性設定:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注意:建議您設定所有屬性。如果您未設定一或多項屬性,系統就會產生動態饋給狀態警告訊息。

如未設定任何屬性,費率就不會顯示為可退款。屬性包括:

  • available:(必要) 設為 1true,表示費率是否允許全額退款;否則請設為 0false
  • refundable_until_days:(如果 availabletrue,則為必要欄位) 指定在入住前可申請全額退款所需的天數。refundable_until_days 的值必須是介於 0 至 330 (含首尾) 之間的整數。
  • refundable_until_time:(如果 availabletrue,則強烈建議使用) 指定最晚可在飯店當地時間處理的最晚退款要求。這項條件可與 refundable_until_days 結合以指定,例如:「退款期限至入住前兩天下午 4 點」。如未設定 refundable_until_time,則值會預設為午夜。

    此屬性的值使用 Time 格式。

設定屬性時,請注意下列事項:

  • 如未設定 availablerefundable_until_days,費率就不會顯示為可退款。
  • 如果 available0false,系統會忽略其他屬性。即便設定了其他或兩項屬性,費率還是無法顯示為可退款。
<MembershipBenefits Included> Optional boolean 房價包含卓越的入住天數福利。包含下列參數:
  • ProgramName:卓越狀態計畫名稱
  • ProgramLevel:計畫等級,例如「黃金。」
  • NightlyValue (optional):每晚提供的福利。
<CarRentalIncluded> Optional boolean 房價包含住宿期間免費租車服務。
<MilesIncluded>> Optional boolean 房價包含飛行常客里程數。參數包括:
  • NumberofMiles:每行程的英里數。
  • Provider:提供飛行里程數頻繁。
<OnPropertyCredit> Optional boolean 房價含房源抵免額 (F&B、度假村、SPA 等)。參數:
  • Amount:每行程的抵免額價值,以當地幣別表示。
<AirportTransportationIncluded> Optional Object 房價包含往返附近機場的免費接駁服務。選用的 direction 屬性可指定交通工具的方向。有效值包括:
    from:從機場提供交通工具至房源。如果未指定方向,則使用預設值。to:由房源提供交通運輸服務。round_trip:往返機場。

範例

單人房組合

以下範例定義了單一 Room Bundle,其可住人數為 2 (一名成人與一名兒童),並含早餐:

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

Room 和套件中繼資料

以下範例定義了 Room 和套件中繼資料:

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

多間房型套裝組合

以下範例定義了多個 Room 套裝組合的 Room 和套件中繼資料:

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


包含房價的房型套裝組合

以下範例定義了提供房價功能的 Room 套裝組合房間和套件中繼資料:

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

餐點和相片

以下範例定義了餐點、相片,以及入住和退房時間的住房和套件中繼資料:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <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>

早餐

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <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>

<Transaction> 訊息中的價格和供應情形更新的容器。

<Result> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

使用 <Result> 設定或更新房價,以及定義可用的空房。這個元素中定義的項目通常會參照 <PackageData><RoomData> 中定義的房間或套件 (例如說明或設施組合) 與行程無關的中繼資料。

一般而言,您傳送價格更新的頻率非常頻繁,實際的執行頻率和頻率取決於放送模式

您可以依照「移除庫存」一節的說明,在交易訊息中使用 <Result> 移除行程。如要進一步瞭解如何使用交易訊息更新價格和供應情形,請參閱新增及更新庫存

單一交易訊息可包含任意數量的 <Result> 元素,只要訊息大小不超過 100 MB。

語法

<Result> 元素使用下列語法:

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

屬性

<Result> 元素的屬性如下:

屬性 必填與否 類型 說明
mergeable Optional boolean 根據預設,特定飯店和行程組合的新價格會覆寫 Google 快取中先前 (未過期) 的價格。透過可合併的屬性,您可以將其他價格儲存至 Google 的快取,而不必刪除先前的價格資訊。使用情境回應的即時價格查詢一律會將這項屬性設為 true (無論交易訊息的回應為何)。

子元素

<Result> 元素包含下列子元素:

子元素 必填與否 類型 說明
<AllowablePointsOfSale> Optional Object 一或多個符合飯店使用資格的到達網頁。到達網頁是可以為使用者處理預訂程序的網站。如要明確納入特定到達網頁 (並排除其他到達網頁),請在到達網頁檔案中,新增一或多個符合 <PointOfSale> 元素的 id 屬性的 <AllowablePointsOfSale> 元素。

如果您未提供這個元素,則到達網頁檔案中定義的所有到達網頁都符合預訂客房的資格。詳情請參閱到達網頁檔案語法

<Baserate> Optional float 住宿房價。這個元素的值應反映下列項目:

  • 如為私人房型,請設定價格最低的雙人入住費率。
  • 如果是共用房間,請留空並使用 <RoomBundle>
  • 總入住天數,而非每晚平均房價。

當行程無法使用的會議室時,請將 <Baserate> 省略或設為 -1,且必須指定 <Unavailable>,以及所有已知不可用原因。

如要移除 Room Bundle,請參閱「移除 Room Bundle」一文。

<Baserate> 不得包含任何數字分組符號,例如逗號 (,) 或半形句號 (.)。請一律使用半形句號 (.) 做為小數符號來分隔分數。舉例來說,如果代表 $1,200.40 美元,如下所示:

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

<Baserate> 元素包含下列選用屬性:

  • all_inclusive:指出此費率是否包含稅金和相關費用的布林值。一般來說,請為美國和加拿大使用者將這個值設為 false,並為 <Tax><OtherFees> 元素提供值。如果使用全包式方案價格,如果您的價格並未區分美國和加拿大使用者的稅金和相關費用,則可能無法顯示在產品資訊中。

    至於所有其他使用者,您通常會加入基本費率中的稅金和相關費用,並將 all_inclusive 屬性的值設為 true。詳情請參閱稅金與費用政策

    預設值為 false

  • currency:三個字母的貨幣代碼。例如 USD 代表美元。
<ChargeCurrency> Optional enum 使用者支付預訂費用的時間和位置。這個元素可用於飯店價格的 <Result> 元素交易訊息,或客房套裝組合的 <PackageData> 區塊。

以下為有效值:

  • web:使用者會在預訂時在線上收費。這是預設值。實際到達網頁是由到達網頁檔案定義,而且可能會受到使用者的幣別、所在地區、語言或其他因素影響。
  • hotel:在飯店入住時向使用者收費。如果一律以飯店的貨幣付款,請將 <ChargeCurrency> 的值設為 hotel。實際到達網頁不會受使用者的幣別影響。
  • deposit:系統會立即向使用者收取部分部分費用,其餘部分則會在稍後的時間點收費,通常是使用者離開飯店時。
  • installments:系統會向使用者收取總應付金額的初始比例,預計在固定的時間內定期支付固定餘額。

預設值為 web

<Checkin> Required Date 行程的入住日期,使用日期格式。<Nights> 元素和 <Checkin> 元素的組合構成行程。
<Custom[1‑5]> Optional string 定義自訂欄位,可用來傳送飯店相關的其他資料。您最多可以傳遞五個使用以下元素名稱的自訂值:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

<Custom> 元素可讓您傳遞任意資料。舉例來說,您可以在這個欄位中指定值,到達網頁檔案隨後會使用這個值建構到達網頁的自訂網址。每個自訂欄位的長度上限為 200 個半形字元。詳情請參閱到達網頁檔案

<Rate> 元素中提供的 <Custom> 元素不會沿用至 <RoomBundle> 元素。您必須在每個 <RoomBundle> 中個別定義 <Custom> 屬性。

<ExpirationTime> Optional DateTime 價格到期的日期和時間 (至少 3 小時)。

如果到期時間戳記對定價結構來說無關緊要,建議您不要提供。

Google 不提供任何到期的價格。如果行程的價格已過期,將使用即時價格查詢功能。

<Nights> Required integer 行程的住宿夜數。<Nights> 元素的值必須是正整數。<Nights><Checkin> 的組合構成行程。
<OtherFees> Optional float 基本費率和會影響客房最終價格的稅金以外的費用。<OtherFees> 元素會使用單一必要屬性 currency,定義費用的三字母貨幣代碼。例如:USD

如果 <Baserate> 大於零,就必須提供 <OtherFees> 元素。

<Occupancy> Optional integer 指定可住人數的數量上限。<Occupancy>隸屬於 <Result> 時,必須指定 2 以上。<Occupancy> 可能會與 <OccupancyDetails> 一併提供,這是指定房客 (成人或兒童) 的類型。如需子項元素的語法和說明,請參閱 <OccupancyDetails>。如未提供 <Occupancy> 元素,可住人數預設為 2

注意:請聯絡支援團隊,啟用這項功能即可傳送非雙人入住價格。

<PackageID> Optional string 套件的專屬 ID,用來對應至預先定義的套件資料。這也用於填入 PACKAGE-ID 到達網頁變數。詳情請參閱 Room 套裝組合中繼資料
<Property> Required string 受相關資料 (價格、行程、房型套裝組合或中繼資料) 影響的飯店 ID。這個元素的值必須是字串。這個元素的值必須與您在飯店清單動態饋給中定義的房源 <id> 相符。
<Rates> Optional <Rates> 一或多個 <Rate> 區塊的容器。<Rates> 中每項 <Rate> 都會定義不同房型/行程組合的價格。

只有在同一個房間/行程組合有多個費率時,才使用 <Rates> 元素。舉例來說,您可以定義多種條件式費率不公開費率房型套裝組合中的條件式費率

<Refundable> Optional Object 刊登費率為可全額退款或提供免費取消的費率。如未提供,系統就不會顯示退款相關資訊。<PackageData> 層級的退款政策會覆寫 <Result> 層級的退款政策。<Rates> 層級的退款政策會覆寫 <PackageData> 層級的退款政策。您也可以透過替代選項向使用者顯示可退款的定價,而不必直接修改交易訊息結構定義。如要進一步瞭解這些選項,請參閱這篇文章

以下範例顯示 <Refundable> 元素及其所有屬性設定:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注意:建議您設定所有屬性。如果您未設定一或多項屬性,系統就會產生動態饋給狀態警告訊息。

如未設定任何屬性,費率就不會顯示為可退款。屬性包括:

  • available:(必要) 設為 1 (或 true) 表示費率是否允許全額退款,否則請設為 0 (或 false)。
  • refundable_until_days:(如果 availabletrue,則為必要欄位) 指定在入住前可申請全額退款所需的天數。refundable_until_days 的值必須是介於 0 至 330 (含首尾) 之間的整數。
  • refundable_until_time:(如果 availabletrue,則強烈建議使用) 指定最晚可在飯店當地時間處理的最晚退款要求。這項條件可與 refundable_until_days 結合以指定,例如:「退款期限至入住前兩天下午 4 點」。如未設定 refundable_until_time,則值會預設為午夜。

    此屬性的值使用 Time 格式。

設定屬性時,請注意下列事項:

  • 如未設定 availablerefundable_until_days,費率就不會顯示為可退款。
  • 如果 available0 (或 false),系統會忽略其他屬性。即便設定了其他或兩項屬性,費率還是無法顯示為可退款。
<RoomBundle> Optional <RoomBundle> 一個容器,內含房間的實體說明、任何設施包裝,以及特定飯店和行程的部分購買政策詳情。

一般而言,使用這個元素定義基本房型的價格,以及同一資源中不同類型的客房。雖然您可以以內嵌方式定義 Room 套裝組合說明,但建議您使用獨立的交易訊息來定義這項資訊。Google 會儲存中繼資料,方便您在日後更新價格資訊時參考,而不必重複提交。

<RoomID> Optional string 房間的專屬 ID,用來對應至預先定義的客房資料。用來填入 PARTNER-ROOM-ID 到達網頁變數。詳情請參閱 Room 套裝組合中繼資料
<Tax> Optional float 為房間最終價格計算的稅金。 <Tax> 元素會採用一個必要屬性 currency,該屬性定義了稅金的三字母貨幣代碼。例如:USD。如果 <Baserate> 大於零,就必須提供 <Tax> 元素。
<Unavailable> Optional Object 表示行程無法預訂。可做為容器,進一步瞭解無法提供行程資訊的原因。下列一或多項無法使用原因可能會以巢狀結構的形式顯示在 <Unavailable> 標記下方:
  • <NoVacancy/>:沒有其他可銷售的住宿一晚。
  • <MinNightStay value=N/>:行程低於住宿日期的住宿天數下限 (N)。
  • <MaxNightStay value=N/>:行程超過住宿日期的夜間最長入住天數 (N)。
  • <MinAdvancePurchase value=N/>:行程低於住宿日期的提前預訂期 (N)。
  • <MaxAdvancePurchase value=N/>:行程超過住宿日期的提前預訂期上限 (N)。
  • <ClosedToArrival/>:屬性不允許在行程抵達日期入住。
  • <ClosedToDeparture/>:屬性不允許在行程的出發日期中進行退房。
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>:房源因部分或所有住宿期間關閉。建議屬性 first_openfirst_closed 會分別指定大於或等於住宿日期的最早日期。如果屬性在抵達日期之後關閉,first_open 應等於抵達日期,而 first_closed 應為屬性關閉的日期。如果屬性在抵達日期關閉,first_closed 應等於抵達日期,first_opened 應是房源的下一個營業日期。
  • <NotFetched/>:行程價格未由下游資料來源提供。
  • <InvalidProperty/>:無法識別要求的屬性 ID。
  • <InvalidOccupancy/>:資源不支援要求可住人數。
  • <PriceIssue/>:價格問題,導致系統無法傳送價格。
  • <InternalError reason=""/>:發生某些未列舉錯誤。選填的原因屬性可以將錯誤回報為文字。
  • <OtherRestriction restriction=""/>:由於某些未列舉的預訂限制,因此無法提供行程資訊。您也可選擇使用的限制屬性,將限制回報為文字。

範例

多資源範例

以下範例定義了兩種行程的一項行程及其定價:

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

這個範例不會顯示客房的詳細資料,例如說明、圖片和說明文字、會議室名稱和可容納人數。

您可以在 Google 儲存的單獨交易訊息中定義這項資訊「一次」。之後,您就可以在所有價格和商品目錄更新中參照這項屬性。詳情請參閱 Room 套裝組合中繼資料

多重費率範例

以下範例定義了單一行程和屬性,為不同入住人數提供多種費率。<Rates> 元素可用來為特定房源提供多重費率價格。以下範例也適用於度假民宿 (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>

無法使用的範例

以下範例定義了某個行程無法從下游管道擷取空房資訊,第二筆的住宿天數低於指定日期的最短入住天數,另一個則在住宿抵達日期關閉,但在住宿期間開啟的第三個行程:

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

一或多個 <Rate> 區塊的容器。<Rates> 中每項 <Rate> 都會定義不同房型/行程組合的價格。

只有在同一個房間/行程組合有多個費率時,才使用 <Rates> 元素。例如,您可以定義多個條件式費率不公開費率Room Bundle 中的條件式費率的費率。

<Rates> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>           (Can also contain <Rates>)
        + ...

<Rate> 中設定的值會覆寫父項 <Result><RoomBundle> 元素的價格相關值。如果未在 <Rate> 中設定,則會沿用父項元素的值。只有 <AllowablePointsofSale> 才會沿用 <RoomBundle> 元素。

語法

<Rates> 元素使用下列語法:

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

屬性

<Rates> 元素的屬性如下:

屬性 必填與否 說明
rate_rule_id Optional 針對條件式費率,這個 ID 與費率規範定義檔案中的定義相符。這個欄位的字元限制為 40 個字元。

子元素

<Rates> 元素包含下列子元素:

子元素 必填與否 類型 說明
<AllowablePointsOfSale> Optional Object 一或多個符合飯店使用資格的到達網頁。這個元素使用的語法與 <Result> 中的 <AllowablePointsOfSale> 相同。
<Baserate> Required float 住宿房價。這個元素使用的語法與 <Result> 中的 <Baserate> 相同。

注意:您無法將 <Rate> 底下的 <Baserate> 子元素定義為無法使用。

<ChargeCurrency> Optional enum 使用者支付預訂費用的時間和位置。這個元素使用的語法與 <Result> 中的 <ChargeCurrency> 相同。
<Custom[1‑5]> Optional string 可用於將飯店相關其他資料傳送至到達網頁的自訂欄位。這個元素使用的語法與 <Result> 中的 <Custom[1‑5]> 相同。每個自訂欄位的長度上限為 200 個半形字元。詳情請參閱到達網頁檔案

如果 <Result> 元素中提供 <Custom> 元素,這些元素不會繼承至 <RoomBundle> 元素,而且必須為每個 <RoomBundle> 個別定義,或是視需要納入 <PackageData>。

<ExpirationTime> Optional DateTime 判定費率到期的日期和時間。這個元素使用的語法與 <Result> 中的 <ExpirationTime> 相同。
<Occupancy> Optional integer

指定可住人數的數量上限。<Occupancy> 可搭配指定訪客類型 (成人或兒童) 的 <OccupancyDetails>。如需子項元素的語法和說明,請參閱 <OccupancyDetails>

<OtherFees> Required float 與基本房價和稅金影響訂房的最終價格以外的費用。這個元素使用的語法與 <Result> 中的 <OtherFees> 相同。
<Refundable> Optional Object 刊登費率為可全額退款或提供免費取消的費率。如未提供,系統就不會顯示退款相關資訊。<PackageData> 層級的退款政策會覆寫 <Result> 層級的退款政策。<Rates> 層級的退款政策會覆寫 <PackageData> 層級的退款政策。您也可以透過替代選項向使用者顯示可退款的定價,而不必直接修改交易訊息結構定義。如要進一步瞭解這些選項,請參閱這篇文章

以下範例顯示 <Refundable> 元素及其所有屬性設定:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注意:建議您設定所有屬性。如果您未設定一或多項屬性,系統就會產生動態饋給狀態警告訊息。

如未設定任何屬性,費率就不會顯示為可退款。屬性包括:

  • available:(必要) 設為 1 (或 true) 表示費率是否允許全額退款,否則請設為 0 (或 false)。
  • refundable_until_days:(如果 availabletrue,則為必要欄位) 指定在入住前可申請全額退款所需的天數。refundable_until_days 的值必須是介於 0 至 330 (含首尾) 之間的整數。
  • refundable_until_time:(如果 availabletrue,則強烈建議使用) 指定最晚可在飯店當地時間處理的最晚退款要求。這項條件可與 refundable_until_days 結合以指定,例如:「退款期限至入住前兩天下午 4 點」。如未設定 refundable_until_time,則值會預設為午夜。

    此屬性的值使用 Time 格式。

設定屬性時,請注意下列事項:

  • 如未設定 availablerefundable_until_days,費率就不會顯示為可退款。
  • 如果 available0 (或 false),系統會忽略其他屬性。即便設定了其他或兩項屬性,費率還是無法顯示為可退款。
<Tax> Required float 為房間最終價格計算的稅金。這個元素使用的語法與 <Result> 中的 <Tax> 相同。

範例

基本費率和條件式費率

以下範例會顯示包含基本費率和條件式費率的交易訊息:

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

多種條件式費率

以下範例定義了 <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>

<Transaction> 訊息中,將 Room Bundle 的定價和供應情形定義為 <Result> 的子項。為每個套件/行程組合定義獨立的元素。如要定義 Room Bundle 的套件和條款,請使用 <RoomData>

<RoomBundle> 元素會顯示在交易訊息 XML 階層中的下列位置:

+ <Transaction>
    + <PropertyDataSet>  // Room and package metadata
        + <Property>
        + <RoomData>
        + <PackageData>
    + <Result>           // Pricing and availability
        + <Rates>
        + <RoomBundle>
        + ...

詳情請參閱使用 Room Bundle

語法

<RoomBundle> 元素使用下列語法:

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

屬性

<RoomBundle> 元素沒有屬性。

子元素

<RoomBundle> 元素包含下列子元素:

子元素 必填與否 類型 說明
<Baserate> Required float 定義住宿房型套裝組合價格。這個元素使用的語法與 <Result> 中的 <Baserate> 相同,但以下例外狀況如下:
  • 當行程無法預訂的房間時,請移除 <RoomBundle> 元素,表示該房間已不在庫存中。詳情請參閱「移除房型套裝組合」。
<BreakfastIncluded> Optional boolean 指定這個房型套裝組合是否包含含房價的早餐。
<ChargeCurrency> Optional enum 使用者支付預訂費用的時間和位置。這個元素使用的語法與 <Result> 中的 <ChargeCurrency> 相同。

預設值為 web

<Custom[1‑5]> Optional string 用於將額外資料傳送至 Room Bundle 到達網頁的自訂欄位。這些元素使用的語法與 <Result> 中的 <Custom[1-5]> 相同。每個自訂欄位的長度上限為 200 個半形字元。詳情請參閱到達網頁檔案

如果 <Result> 元素中提供 <Custom> 元素,這些元素不會繼承至 <RoomBundle> 元素,而且必須為每個 <RoomBundle> 個別定義,或是視需要納入 <PackageData>。

<InternetIncluded> Optional boolean 如果 Room Bundle 提供免費網際網路連線,其他套裝組合中則不含該設施。在為所有客房提供免費網際網路的飯店中,請勿為 Room Bundle 設定這項元素。這項元素不適用於客房內無法使用的房內有線網際網路或無線網際網路。
<Occupancy> Required integer 客房套裝組合提供的房客人數上限。舉例來說,某間大型套房可容納 6 人入住,但「Honeymoon 套裝方案」僅適用於 2 位房客。

這個值必須小於或等於 <Capacity>,也就是客房可實際容納的人數。

在到達網頁網址中定義可住人數時,請按照「使用變數和條件」一節所述的方式使用 NUM-ADULTSNUM-CHILDREN 變數。預設值為 2 位成人和 0 位兒童。

<Occupancy> 的值必須是介於 1 至 99 (含首尾) 之間的正整數。

注意

  • 強烈建議您將 <RoomBundle><Occupancy> 標記為必要,如果省略,將擲回 1097 錯誤。
  • <Occupancy> 來自下列順序的資料物件:<RoomBundle><PackageData><RoomData>。如果上述任何一項都不含值,則預設值為 2。
  • <Occupancy> 可搭配指定訪客類型 (成人或兒童) 的 <OccupancyDetails>。如需子項元素的語法和說明,請參閱 <OccupancyDetails>
  • 如果您在 <RoomBundle><PackageData> 中都設定 <Occupancy>,系統會優先採用 <RoomBundle> 中的值。
<OtherFees> Required float 基本費率和會影響客房最終價格的稅金以外的費用。<OtherFees> 元素會使用單一必要屬性 currency,定義費用的三字母貨幣代碼。例如使用 USD 代表美元。
<PackageID> Optional (recommended) string 套件資料的專屬 ID。請使用這個 ID,將 Room Bundle 資料與 <PackageData> 中傳送的內容進行比對。詳情請參閱 Room 套裝組合中繼資料。(在以內嵌方式定義 Room Bundle 資料時,您也可以使用這個 ID 參照單一交易訊息中使用的一般 Room 套裝組合定義。)
<ParkingIncluded> Optional boolean 客房套裝組合是否包含免費停車位,這間飯店的停車場屬於付費服務。請勿為提供免費停車位的飯店指定這項元素的值。

有效值為 0 (或 false) 和 1 (或 true)。預設值為 false

<RatePlanID> Optional string 房價方案 ID 代表房型和套裝行程組合的專屬 ID。舉例來說,假設 <RoomID> 值為 5,而 <PackageID> 值為 ABC,那麼您可以在 <RatePlanID> 中使用 5-ABC 的值。強烈建議您使用 RatePlanID 做為變數,建立動態到達網頁 (舊稱銷售點) 網址。

詳情請參閱「使用變數和條件」一文。

<Rates> Optional <Rates> 覆寫這個房型套裝組合的預設值的費率。這個元素使用的語法與 <Result> 中的 <Rates> 相同。
<Refundable> Optional Object 刊登費率為可全額退款或提供免費取消的費率。如未提供,系統就不會顯示退款相關資訊。<PackageData> 層級的退款政策會覆寫 <Result> 層級的退款政策。<Rates> 層級的退款政策會覆寫 <PackageData> 層級的退款政策。您也可以透過替代選項向使用者顯示可退款的定價,而不必直接修改交易訊息結構定義。如要進一步瞭解這些選項,請參閱這篇文章

以下範例顯示 <Refundable> 元素及其所有屬性設定:

<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>

注意:建議您設定所有屬性。如果您未設定一或多項屬性,系統就會產生動態饋給狀態警告訊息。

如未設定任何屬性,費率就不會顯示為可退款。屬性包括:

  • available:(必要) 設為 1 (或 true) 表示費率是否允許全額退款,否則請設為 0 (或 false)。
  • refundable_until_days:(如果 availabletrue,則為必要欄位) 指定在入住前可申請全額退款所需的天數。refundable_until_days 的值必須是介於 0 至 330 (含首尾) 之間的整數。
  • refundable_until_time:(如果 availabletrue,則強烈建議使用) 指定最晚可在飯店當地時間處理的最晚退款要求。這項條件可與 refundable_until_days 結合以指定,例如:「退款期限至入住前兩天下午 4 點」。如未設定 refundable_until_time,則值會預設為午夜。

    此屬性的值使用 Time 格式。

設定屬性時,請注意下列事項:

  • 如未設定 availablerefundable_until_days,費率就不會顯示為可退款。
  • 如果 available0 (或 false),系統會忽略其他屬性。即便設定了其他或兩項屬性,費率還是無法顯示為可退款。
<RoomID> Required string 客房資料的專屬 ID。請使用這個 ID,來比對 Room Bundle 資料和您在 <RoomData> 中傳送的內容。詳情請參閱 Room 套裝組合中繼資料。 (您也可以在以內嵌方式定義會議室資料時,使用這個 ID 在單一交易訊息中參照常見的會議室定義。)
<Tax> Required float 為房間最終價格計算的稅金。 <Tax> 元素會採用一個必要屬性 currency,該屬性定義了稅金的三字母貨幣代碼。舉例來說,使用 USD 代表美元。

範例

單人房套裝組合

以下範例定義了含有單一可住人數套裝組合的回應。當使用者在入住人數挑選器中選取 1 時,無論可住人數為何,Google 都會顯示符合條件的最低價格。

如果無法為單一入住人數設定價格,Google 會顯示最低的雙人入住價格。請注意,如果系統針對行程快取雙人房或更多價格,系統不會即時查詢單人入住價格。

這個範例會透過 <RoomID><PackageID> 元素參照預先定義的會議室和套件中繼資料。使用 <RoomData><PackageData> 元素定義該資訊。

<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->

<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note:  Once defined it does not have to be repeated for future
              Transaction Messages.
              PropertyDataSets can also be defined and sent in their own
              Transaction Message separately from pricing. Google can be
              configured to pull just PropertyDataSets once per day
              (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate up to 4, but package data specifies occupancy
           between 1 to 4 -->
      <Capacity>4</Capacity>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <Capacity>4</Capacity>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P11111</PackageID>
      <Occupancy>1</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <!-- Single occupancy pricing will be specified in a room bundle below -->
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>
    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P11111</PackageID>
      <!-- Price for 1 ("occupancy") is the lowest price and will be
           displayed -->
      <Baserate currency="USD">174.99</Baserate>
      <Tax currency="USD">22.08</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <RatePlanID>060773-P11111</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
           occupancy will be displayed-->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>436233-P12345</RatePlanID>
    </RoomBundle>
    <!-- ..Continue providing all available RoomBundle rates under matched
         property for 1 or more occupancies..-->
  </Result>
</Transaction>


2 人以上

以下範例定義包含兩個以上乘客的回應。

這個範例會透過 <RoomID><PackageID> 元素參照預先定義的會議室和套件中繼資料。使用 <RoomData><PackageData> 元素定義該資訊。

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


多間房型套裝組合

以下範例會設定多個房型套裝組合中的可住人數,以示範可能的青年旅館客房價格。

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

多重條件式費率

以下範例定義了 <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> 指定會議室或包裹的房客人數上限。<OccupancyDetails> 可包含房客人數和類型 (成人或兒童) 等額外資訊。

<Occupancy><OccupancyDetails> 出現在 <Result><RoomBundle><Rates> 元素中時,表示頻率受到可住人數詳細資料的限制。

語法

<OccupancyDetails> 出現時,一律在 <Occupancy> 之前。請注意以下語法:

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

子元素

<OccupancyDetails> 元素包含下列子元素:

子元素 必填與否 類型 說明
<NumAdults> Required integer 成人房客人數。最小值:1,最大值:20。
<Children> Optional Object 一或多個 <Child> 元素的容器。
<Child age> Optional integer 這個孩童的年齡上限,例如 <Child age="17">

範例

以下範例說明 <OccupancyDetails> 可能會如何顯示在 <Results><RoomBundle><Rates> 子元素中。

結果回應

以下範例為回應即時價格查詢,定義了一項行程及其定價,回應使用者指定了房客數量和類型。這裡的 <OccupancyDetails> (2 位成人和一個子項) 會在 <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>

為回覆評分

以下範例定義了 1 位成人和 1 位兒童的行程及其價格。這裡,<OccupancyDetails> 會在 <Result><Rates> 元素中傳回。

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

房型套裝組合

以下範例定義了 2 位成人和 1 位兒童共入住兩晚的入住人數,並以可退款費率計算。這裡的 <OccupancyDetails> 會顯示在 <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>

多間房型套裝組合

以下範例定義了一組僅限 2 位成人和 2 位兒童入住的 <RoomBundle> 費率。這裡,<OccupancyDetails> 會顯示在 <RoomBundle><Rates> 元素中。

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