定價與費率;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>

會議室行程的定價資料,或是定義 Room 套裝組合和房源類型會議室的 <RoomBundle> 元素價格。<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>
        + ...

詳情請參閱會議室套件中繼資料

語法

<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 Bundle 中繼資料

<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 Bundle 中繼資料

<RoomData>

定義與行程相關的客房中繼資料,並依擴充功能定義 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 在搜尋結果中顯示該會議室或包裹時,則會包含兩者的說明,並以連字號分隔。

詳情請參閱會議室套件中繼資料

語法

<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 相片的網址和說明文字 (選填)。您可以為會議室或 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 Bundle 中繼資料。(在以內嵌方式定義會議室資料時,您也可以在單一交易訊息中,使用這個 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 和套件中繼資料

以下範例定義了 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 Bundle 的 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> (選用):指定床鋪寬度。屬性的 unit 必須含有值 cm,而 number 屬性的寬度 (以整數公分) 為單位。
  • <Length> (選用):指定床長。 屬性 unit 必須包含 cm 值,而 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>
      <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>

兩張雙人床

以下是具有兩張 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>
      <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>


日式無床服務

以下是沒有床鋪的日式風格客房範例。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>

日式西部附床

以下是具有 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>
      <RoomID>RoomID_1</RoomID>
      <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>
      <RoomID>RoomID_1</RoomID>
      <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>,提供客房套裝組合和費率功能的詳細資料。如果是不屬於套件的個別客房,請使用 <RoomData>

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

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

詳情請參閱會議室套件中繼資料

語法

<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>,其中包含 textlanguage 這兩個必要屬性。text 屬性是說明,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 Bundles 設定此元素。這個元素不適用於客房內插式網際網路或客房未提供的無線網際網路。有效值為 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 Bundle 中繼資料

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

<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:00 至入住前」。如未設定 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 Bundle 的 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>
      <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>

早餐

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

<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 套裝組合,請按照「移除 Room 套裝組合」一文的說明操作。

<Baserate> 不得含有任何數字分組符號,例如半形逗號 (,) 或半形句號 (.)。請務必在小數點上以半形句號 (.) 分隔分數。舉例來說,假設 $1,200.40 美元為:

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

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

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

    一般而言,其他使用者應在基本費率中加入稅金與其他費用,並將 all_inclusive 屬性的值設為 true。詳情請參閱稅金與相關費用政策

    預設值為 false

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

以下為有效值:

  • web:使用者訂票時在線上向 收費。此為預設值。實際到達網頁是由 到達網頁檔案定義,會受到使用者的貨幣、位置、語言或其他因素影響。
  • hotel:使用者在飯店入住時支付費用。如果付款必須一律以飯店貨幣付款,請將 <ChargeCurrency> 的值設為 hotel。實際到達網頁不會受到使用者的貨幣影響。
  • deposit:系統會立即向使用者收取部分費用,並於稍後收取剩餘費用,通常是在使用者退房時。
  • installments:系統會向使用者收取應付總額的初始部分,並在固定時間內定期支付一筆固定餘額。

預設值為 web

<Checkin> Required Date 行程的入住日期 (採用 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 受相關資料 (價格、行程、Room Bundle 或中繼資料) 影響的飯店 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:00 至入住前」。如未設定 refundable_until_time,則預設值為午夜。

    此屬性的值採用 Time 格式。

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

  • 如未設定 availablerefundable_until_days,該費率就不會顯示為可退款。
  • 如果 available0 (或 false),系統會忽略其他屬性。即使設定了其中一種其他屬性或兩項屬性,該費率也不會顯示為可退款。
<RoomBundle> Optional <RoomBundle> 這個容器提供客房的定價實體說明、任何設施包裝,以及特定飯店和行程的部分購買政策詳細資料。

一般而言,使用這項元素即可為同一房源提供基本客房和不同類型房型的定價。雖然可以內嵌定義 Room Bundle 說明,但您應使用獨立的交易訊息來定義該資訊。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 儲存的個別交易訊息「一次」定義該資訊。之後,您可以在所有後續的定價和商品目錄更新中參照這個 ID。詳情請參閱 Room Bundle 中繼資料

多重費率範例

以下範例定義了針對不同可住人數採用多種費率的單一行程和資源屬性。<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> 元素。舉例來說,您可以為條件式費率不公開費率房型套裝組合中的條件式費率定義多種費率。

<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:00 至入住前」。如未設定 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> 元素,表示該會議室已不在商品目錄中。詳情請參閱「 移除 Room 套件」。
<BreakfastIncluded> Optional boolean 指定這個房型套裝組合是否包含含房價的早餐。
<ChargeCurrency> Optional enum 使用者支付預訂費用的時間和地點。這個元素使用的語法與 <Result> 中的 <ChargeCurrency> 相同。

預設值為 web

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

如果 <Result> 元素提供 <Custom> 元素,系統就不會在 <RoomBundle> 元素中繼承這些元素,因此請分別為每個 <RoomBundle> 定義,或是視需要在 <PackageData> 中加入該元素。

<InternetIncluded> Optional boolean 如果 Room 組合包包含免付費網際網路連線,其他套裝組合中則不包含該設施。如果飯店允許所有客房免費使用網路,請勿為 Room Bundles 設定此元素。這項元素不適用於客房內的有線網際網路或客房無法使用的無線網際網路。
<Occupancy> Required integer 特定 Room 組合方案的房客人數上限。舉例來說,大型套房可能可以實際容納 6 位房客,但「蜜月禮包」僅供 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> 覆寫此 Room Bundle 預設值的費率。這個元素使用的語法與 <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:00 至入住前」。如未設定 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> 元素參照預先定義的 Room 和套件中繼資料。請使用 <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>


兩個以上的可住人數

以下範例定義了包含兩個以上可住人數的回應。

這個範例使用 <RoomID><PackageID> 元素參照預先定義的 Room 和套件中繼資料。請使用 <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 位成人和 1 個子項) 會在 <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>

多間客房套裝組合

以下範例定義了多種 <RoomBundle> 費率,限制為 2 位成人和 2 位兒童入住。在這裡,<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>