Materiały XML dotyczące cen i asortymentu sal (transakcje)

Ta strona zawiera odniesienie do opartych na formacie XML komunikatów o transakcjach.

<Transaction>

Element główny wiadomości dotyczącej transakcji jest <Transaction>. Jest to kontener na opisowe informacje pokoje i pakiety oraz ceny i dostępność pokoi i pakietów.

Element <Transaction> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Wiadomości, których głównym elementem jest <Transaction>, wymagają co najmniej jednego element podrzędny. Wiadomości o transakcjach mogą mieć dowolną liczbę elementów podrzędnych, o ile łączny rozmiar wiadomości nie przekracza 100 MB.

Składnia

Element <Transaction> ma taką składnię:

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

Atrybuty

Element <Transaction> ma te atrybuty:

Atrybut Wymagana? Typ Opis
id Required ciąg znaków Unikalny identyfikator każdej wiadomości dotyczącej transakcji.
partner Optional string Konto partnera, którego dotyczy wiadomość dotycząca transakcji. Ty zwykle należy go używać, jeśli backend dostarcza pliki danych z cenami dla wielu kont partnerów. Ta wartość ciągu znaków to „Klucz partnera” wartość podana na Strona Ustawienia konta w Hotel Center.
timestamp Required DateTime

Moment, w którym wiadomość dotycząca transakcji była wysłano.

Wszystkie wiadomości z sygnaturą czasową w ciągu ostatnich 24 godzin będą przetworzone, a nieusunięte zostaną odrzucone.

Wiadomości są przetwarzane w kolejności timestamp, a nie w języku w kolejności ich otrzymania. Na przykład aktualizacja cen za pomocą atrybutu sygnatura czasowa zdarzenia 2019-05-03 14:09:00 odebrane po wiadomość z sygnaturą czasową 2019-05-03 14:10:00 zostanie muszą zostać przetworzone w określonej kolejności, a cena z wiadomości z zostanie użyta sygnatura czasowa 2019-05-03 14:10:00.

Elementy potomne

Element <Transaction> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<PropertyDataSet> Optional* <PropertyDataSet>

Opisuje konkretny pokój i pakiety pokojów. Zwykle używasz tego w osobnym komunikacie transakcji, aby zdefiniować wspólne wartości dla grupy pokoi i zmniejszyć rozmiar wiadomości dotyczących transakcji;

<Result> Optional* <Result>

Dane dotyczące cen w planie podróży pokoju lub Element <RoomBundle> definiujący pakiety pokojów dodatkowe typy pomieszczeń w danym miejscu. <Result> elementu można również wykorzystać do usunięcia i plany podróży z poziomu zasobów reklamowych.

* Co najmniej 1 wartość <PropertyDataSet> lub <Result> jest wymagane.

Przykłady

Dane o pokojach

Ten przykład definiuje dane pokoju w wiadomości transakcji:

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

Dane dotyczące cen

Ten przykład definiuje dane o cenach w komunikacie transakcji:

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

Ceny za noc

W przykładzie poniżej podano dane o cenach dla 1–7 noclegów od 7 czerwca 2023 r.

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


Podstawa i ceny warunkowe

Poniższy przykład pokazuje wiadomość Transakcja, która zawiera podstawę cenę i cenę warunkową:

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

Usuń asortyment

Ten przykład pokazuje usunięcie kilku rodzajów zasobów reklamowych (pobyt 1 noclegu przez kilka różnych dat) dla danego hotelu w asortymencie:

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

kontener na informacje o pomieszczeniu i pakiecie (lub pakiecie pomieszczeń) w <Transaction> wiadomość. Wartości ustawione na poziomie partnera zastępują wartości hoteli. Google przechowuje te informacje, dzięki czemu nie musisz ich określać za każdym razem wysyłasz aktualizacje cen.

Element <PropertyDataSet> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Więcej informacji znajdziesz w artykule Metadane pakietu sal.

Składnia

Element <PropertyDataSet> ma taką składnię:

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

Atrybuty

Element <PropertyDataSet> nie ma atrybutów.

Elementy potomne

Element <PropertyDataSet> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<PackageData> Optional* <PackageData> Opisuje zestaw pokojów. Te dane są powiązane z partnerem, czy w ramach planu podróży. Ten element jest podobny do <RoomData>, ale opisuje udogodnienia i warunki, które nie są częścią tej usługi od opisu fizycznego pomieszczeń.

Identyfikator pakietu odnosi się do aktualizacji cen.

Więcej informacji: Metadane pakietu sal.

<Property> Required string Identyfikator hotelu, którego dotyczą powiązane dane. wartość tego elementu musi być ciągiem znaków pasującym do opisu <id> w pliku danych z listą hoteli.
<RoomData> Optional* <RoomData> Opisuje pomieszczenie. Te dane są powiązane z partnerem i hotelem, ale nie w ramach planu podróży.

Identyfikator pokoju podany jest w aktualizacjach cen.

* Co najmniej 1 wartość <PackageData> lub <RoomData> jest wymagane.

Przykłady

Dane dotyczące pomieszczeń i pakietów

Poniższy przykład pokazuje dane pokoju i pakietu w <PropertyDataSet>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>180054</Property>
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Bed Room" language="en"/>
        <Text text="Chambre single" language="fr"/>
      </Name>
      <Description>
        <Text text="Non-smoking" language="en"/>
        <Text text="Pas de fumiers" language="fr"/>
      </Description>
      <PhotoURL>
        <Caption>
          <Text text="Living area" language="en"/>
          <Text text="Le chambre" language="fr"/>
        </Caption>
        <URL>http://www.foo.com/static/bar/image1234.jpg</URL>
      </PhotoURL>
    </RoomData>
    <PackageData>
      <PackageID>P54321</PackageID>
      <Name>
        <Text text="Breakfast Included" language="en"/>
        <Text text="Avec le petit déjeuner" language="fr"/>
      </Name>
      <Description>
        <Text text="Includes a delightful array of jams and jellies." language="en"/>
        <Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
      </Description>
      <BreakfastIncluded>1</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>
</Transaction>

Wysyłając informacje o cenach i dostępności tego pokoju i pakietu pokojów, odwołują się do identyfikatorów pokoju i pakietu w informacjach o cenach. Wynik to można znacznie zmniejszyć rozmiar wiadomości i liczbę błędów, jakie możesz napotkać w wyniku powielonych danych. Więcej informacje znajdziesz w artykule Metadane pakietu sal.

<RoomData>

Definiuje niezależne od planu podróży metadane dotyczące pokojów i, co za tym idzie, także informację o sali. Pakiety (pakiety pokoi to pokoje z dodatkowymi udogodnieniami). Używaj <RoomData>, aby ograniczyć powtarzanie danych opisowych w atrybucie cena Kanał.

Element <RoomData> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Elementy <RoomData> zawierają informacje powiązane z atrybutem partnera i hotelu, ale nie w ramach planu podróży. przeznaczonym dla wszystkich użytkowników danych nieplanowanych.

Element <RoomData> jest podobny do elementu <PackageData>, ale opisuje z fizycznego pokoju, a nie z udogodnień i warunków związanych z pakietem. Używasz <RoomData> i <PackageData> w połączeniu, aby wyświetlić szczegółowe informacje o Pakiety pokojów. W przypadku pokoi, które nie są częścią pakietu, użyj parametru <RoomData>

Zarówno elementy <RoomData>, jak i <PackageData> można zdefiniować dla tego samego pokoju lub pakietu pokoi. Gdy Google wyświetli pokój lub pakiet w będzie zawierać opisy z obu tych adresów, rozdzielone znakiem łącznik.

Więcej informacji znajdziesz w artykule Metadane pakietu sal.

Składnia

Element <RoomData> ma taką składnię:

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

Atrybuty

Element <RoomData> nie ma atrybutów.

Elementy potomne

Element <RoomData> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<Capacity> Optional integer Maksymalna liczba gości, jaką może pomieścić sala w domu. Rozmiar sali nie może być mniejszy niż liczba osób.

Jeśli została określona, ta wartość musi być równa wartości lub większa elementu <Occupancy>, który ma zamierzone liczbę gości w konkretnej sali. Na przykład do dużego mieszkania <Capacity> może mieć wartość 6, ale <Occupancy> dla tej wartości wynosi 4.

Wartość <Capacity> musi być dodatnią liczbą całkowitą od 1 do 20 włącznie.

<Description> Optional Object Szczegółowy opis pokoju. Ten element powinien zawierają informacje nieopisane przez inne elementy ani <Name> element. Nie używaj wielkich liter liter przy określaniu opisu pokoju.

Element <Description> przyjmuje pojedynczy element podrzędny element <Text>, który ma następujące dwa atrybuty wymagane:

  • text: szczegółowy opis pokoju.
  • language: dwuliterowy kod języka; np. fr

Użyj osobnego elementu <Text> w każdym języku w których może się pojawić reklama lub bezpłatny link do rezerwacji (z różnymi wartościami atrybutu language).

Ten przykład przedstawia francuską i angielską wersję pokoju opis:

<Description>
  <Text text="Two queen-sized beds" language="en"/>
  <Text text="Deux lits de la reine" language="fr"/>
</Description>
<Name> Required string Nazwa kategorii pokoju. Ta wartość powinna odpowiadać wartości widoczna na stronie docelowej hotelu (dawniej punkt sprzedaży). Nie ustawiaj wartość tego elementu na wielkie litery.

Ten element przyjmuje pojedynczy element podrzędny, <Text>, który ma 2 wymagane atrybuty:

  • text: nazwa pokoju.
  • language: dwuliterowy kod języka; np. fr

Użyj osobnego elementu <Text> w każdym języku w których może się pojawić reklama lub bezpłatny link do rezerwacji (z innymi wartości atrybutów language).

Ten przykład przedstawia francuską i angielską wersję pokoju nazwa:

<Name>
  <Text text="Standard Double Room" language="en"/>
  <Text text="Le chambre double" language="fr"/>
</Name>
<Occupancy> Optional integer Maksymalna liczba gości, dla których przeznaczony jest pokój. Na przykład duży apartament może pomieścić 6 osób. gości (liczba miejsc = 6), ale jest przeznaczona tylko dla maksymalnie 4 osób.

Ta wartość nie może być większa niż Element <Capacity>, który jest liczbą osób które można fizycznie pomieścić w sali.

Wartość <Occupancy> musi być dodatnia jest liczbą całkowitą z zakresu od 1 do 99 włącznie.

<Occupancy> może towarzyszyć Ci: <OccupancyDetails>, która określa typ gości (dorośli lub dzieci). Informacje o składni znajdziesz tutaj: <OccupancyDetails> i opisie elementów podrzędnych.

<OccupancySettings> Optional Object Ustawienia, które mogą ograniczać lub modyfikować wymagania dotyczące liczby osób w pokoju.

Element <OccupancySettings> przyjmuje parametry tych elementów podrzędnych:

  • <MinOccupancy>: minimalna liczba gości które mogą pozostać w pomieszczeniu. Na przykład: 2, tej sali nie można zarezerwować dla 1 gościa.

    Wartość <MinOccupancy> musi być dodatnia jest liczbą całkowitą z zakresu od 1 do 99 włącznie.

  • <MinAge>: minimalny wiek wszystkich gości przesiadywanie w pomieszczeniu. Jeśli na przykład ustawisz wartość 18, ten pokój można zarezerwować tylko dla grup, w których wszyscy goście mają ukończone 18 lat lub starszy.

    Wartość <MinAge> musi być dodatnią liczbą całkowitą od 0 do 99 włącznie.

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

Nie trzeba uwzględniać wszystkich elementów podrzędnych.

<PhotoURL> Optional Object adres URL i opcjonalny podpis zdjęcia danego pokoju, Zestaw pokojów. Możesz określić więcej niż jeden <PhotoURL> dla pokoju lub pakietu pokojów. Każdy adres URL zdjęcia musi być oddzielnym adresem URL. <PhotoURL>

Ten element przyjmuje te elementy podrzędne:

  • <URL>: określa lokalizację zdjęcia. lokalizacja powinna być publiczna (nie za zaporą sieciową) i powinna zawierać protokół (np. https://). Użyj tylko jednego <URL> na <PhotoURL>.
  • <Caption>: definiuje podpis zdjęcia. Ten element przyjmuje pojedynczy element podrzędny, <Text>, który ma 2 wymagane atrybuty: text oraz language Atrybut text to podpis, a atrybut language określa dwuliterowy kodu językowego, takiego jak en.

Przykład:

<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> Zawiera informacje o funkcjach pokoju.
<RoomID> Required string Unikalny identyfikator pokoju. Użyj tego identyfikatora, aby dopasować dane sali z blokadami <Result> w aktualizacjach cen. Dla: więcej informacji znajdziesz w artykule Metadane pakietu sal. (Ty mogą też użyć tego identyfikatora, aby odwołać się do definicji pokoju wspólnego komunikat o transakcji podczas definiowania wbudowanych danych o pokojach).

Przykłady

Dane o pokojach

Ten przykład definiuje dane pokoju:

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

Sala metadane pakietu

Ten przykład określa metadane pokoju i pakietu:

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

Pakiety pokojów

Poniższy przykład definiuje metadane pokoju i pakietu dla wielu sal Pakiety:

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

Określa elementy znalezione w pokoju.

Element <RoomFeatures> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Składnia

Element <RoomFeatures> ma taką składnię:

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

Atrybuty

Element <RoomFeatures> nie ma atrybutów.

Elementy potomne

Element <RoomFeatures> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<JapaneseHotelRoomStyle> Optional enum

Wskazuje styl japońskiego pokoju hotelowego.

Prawidłowe wartości to:

  • western: pokój w stylu zachodnim z łóżkami.
  • japanese: pokój w stylu japońskim z łóżkiem futonowym.
  • japanese_western: pokój w stylu japońskim zarówno łóżkami w stylu zachodnim, jak i japońskimi.
<Beds> Optional Object Zawiera tyle elementów typu <Bed>, ile jest w sali. Notatka że japońskie futony nie powinny tu być uwzględniane.

Każdy element <Bed> ma te atrybuty:

  • size (opcjonalnie): prawidłowe wartości to single, semi_double, double, queen, i king.
Każdy element <Bed> ma te elementy podrzędne:
  • <Width> (opcjonalny): określa szerokość łóżka. Musi mają atrybut unit o wartości cm i atrybut number o szerokości łóżka w liczbie całkowitej cm.
  • <Length> (opcjonalny): określa długość łóżka. Musi mieć atrybut unit o wartości cm i atrybut number z długością łóżka w centymetrach całkowitych.
Przykład:
<Beds>
  <Bed size="double">
    <Width unit="cm" number="140"/>
    <Length unit="cm" number="195"/>
  </Bed>
  <Bed/> <!-- Size unknown -->
</Beds>
<Suite> Optional empty Podaj ten element, jeśli jest to pokój typu suite.
<Capsule> Optional empty Podaj ten element, jeśli jest to pokój kapsułowy.
<Roomsharing> Optional enum Określa, czy pokój jest współużytkowany z innymi domownikami, np. właścicielami lub innymi osobami gości. Prawidłowe wartości to shared i private.
<Outdoor> Optional empty Podaj ten element, jeśli pokój jest obiektem na świeżym powietrzu, który nie mają stałe ściany, hydraulikę i klimatyzację. Na przykład pokoje hotelowe nie są miejscami noclegowymi na świeżym powietrzu, natomiast pola kempingowe, w których goście przebywają w namiotach Parkingi dla kamperów, do których goście przynoszą kamper, mają zakwaterowanie na świeżym powietrzu.
<MobilityAccessible> Optional empty Stosuj ten element, jeśli pomieszczenie jest dostosowane do potrzeb osób poruszających się.
<Smoking> Optional enum Określa, czy jest to pokój dla niepalących czy dla palących. Prawidłowe wartości to non_smoking i smoking.
<BathAndToilet> Optional Object Zawiera informacje o łazience i toalecie w pokoju.

Ten atrybut to:

  • relation (opcjonalnie): wskazuje sposób działania łazienki i toalety są nakładane na siebie. Prawidłowe wartości to together (łazienka i toaleta znajdują się w tym samym pokoju (np. łazienki) tuż obok siebie) i separate (łazienki i toalety są osobne). Ten atrybut nie może być Jest ustawiana, gdy w pokoju nie ma jednocześnie łazienki i toalety.

Element opcjonalnie przyjmuje te elementy podrzędne:

  • <Bath> (opcjonalnie): istnienie tego elementu. wskazuje, że w pokoju jest wanna.

    Te atrybuty:

    • bathtub (opcjonalnie): wskazuje, że w łaźni jest w łazience. Prawidłowe wartości to 0 (lub false) i 1 (lub true).
    • shower (opcjonalnie): wskazuje, że w łaźni jest pod prysznic. Prawidłowe wartości to 0 (lub false) i 1 (lub true).
  • <Toilet> (opcjonalnie): istnienie tego elementu. wskazuje, że w pokoju jest toaleta.

    Te atrybuty:

    • electronic_bidet (opcjonalny): wskazuje, że parametr toaleta jest wyposażona w elektroniczny bidet. Prawidłowe wartości to 0 (lub false) i 1 (lub true).
    • mobility_accessible (opcjonalny): wskazuje, że parametr toaleta jest przystosowana do potrzeb osób poruszających się. Prawidłowe wartości to 0 (lub false) i 1 (lub true).

Przykład:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath> Optional empty Użyj tego elementu, jeśli pokój ma prywatną łaźnię na świeżym powietrzu.
<AirConditioning> Optional empty Użyj tego elementu, jeśli pokój jest klimatyzowany.
<Balcony> Optional empty Użyj tego elementu, jeśli pokój ma balkon lub werandę.
<Views> Optional Object Możliwe opcje to:

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

Przykłady

JapaneseHotelRoomStyle nie ma wartości domyślnej. Pominięcie nie powoduje błędu XML, ale informacje o firmie nie są wyświetlane w wyniki wyszukiwania, gdy użytkownik filtruje według stylu pokoju lub łóżek.

2 łóżka pojedyncze

Poniższy przykład pokazuje, jak używać atrybutu <RoomFeatures>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomID>RoomID_1</RoomID>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two single beds -->
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
          <Bed size="single">
            <Width unit="cm" number="97"/>
            <Length unit="cm" number="195"/>
          </Bed>
        </Beds>
        <Suite/>
        <Capsule/>
        <Roomsharing>private</Roomsharing>
        <Outdoor/>
        <MobilityAccessible/>
        <Smoking>non_smoking</Smoking>
        <BathAndToilet relation="separate">
          <Bath bathtub="1" shower="1"/>
          <Toilet electronic_bidet="1" mobility_accessible="1"/>
        </BathAndToilet>
        <OpenAirBath/>
        <AirConditioning/>
        <Balcony/>
        <Views>
          <LakeView/>
          <MarinaView/>
          <BeachView/>
          <ForestView/>
          <MountainView/>
          <NatureView/>
        </Views>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

2 łóżka podwójne

Oto przykład pokoju w stylu western w stylu japońskim z 2 elementami double łóżka.

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


Japoński styl bez łóżka

Poniżej znajdziesz przykład pokoju w stylu japońskim bez łóżka. Łóżko informacje nie są wymagane w przypadku pokoju typu 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>

Japoński western z łóżkiem

Oto przykład pomieszczenia w stylu japanese_western z elementem king łóżko.

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

Jeśli partner nie ma informacji o liczbie łóżek w: japanese_western z pokojów, a następnie postępuj zgodnie z tym przykładem:

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

Definiuje niezależne od planu podróży metadane dotyczące pakietów pokojów w obiekcie. Ten element zawiera informacje powiązane z partnerem i hotelem, ale nie w ramach planu podróży. Celem jest zdefiniowanie wszystkich i odwoływać się do nich w danych planu podróży.

Element <PackageData> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Element <PackageData> jest podobny do elementu <RoomData>, ale opisuje funkcje związane z ceną i warunki, które nie są częścią fizycznej sali opis. Korzystasz z usług <RoomData> i <PackageData> w połączeniu, aby zawierają szczegółowe informacje o pakietach pokojów i funkcjach związanych z cenami. Dla pojedynczych pokoi, które: nie są częścią pakietu, użyj tylko <RoomData>.

Możesz zdefiniować zarówno elementy <RoomData>, jak i <PackageData> dla atrybutu w tym samym pokoju lub w pakiecie. Gdy Google wyświetli pokój lub pakiet w będzie zawierać opisy z obu tych adresów, rozdzielone znakiem łącznik.

Jeśli zaktualizujesz pojedynczy element <PackageData> danej właściwości, zaktualizować wszystkie elementy <PackageData> i <RoomData> w danej właściwości. Każdy element <PropertyDataSet> jest uznawany za wszystkie dane dotyczące usługi. zastąpi wszelkie istniejące dane.

Więcej informacji znajdziesz w artykule Metadane pakietu sal.

Składnia

Element <PackageData> ma taką składnię:

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

Atrybuty

Element <PackageData> nie ma atrybutów.

Elementy potomne

Element <PackageData> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<BreakfastIncluded> Optional boolean Określa, czy ten pakiet obejmuje śniadanie w cenie. Prawidłowe wartości to 0 (lub false) i 1 (lub true).

Zalecamy użycie <Meals> zamiast <BreakfastIncluded>

<ChargeCurrency> Optional enum Kiedy i gdzie użytkownik płaci za rezerwację. Ten element używa tego samego jak <ChargeCurrency> w <Result>.

Wartością domyślną jest web.

<CheckinTime> Optional Time Najwcześniejsza godzina zameldowania. Godzina musi być mniejsza niż 24:00 według czasu lokalnego w hotelu.
<CheckoutTime> Optional Time Najpóźniejszy możliwy czas wymeldowania według lokalnego czasu hotelu.
<Description> Optional Object Szczegółowy opis pakietu. Ten element powinien zawierają informacje nieopisane przez inne elementy ani <Name> element. Nie używaj wielkich liter liter przy określaniu opisu pokoju.

Element <Description> otrzyma pojedynczy element element podrzędny <Text>, który ma 2 wymagane atrybuty, text i language. text to opis oraz atrybut language określa dwuliterowy kod języka, jak w poniższym przykładzie programy:

<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 Jeśli pakiet obejmuje bezpłatny dostęp do internetu, a inne nie zawierają takich udogodnień. Nie ustawiaj element pakietu pokojów w hotelu, w którym każdy może bezpłatnie korzystać z internetu. i pokojami. Ten element nie dotyczy przewodowego i bezprzewodowego internetu w pokoju który nie jest dostępny w pokojach gości. Prawidłowe wartości to 0 (lub false) i 1 (lub true).
<Meals> Optional Object Zawiera informacje o posiłkach w tej paczce.

Element <Meals> ma dwa opcjonalne elementy podrzędne elementy <Breakfast> i <Dinner>, mających te atrybuty:

  • included (wymagany): ustaw na 1 (lub true) jeśli cena obejmuje śniadanie i kolację. w przeciwnym razie ustaw 0 lub false.
  • in_room (opcjonalny): ustaw na 1 (lub true) jeśli goście mogą zjeść śniadanie lub kolację w pokoju, w którym się zatrzymali; in; w przeciwnym razie ma wartość 0 (lub false).
  • in_private_space (opcjonalnie): ustaw na 1 (lub true), jeśli goście mogą zjeść śniadanie/kolację w sali pokoju (z wyjątkiem pokoju, w którym dziecko się znajduje), w którym może uniknąć kontaktu. innych gości; w przeciwnym razie ma wartość 0 (lub false).
  • buffet (opcjonalny): ustaw na 1 (lub true) jeśli śniadanie/kolacja jest serwowane w formie bufetu; w przeciwnym razie ustaw 0 (lub false).

Atrybuty opcjonalne są używane tylko wtedy, gdy atrybut included ma wartość true (prawda).

W przypadku filtrów posiłków (no meals, breakfast only, dinner only i breakfast and dinner) do pracy, Zarówno <Breakfast>, jak i <Dinner> potrzebują z atrybutem included.

<Name> Required string Nazwa pakietu. Wartość powinna być zgodna z informacjami wyświetlanymi na stronie do strony docelowej hotelu. Nie ustawiaj wartości tego elementu w całości wielkimi literami liter.

Ten element przyjmuje pojedynczy element podrzędny, <Text>, który ma 2 atrybuty: text i language. Atrybut text to opis, a atrybut Atrybut language określa dwuliterowy kod języka, co widać w następnym przykładzie:

<Name>
  <Text text="Bed and Breakfast" language="en"/>
  <Text text="Lit et petit déjeuné" language="fr"/>
</Name>
<Occupancy> Optional integer Maksymalna liczba gości, dla których przeznaczony jest pakiet pokoi. Na przykład duży apartament może pomieścić 6 osób. gości, ale jest przeznaczony tylko dla maksymalnie 4 osób.

Ta wartość nie może być większa niż Element <Capacity>, który jest liczbą osób które można fizycznie pomieścić w sali.

Wartość <Occupancy> musi być dodatnia jest liczbą całkowitą z zakresu od 1 do 99 włącznie.

Jeśli ten element określisz zarówno w <RoomBundle>, jak i <PackageData>, wartość w polu <RoomBundle> ma pierwszeństwo.

Uwaga:

<Occupancy> może towarzyszyć Ci: <OccupancyDetails>,która określa typ gości. (dorośli lub dzieci). Informacje o składni i zapisach znajdziesz tutaj: <OccupancyDetails> opis elementów podrzędnych.
<PackageID> Required string

Unikalny identyfikator pakietu. Użyj tego identyfikatora, aby dopasować Dane o pakietach pokojów z blokami <Result> w aktualizacji cen. Więcej informacji: Sala Metadane pakietu.

Możesz też użyć tego identyfikatora, aby odwołać się do wspólnej definicji pakietu pokoi używane w pojedynczej wiadomości transakcji podczas definiowania danych pakietu pokoi inline.)

<ParkingIncluded> Optional boolean Określa, czy pakiet pokoi obejmuje bezpłatny parking, gdzie W przeciwnym razie parking w tym hotelu byłby płatny. Nie określaj wartość tego elementu w przypadku hotelu z bezpłatnym parkingiem.

Prawidłowe wartości to 0 (lub false) i 1 (lub true). Wartość domyślna to false

<PhotoURL> Optional Object (Tak samo jak <PhotoURL> w <RoomData>, ale dotyczące opakowania (np. zdjęć posiłków).
<Refundable> Optional Object Umożliwia wyświetlanie informacji o stawce jako objętej pełnym zwrotem lub zapewnieniem bezpłatnej anulowanie. Jeśli jej nie podasz, nie pojawią się żadne informacje o zwrocie środków. Zasady zwrotów na poziomie <PackageData> zastępują zasady zwrotów podane na stronie na poziomie <Result>. Zastąpienia zasad zwrotów na poziomie <Rates> zasady zwrotów na poziomie <PackageData>. Ceny podlegające zwrotom mogą być wyróżniana za pomocą alternatywnych opcji, bez modyfikacji schematu wiadomości dotyczącej transakcji. Więcej informacji na temat tych opcji Zasady dotyczące zwrotów.

Poniższy przykład pokazuje <Refundable> element ze wszystkimi ustawionymi atrybutami:

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

Uwaga: zalecamy skonfigurowanie wszystkich atrybutów. Plik danych Komunikat ostrzegawczy o stanie jest generowany, gdy co najmniej jeden atrybut nie ustawiono.

Jeśli nie ustawisz żadnych atrybutów, stawka nie będzie wyświetlana jako podlega zwrotowi. Te atrybuty:

  • available: (wymagane) ustaw na 1 lub true wskazuje, czy stawka zezwala na pełne refund; w przeciwnym razie ustaw 0 lub false.
  • refundable_until_days: (wymagane, jeśli available to true) Określa liczbę dni przed datą zameldowania, na które można otrzymać pełny zwrot środków. poproszono o dostęp. Wartość refundable_until_days musi być liczbą całkowitą z zakresu od 0 do 330 włącznie.
  • refundable_until_time: (zdecydowanie zalecany, jeśli available to true) Określa o ostatniej porze dnia, według lokalnego czasu hotelu, Żądanie zwrotu kosztów zostanie uwzględnione. Może to być połączone z refundable_until_days do określenia, dla Na przykład: „Zwroty środków są dostępne do 16:00 dwa dni przed zameldowania”. Jeśli refundable_until_time nie jest ustawiony, wartość ustawiana jest domyślnie północ.

    Wartość tego atrybutu ma format Time.

Podczas ustawiania atrybutów pamiętaj o tych kwestiach:

  • Jeśli available lub refundable_until_days nie jest oznacza to, że stawka nie jest wyświetlana jako podlegająca zwrotowi.
  • Jeśli available to 0 lub false, a pozostałe atrybuty są ignorowane. Stawka nie jest wyświetlana jako podlega zwrotowi, nawet jeśli skonfigurowano co najmniej jeden z pozostałych atrybutów.
<MembershipBenefits Included> Optional boolean Cena uwzględnia korzyści ze statusu Elite za pobyt. Zawiera następujące parametry:
  • ProgramName: nazwa programu statusu elit
  • ProgramLevel: poziom programu. Na przykład: „Złoty”.
  • NightlyValue (optional): wartość za noc w korzyści.
<CarRentalIncluded> Optional boolean Cena obejmuje bezpłatne wypożyczenie samochodu na czas pobytu.
<MilesIncluded>&gt; Optional boolean Cena obejmuje mile w ramach programu lojalnościowego linii lotniczej. Parametry obejmują:
  • NumberofMiles: liczba mil na plan podróży.
  • Provider: podaj mile w ramach programu lojalnościowego linii lotniczej.
<OnPropertyCredit> Optional boolean W cenę wliczone są środki do wykorzystania na terenie obiektu (żywność i wyżywienie, ośrodek wypoczynkowy, spa itp.). Parametr:
  • Amount: wartość kredytu na plan podróży (w walucie lokalnej). .
<AirportTransportationIncluded> Optional Object Cena obejmuje bezpłatny transport z pobliskiego lotniska i z powrotem. Parametr opcjonalny Atrybut direction określa kierunkowość transportu. Prawidłowe wartości to m.in.:
    from: zapewniany jest transport z lotniska na lotnisko usłudze. Jest to wartość domyślna, jeśli nie określono kierunku. to: transport na lotnisko jest zapewniany z usłudze. round_trip: zapewniamy transport zarówno do, jak i z powrotem na lotnisku.

Przykłady

Pakiet z pokojem jednoosobowym

Poniższy przykład definiuje pakiet z jednym pokojem dla osób Pobyt 2 osób (1 dorosły i 1 dziecko) obejmuje śniadanie:

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

Metadane pokoju i pakietu

Ten przykład określa metadane pokoju i pakietu:

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

Pakiety pokojów

Poniższy przykład definiuje metadane pokoju i pakietu dla wielu sal Pakiety:

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


Pakiet pokojów i ceny

Poniższy przykład definiuje metadane pokoju i pakietu w przypadku pakietu pokoi z funkcjami dotyczącymi ceny:

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

Posiłki i zdjęcia

Poniższy przykład pokazuje metadane pokoju i pakietu posiłków w przypadku posiłków: zdjęć oraz godzin zameldowania i wymeldowania:

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

Śniadanie

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

Kontener do aktualizacji cen i dostępności w <Transaction> .

Element <Result> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Użyj narzędzia <Result>, aby ustawiać lub aktualizować ceny za pokoje i określać ceny dostępnych zasobach reklamowych. Elementy zdefiniowane w tym elemencie zazwyczaj odwołują się do niezależne od planu podróży metadane pokoju lub pakietu (np. opis lub zestaw udogodnień określonych w usługach <PackageData> i <RoomData>.

Wiadomości „Transakcje” z aktualizacją cen są zwykle wysyłane bardzo często. To, jak i jak często będziesz to robić, zależy od trybu wyświetlania.

Aby usunąć plany podróży, możesz użyć pola <Result> w wiadomości dotyczącej transakcji. opisane w artykule Usuwanie zasobów reklamowych. Więcej informacji o używaniu wiadomości o transakcjach do aktualizowania cen dostępność, Dodawanie i aktualizowanie zasobów reklamowych.

Pojedyncza wiadomość dotycząca transakcji może zawierać dowolną liczbę elementów <Result> o ile rozmiar wiadomości nie przekracza 100 MB.

Składnia

Element <Result> ma taką składnię:

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

Atrybuty

Element <Result> ma te atrybuty:

Atrybut Wymagana? Typ Opis
mergeable Optional boolean Domyślnie nowe ceny dla określonego hotelu i planu podróży będą zastąpić wszelkie wcześniejsze (niewygasłe) ceny znajdujące się w pamięci podręcznej Google. atrybut scalany umożliwia przechowywanie dodatkowych cen w pamięci podręcznej Google bez usuwania wcześniejszych informacji o cenach. Zapytanie o cenę w czasie rzeczywistym: Odpowiedzi kontekstowe zawsze będą miały ten atrybut ustawiony na true (bez względu na odpowiedź w wiadomości dotyczącej transakcji).

Elementy potomne

Element <Result> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<AllowablePointsOfSale> Optional Object Co najmniej jedna strona docelowa, która może wyświetlać się w tagu hotelu. Strona docelowa to witryna, która może obsługiwać proces rezerwacji rezerwacji użytkownika. Aby jednoznacznie uwzględnić (i wykluczyć) określone strony docelowe innych), dodaj co najmniej jeden element typu <AllowablePointsOfSale> elementy pasujące do parametru <PointOfSale> id w pliku stron docelowych.

Jeśli pominiesz ten element, wszystkie strony docelowe zdefiniowane w tagu stron docelowych można uznać za kwalifikujące się do zarezerwowania pokoju. Więcej informacji: Składnia plików na stronach docelowych.

<Baserate> Optional float

Cena pokoju za pobyt. Wartość tego elementu powinien odzwierciedlać to:

  • W przypadku pokoju prywatnego podaj najtańszą stawkę za 2 osoby co oferujesz. Możesz tutaj zwiększyć obłożenie, jeśli nie masz cena za 2 osoby, a Twoje konto ma więcej niż podwójne obłożenie ceny zostały włączone. Skontaktuj się z nami, aby włączyć stawki za obłożenie inne niż podwójne. Ceny za 1 osobę są tu niedozwolone – należy ustawić jako <Rates>.
  • Jeśli chcesz udostępnić pokój wspólny, pozostaw to pole puste i użyj <RoomBundle>
  • Powinna to być łączna cena podstawowa za wszystkie noclegi, a nie średnią cenę za noc.

Jeśli sala jest niedostępna w planie podróży, Pole <Baserate> należy pominąć lub ustawić na Wartości -1 i <Unavailable> powinny być wraz z wszelkimi znanymi przyczynami niedostępności.

Aby usunąć pakiet pokoi, wykonaj czynności opisane w artykule Usuwanie pakietu pokoi.

Pole <Baserate> nie może zawierać żadnych grup cyfr takie jak przecinek (,) lub kropka (.). Zawsze rozdzielaj ułamki z kropką (.) jako znakiem dziesiętnym. Przykład: reprezentuje 1200,40 USD jako:

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

Element <Baserate> przyjmuje następujące elementy atrybuty opcjonalne:

  • all_inclusive: wartość logiczna, która wskazuje, czy współczynnik w tym podatki i opłaty. Ogólnie należy ustawić tę wartość na false dla użytkowników w Stanach Zjednoczonych i Kanadzie oraz wartości dostaw dla <Tax> i <OtherFees> . Jeśli korzystasz z cen all inclusive, możesz się nie kwalifikować pojawi się w informacjach o produktach, jeśli podane ceny nie uwzględniają podatków. i opłaty dla użytkowników w Kanadzie.

    Ceny all inclusive są teraz wyświetlane użytkownikom w Stanach Zjednoczonych.

    W przypadku pozostałych użytkowników musisz zwykle uwzględnić podatki i opłaty jako stawkę podstawową i ustaw wartość all_inclusive dla atrybutu true. Więcej informacji: Zasady dotyczące podatków i opłat.

    Wartością domyślną jest false.

  • currency: trzyliterowy kod waluty. Dla: np. USD w przypadku złotego.
<ChargeCurrency> Optional enum Kiedy i gdzie użytkownik płaci za rezerwację. Ten element może zostać użyte w wiadomości dotyczącej transakcji w <Result>. element ceny hotelu lub bloku <PackageData> dla pakietu pokoi.

Prawidłowe wartości to:

  • web: użytkownik jest obciążany online w chwili rezerwacji. jest to wartość domyślna Rzeczywista strona docelowa to zdefiniowane przez pliku strony docelowej, a na nią może mieć wpływ waluta użytkownika. lokalizacja, język i inne czynniki.
  • hotel: użytkownik jest obciążany opłatą podczas meldowania się w hotelu. Jeśli płatność musi być zawsze dokonywana w walucie hotelu, ustaw wartość od <ChargeCurrency> do hotel Na rzeczywistą stronę docelową nie ma wpływu w walucie użytkownika.
  • deposit: użytkownik jest obciążany natychmiastowo za pewną część a resztę pobieramy później, zwykle podczas wymeldowania użytkownika z hotelu.
  • installments: użytkownik jest obciążany opłatą w wysokości ułamka początkowego całkowitej należnej kwoty i ma zazwyczaj spłacić ustalone saldo w określonym czasie.

Wartością domyślną jest web.

<Checkin> Required Date Data zameldowania w przypadku planu podróży podana na podstawie daty . Kombinacja elementu <Nights> i parametru Element <Checkin> tworzy plan podróży.
<Custom[1‑5]> Optional string Definiuje pole niestandardowe, którego można używać do przekazywania dodatkowych danych powiązane z hotelem. Za pomocą parametru te nazwy elementów:
  • <Custom1>
  • <Custom2>
  • <Custom3>
  • <Custom4>
  • <Custom5>

Elementy <Custom> umożliwiają przekazywanie dowolnych danych. Możesz na przykład określić w tym polu wartość, która będzie używany w pliku stron docelowych do utworzenia niestandardowego adresu URL strony docelowej stronę. Obowiązuje limit 200 znaków na pole niestandardowe. Dla: więcej informacji znajdziesz tutaj: pliki strony docelowej .

&lt;Custom&gt; elementy podane w polu <Rate> element nie jest dziedziczony po elemencie <RoomBundle>. Zalecenia zdefiniuj wartość <Custom> w każdym miejscu <RoomBundle>.

<ExpirationTime> Optional DateTime Data i godzina, do których uznano, że cena wygasła (3 godziny) minimum).

Zalecamy niepodawanie sygnatur czasowych, po których upływie nie ma kluczowego znaczenia dla struktury cen,

Google nie wyświetla cen, które wygasły, ani żadnych planów podróży które utraciły ważność, będą kwalifikować się do Zapytanie o cenę w czasie rzeczywistym.

<Nights> Required integer Liczba nocy w planie podróży. Wartość klucza Element <Nights> musi być dodatnią liczbą całkowitą. Kombinacja <Nights> i <Checkin> przygotowuje plan podróży.
<OtherFees> Optional float Opłaty inne niż stawka podstawowa i podatki mające wpływ na ostateczna cena pokoju. Element <OtherFees> przyjmuje jeden wymagany atrybut (currency), który definiuje trzyliterowy kod waluty, w którym są pobierane opłaty. Na przykład: USD.

Element <OtherFees> jest wymagany, jeśli <Baserate> ma wartość większą niż 0.

<Occupancy> Optional integer Określa maksymalną dozwoloną liczbę osób w przypadku tej ceny. Gdy <Occupancy> pojawi się bezpośrednio pod linkiem <Result>, musi zawierać wartość 2 lub większą. <Occupancy> maj towarzyszy atrybut <OccupancyDetails>, który określa typ gości (dorośli lub dzieci). Jeśli nie podasz typów gości, przyjmuje się, że są to dorośli. Skonsultuj się z: <OccupancyDetails> w sprawie: składnię i opis elementów podrzędnych. Jeśli Nie podano <Occupancy> elementu, obłożenie jest domyślna wartość to 2.

Uwaga: skontaktuj się z zespołem pomocy, aby włączyć tę funkcję wysyłać ceny za obłożenie inne niż podwójne.

<PackageID> Optional string Unikalny identyfikator pakietu służący do zmapowania go na wstępnie zdefiniowane dane pakietu. Służy również do wypełniania zmiennej strony docelowej PACKAGE-ID. Więcej informacji: Sala Metadane pakietu.
<Property> Required string Identyfikator hotelu, którego dotyczą powiązane dane (cena, planu podróży, pakietu pokoi czy metadanych). Wartość tego elementu musi być ciąg znaków. Wartość tego elementu musi odpowiadać wartości w wykazie <id> zdefiniowany przez Ciebie w pliku danych z listą hoteli.
<Rates> Optional <Rates> Kontener na co najmniej 1 blok <Rate>. Co <Rate> w <Rates> określa inną cenę pokoju lub planu podróży .

Użyj elementu <Rates>, gdy istnieje wiele stawek dla ten sam pokój i plan podróży lub gdy cena nie jest dozwolona określić na poziomie <Result>. Na przykład możesz zdefiniować wiele ceny za okres ceny warunkowe, stawki prywatne, ceny warunkowe w grupach pokojów lub innych obłożeniu.

Uwaga: w okresie <Result> ceny za 1 osobę mogą musi być określony tylko w <Rates>. Skontaktuj się z nami, aby zezwolić ceny za obłożenie inne niż podwójne.

<Refundable> Optional Object Umożliwia wyświetlanie informacji o stawce jako objętej pełnym zwrotem lub zapewnieniem bezpłatnej anulowanie. Jeśli jej nie podasz, nie pojawią się żadne informacje o zwrocie środków. Zasady zwrotów na poziomie <PackageData> zastępują zasady zwrotów podane na stronie na poziomie <Result>. Zastąpienia zasad zwrotów na poziomie <Rates> zasady zwrotów na poziomie <PackageData>. Ceny podlegające zwrotom mogą być wyróżniana za pomocą alternatywnych opcji, bez modyfikacji schematu wiadomości dotyczącej transakcji. Więcej informacji o Zasady dotyczące zwrotów.

Poniższy przykład pokazuje <Refundable> element ze wszystkimi ustawionymi atrybutami:

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

Uwaga: zalecamy skonfigurowanie wszystkich atrybutów. Plik danych Komunikat ostrzegawczy o stanie jest generowany, gdy co najmniej jeden atrybut nie ustawiono.

Jeśli nie ustawisz żadnych atrybutów, stawka nie będzie wyświetlana jako podlega zwrotowi. Te atrybuty:

  • available: (wymagane) ustawienie: 1 (lub true), aby wskazać, czy stawka zezwala na pełne refund; w przeciwnym razie ma wartość 0 (lub false).
  • refundable_until_days: (wymagane, jeśli available to true) Określa liczbę dni przed datą zameldowania, na które można otrzymać pełny zwrot środków. poproszono o dostęp. Wartość refundable_until_days musi być liczbą całkowitą z zakresu od 0 do 330 włącznie.
  • refundable_until_time: (zdecydowanie zalecany, jeśli available to true) Określa o ostatniej porze dnia, według lokalnego czasu hotelu, Żądanie zwrotu kosztów zostanie uwzględnione. Może to być połączone z refundable_until_days do określenia, dla Na przykład: „Zwroty środków są dostępne do 16:00 dwa dni przed zameldowania”. Jeśli refundable_until_time nie jest ustawiony, wartość ustawiana jest domyślnie północ.

    Wartość tego atrybutu ma format Time.

Podczas ustawiania atrybutów pamiętaj o tych kwestiach:

  • Jeśli available lub refundable_until_days nie jest oznacza to, że stawka nie jest wyświetlana jako podlegająca zwrotowi.
  • Jeśli available to 0 (lub false), a pozostałe atrybuty są ignorowane. Stawka nie jest wyświetlana jako podlega zwrotowi, nawet jeśli skonfigurowano co najmniej jeden z pozostałych atrybutów.
<RoomBundle> Optional <RoomBundle> kontener na informacje z cennymi fizycznymi opisami pomieszczeń, listę udogodnień, a także zasady zakupów, danego hotelu i planu podróży.

Ogólnie w tym elemencie należy określić ceny za pokój podstawowy i różnych typów pokoi w tym samym obiekcie. To możliwe Aby zdefiniować wbudowane opisy pakietów, użyj oddzielnego Komunikat dotyczący transakcji, który definiuje tę informację. Google będzie przechowywać metadanych, tak aby można było się odwoływać do nich, zamiast ich powtarzać przyszłych aktualizacji cen.

<RoomID> Optional string Unikalny identyfikator pokoju służący do zmapowania go na wstępnie zdefiniowane dane pokoju. Poza tym służy do wypełniania zmiennej strony docelowej ID pokoju PARTNERA. Więcej informacji: Sala Metadane pakietu.
<Tax> Optional float Podatki obliczane od ostatecznej ceny pokoju. Element <Tax> przyjmuje 1 wymagany atrybut, currency, który definiuje trzyliterowy kod waluty na podatki. Na przykład: USD. Element <Tax> jest wymagany, jeśli <Baserate> ma wartość większą niż 0.

Jeśli element <Baserate> „all_inclusive” ma wartość „true” (prawda), jest opcjonalna.

<Unavailable> Optional Object oznacza, że nie można zarezerwować planu podróży. Pełni funkcję kontener, by dowiedzieć się więcej o przyczynach niedostępności planu podróży. Jeden lub więcej z tych przyczyn niedostępności może być umieszczonych pod nagłówkiem Tag <Unavailable>:
  • <NoVacancy/>: nie ma więcej sal na sprzedaż na jedną lub więcej nocy.
  • <MinNightStay value=N/>: plan podróży był poniżej Minimalna liczba noclegów: N w okresie pobytu.
  • <MaxNightStay value=N/>: plan podróży znajdował się nad lotem maksymalna liczba noclegów: N w okresie pobytu.
  • <MinAdvancePurchase value=N/>: plan podróży był poniżej minimalnego okresu rezerwacji wynoszącego N za pobyt daty.
  • <MaxAdvancePurchase value=N/>: plan podróży był powyżej maksymalnego okresu rezerwacji z wyprzedzeniem wynoszącego N za pobyt. daty.
  • <ClosedToArrival/>: właściwość nie zezwala odprawy w dniu przylotu.
  • <ClosedToDeparture/>: właściwość nie zezwala wymeldowania w dniu wylotu.
  • <PropertyClosed first_open="YYYY-MM-DD" first_closed="YYYY-MM-DD"/>: obiekt jest zamknięty dla niektórych lub do końca pobytu. Zalecane atrybuty: first_open i first_closed określają pierwsze daty większe lub równe datę przyjazdu, w przypadku której obiekt jest otwarty lub zamknięty. W przypadku obiektu, który zostanie zamknięty po dacie przybycia, first_open powinien być równy dacie przyjazdu, a first_closed powinien być datą zamknięcia usługi. Obiektu zamkniętego data przyjazdu, first_closed powinna być taka sama jak przyjazd i data, a first_opened to następny dzień, w którym usługa jest otwarta.
  • <NotFetched/>: cena planu podróży była inna dostarczane przez niższe źródła danych.
  • <InvalidProperty/>: identyfikator żądanej usługi nie rozpoznano.
  • <InvalidOccupancy/>: żądana liczba osób nie jest obsługiwane przez usługę.
  • <PriceIssue/>: problem z ceną spowodował nie zostaną wysłane.
  • <InternalError reason=""/>: niewymieniony błąd . Opcjonalny atrybut powód może zgłosić błąd jako tekst.
  • <OtherRestriction restriction=""/>: plan podróży był niedostępne z powodu niewymienionych ograniczeń dotyczących rezerwacji. Opcjonalna restriction umożliwia zgłoszenie ograniczenia w formie tekstowej.

Przykłady

Przykład dotyczący wielu usług

Ten przykład określa jeden plan podróży i jego cenę dla dwóch właściwości:

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

Niewidoczne w tym przykładzie są informacjami o pokoju, takimi jak opis, zdjęcie i podpis, nazwę pokoju i pojemność.

Możesz zdefiniować te informacje raz w ramach osobnej transakcji przechowywanej przez Google. Możesz się do niego odwoływać w każdym miejscu późniejszych aktualizacji cen i zasobów reklamowych. Więcej informacji: Metadane pakietu sal.

Przykład z wieloma stawkami

Ten przykład zdefiniował 1 plan podróży i pojedynczy obiekt z wieloma obiektami stawki przy różnych obłożeniu. Elementu <Rates> można użyć do: podaj ceny dla wielu stawek za określoną usługę. Poniższy przykład to Przydatny w przypadku usług związanych z kwaterami wakacyjnymi (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>

Przykład niedostępny

Ten przykład określa jeden plan podróży, którego dostępności nie można pobieranych z kanałów niższego poziomu, o liczbie sekund poniżej wartości minimalnej została już zarezerwowana na noc i w określonym terminie, a trzecia, obiekt jest zamknięty w dniu przyjazdu, ale zostanie otwarty w trakcie pobyt:

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

Kontener na co najmniej 1 blok <Rate>. Co <Rate> w <Rates> określa inną cenę dla kombinacji pokoju i planu podróży.

Używaj elementu <Rates> tylko wtedy, gdy istnieje wiele stawek dla tego samego pomieszczenia lub planu podróży. Na przykład możesz zdefiniować wiele ceny cen warunkowych, cenach prywatnych lub ceny warunkowe w pakietach pokojów.

Element <Rates> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Wartości ustawione w polu <Rate> zastępują wartości związane z cenami na nadrzędny element <Result> lub <RoomBundle>. Jeśli nie są ustawione w <Rate>, dziedziczą wartość z elementu nadrzędnego. Tylko &lt;AllowablePointsofSale&gt; jest dziedziczona po elemencie <RoomBundle>.

Składnia

Element <Rates> ma taką składnię:

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

Atrybuty

Element <Rates> ma te atrybuty:

Atrybut Wymagana? Opis
rate_rule_id Optional Dla cen warunkowych, ten identyfikator dopasowuje cenę do definicji na plik definicji reguły dotyczącej stawek, Limit znaków w tym polu to 40 znaków.

Elementy potomne

Element <Rates> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<AllowablePointsOfSale> Optional Object Co najmniej jedna strona docelowa, która może wyświetlać się w tagu hotelu. Ten element ma taką samą składnię jak element <AllowablePointsOfSale><Result>.
<Baserate> Required float Cena pokoju za pobyt. Ten element używa tego samego jak w <Baserate> w <Result>.

Uwaga: element podrzędny <Baserate> w argumencie Nie można zdefiniować, że usługa <Rate> jest niedostępna.

<ChargeCurrency> Optional enum Kiedy i gdzie użytkownik płaci za rezerwację. Ten element używa funkcji tej samej składni co <ChargeCurrency> w <Result>
<Custom[1‑5]> Optional string Pola niestandardowe, których możesz używać do przekazywania dodatkowych danych powiązanych z z hotelem na stronę docelową. Ten element ma taką samą składnię jak element <Custom[1‑5]> w: <Result>. Istnieje limit 200 znaków na pole niestandardowe. Więcej informacji: .

Jeśli <Custom> elementy znajdują się w tagu <Result>, nie są one dziedziczone w parametrze <RoomBundle>, który należy definiować oddzielnie dla każdego elementu. <RoomBundle> lub możesz go uwzględnić w <PackageData> jeśli niezbędną.

<ExpirationTime> Optional DateTime Data i godzina, kiedy stawka jest uznawana za nieaktualną. Ten element ma taką samą składnię jak element <ExpirationTime> w: <Result>.
<Occupancy> Optional integer

Określa maksymalną dozwoloną liczbę osób w przypadku tej ceny. Jeśli nie, przyjmuje się, że jest ona taka sama jak stawka nadrzędna. <Occupancy> może towarzyszyć Ci: <OccupancyDetails>, który określa rodzaj gości (dorośli lub dzieci). Składnię i opis znajdziesz tutaj: <OccupancyDetails> elementów podrzędnych.

<OtherFees> Required float Opłaty inne niż stawka podstawowa i podatki, które mają wpływ na cenę końcową pokoju. Ten element ma taką samą składnię jak <OtherFees> w: <Result>.

Jeśli element <Baserate> „all_inclusive” ma wartość „true” (prawda), jest opcjonalna.

<Refundable> Optional Object Umożliwia wyświetlanie informacji o stawce jako objętej pełnym zwrotem lub zapewnieniem bezpłatnej anulowanie. Jeśli jej nie podasz, nie pojawią się żadne informacje o zwrocie środków. Zasady zwrotów na poziomie <PackageData> mają pierwszeństwo przed zasadami zwrotów na poziomie <Result>. Zastąpienia zasad zwrotów na poziomie <Rates> zasady zwrotów na poziomie <PackageData>. Ceny podlegające zwrotom mogą być wyróżniana za pomocą alternatywnych opcji, bez modyfikacji schematu wiadomości dotyczącej transakcji. Więcej informacji na temat tych opcji Zasady dotyczące zwrotów.

Poniższy przykład pokazuje <Refundable> element ze wszystkimi ustawionymi atrybutami:

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

Uwaga: zalecamy skonfigurowanie wszystkich atrybutów. Plik danych Komunikat ostrzegawczy o stanie jest generowany, gdy co najmniej jeden atrybut nie ustawiono.

Jeśli nie ustawisz żadnych atrybutów, stawka nie będzie wyświetlana jako podlega zwrotowi. Te atrybuty:

  • available: (wymagane) ustawienie: 1 (lub true), aby wskazać, czy stawka zezwala na pełne refund; w przeciwnym razie ma wartość 0 (lub false).
  • refundable_until_days: (wymagane, jeśli available to true) Określa liczbę dni przed datą zameldowania, na które można otrzymać pełny zwrot środków. poproszono o dostęp. Wartość refundable_until_days musi być liczbą całkowitą z zakresu od 0 do 330 włącznie.
  • refundable_until_time: (zdecydowanie zalecany, jeśli available to true) Określa o ostatniej porze dnia, według lokalnego czasu hotelu, Żądanie zwrotu kosztów zostanie uwzględnione. Może to być połączone z refundable_until_days do określenia, dla Na przykład: „Zwroty środków są dostępne do 16:00 dwa dni przed zameldowania”. Jeśli refundable_until_time nie jest ustawiony, wartość ustawiana jest domyślnie północ.

    Wartość tego atrybutu ma format Time.

Podczas ustawiania atrybutów pamiętaj o tych kwestiach:

  • Jeśli available lub refundable_until_days nie jest oznacza to, że stawka nie jest wyświetlana jako podlegająca zwrotowi.
  • Jeśli available to 0 (lub false), a pozostałe atrybuty są ignorowane. Stawka nie jest wyświetlana jako podlega zwrotowi, nawet jeśli skonfigurowano co najmniej jeden z pozostałych atrybutów.
<Tax> Required float Podatki obliczane od ostatecznej ceny pokoju. Ten ma tę samą składnię co <Tax> w <Result>

Przykłady

Stawka podstawowa i cena warunkowa

Przykład poniżej pokazuje komunikat transakcji, który zawiera stawkę podstawową i cena warunkowa:

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

Wiele cen warunkowych

Ten przykład określa stawkę podstawową i kilka stawek warunkowych w elemencie <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>

Określa ceny i dostępność pakietów pokojów w elemencie podrzędnym <Result> w wiadomości <Transaction>. Zdefiniuj osobny element dla każdego elementu pakietu lub planu podróży. Aby zdefiniować pakiet i warunki tagu Pakiety pokojów – użyj <RoomData>.

Element <RoomBundle> występuje w tym miejscu w sekcji Hierarchia XML wiadomości transakcji:

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

Więcej informacji znajdziesz w artykule Korzystanie z pakietów pokojów.

Składnia

Element <RoomBundle> ma taką składnię:

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

Atrybuty

Element <RoomBundle> nie ma atrybutów.

Elementy potomne

Element <RoomBundle> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<Baserate> Required float Określa cenę pakietu pokoi za pobyt. Ten element używa: tę samą składnię co <Baserate> w <Result> z następujący wyjątek:
  • Jeśli sala jest niedostępna w planie podróży, usuń atrybut <RoomBundle> element wskazujący, że pomieszczenie nie mogą być dostępne na dłużej. Więcej informacji: Usuwanie pakietu pokojów.
<BreakfastIncluded> Optional boolean Określa, czy ten pakiet pokoi obejmuje śniadanie w cenie.
<ChargeCurrency> Optional enum Kiedy i gdzie użytkownik płaci za rezerwację. Ten element używa tego samego jak <ChargeCurrency> w <Result>.

Wartością domyślną jest web.

<Custom[1‑5]> Optional string Pola niestandardowe do przekazywania dodatkowych danych na strony docelowe dla pakietu pokoi. Elementy te mają taką samą składnię jak <Custom[1-5]> w grupie <Result>. Obowiązuje limit 200 znaków na pole niestandardowe. Więcej informacji: plików stron docelowych.

Jeśli <Custom> elementy znajdują się w tagu <Result>, nie są one dziedziczone w parametrze <RoomBundle>, który należy definiować oddzielnie dla każdego elementu. <RoomBundle> lub można go uwzględnić w <PackageData> jeśli niezbędną.

<InternetIncluded> Optional boolean Jeśli pakiet pokoi obejmuje bezpłatny dostęp do internetu, a pozostałe pakiety nie miałyby takich udogodnień. Nie ustawiaj element pakietu pokojów w hotelu, w którym każdy może bezpłatnie korzystać z internetu. i pokojami. Ten element nie dotyczy przewodowego i bezprzewodowego internetu w pokoju który nie jest dostępny w pokojach gości.
<Occupancy> Required integer Określa maksymalną dozwoloną liczbę osób w przypadku tej ceny. Na przykład plik duży apartament może pomieścić do 6 osób, ale „Pakiet dla podróżujących” mogą pomieścić tylko 2 gości.

Ta wartość nie może być większa niż <Capacity>, czyli liczbę osób, które w którym może się znajdować pokój.

Definiując liczbę osób w adresie URL strony docelowej, użyj funkcji NUM-ADULTS i NUM-CHILDREN, jak opisane w sekcji Korzystanie z funkcji Zmienne i warunki. Wartość domyślna to 2. dorośli i 0 dzieci.

Wartość <Occupancy> musi być dodatnia jest liczbą całkowitą z zakresu od 1 do 99 włącznie.

Uwagi:

  • <Occupancy> w okresie <RoomBundle> jest zdecydowanie zalecany, więc oznaczony jako wymagane, a w przypadku jego pominięcia spowoduje powoduje zgłoszenie błędu 1097.
  • <Occupancy> pochodzi z obiektu danych w tej zamówienie: <RoomBundle>, <PackageData>, a następnie = <RoomData> Jeśli w żadnym z tych elementów nie ma żadnej wartości, domyślna wartość to 2.
  • <Occupancy> może towarzyszyć Ci: <OccupancyDetails>, określającego typ gości (dorośli lub dzieci). Jeśli typ gościa nie zostały określone, przyjmuje się, że są to osoby dorosłe. Skonsultuj się <OccupancyDetails> – składnia i opis elementów podrzędnych.
  • Jeśli ustawisz <Occupancy> w obu <RoomBundle> i <PackageData>, wartość w <RoomBundle> ma pierwszeństwo.
<OtherFees> Required float Opłaty inne niż stawka podstawowa i podatki mające wpływ na ostateczna cena pokoju. Element <OtherFees> przyjmuje jeden wymagany atrybut (currency), który definiuje trzyliterowy kod waluty, w którym są pobierane opłaty. Na przykład użyj wartości USD za dolary amerykańskie.
<PackageID> Optional (recommended) string Unikalny identyfikator danych pakietu. Użyj tego identyfikatora, aby dopasować Dane pakietu pokoi z danymi wysłanymi w pokoju <PackageData>. Dla: więcej informacji znajdziesz tutaj: Sala Metadane pakietu. (Ty mogą też użyć tego identyfikatora, aby odwołać się do wspólnej definicji pakietu pokoi w pojedynczej transakcji podczas definiowania danych pakietu pokoi inline.)
<ParkingIncluded> Optional boolean Określa, czy pakiet pokoi obejmuje bezpłatny parking, gdzie W przeciwnym razie parking w tym hotelu byłby płatny. Nie określaj wartość tego elementu w przypadku hotelu z bezpłatnym parkingiem.

Prawidłowe wartości to 0 (lub false) i 1 (lub true). Wartość domyślna to false

<RatePlanID> Optional string Identyfikator abonamentu reprezentuje unikalny identyfikator pokoju i pakietu. Na przykład, jeśli <RoomID> ma wartość 5 i a <PackageID> jako wartości ABC, możesz użyć wartości 5-ABC dla <RatePlanID>. Zdecydowanie zalecamy użycie RatePlanID jako zmienną do tworzenia dynamicznej strony docelowej; (dawniej punkt sprzedaży).

Więcej informacji: Używanie zmiennych Warunki.

<Rates> Optional <Rates> Stawki, które zastępują domyślne stawki dla tego pakietu pokoi. Ten element ma taką samą składnię jak <Rates> w <Result>.
<Refundable> Optional Object Umożliwia wyświetlanie informacji o stawce jako objętej pełnym zwrotem lub zapewnieniem bezpłatnej anulowanie. Jeśli jej nie podasz, nie pojawią się żadne informacje o zwrocie środków. Zasady zwrotów na poziomie <PackageData> zastępują zasady zwrotów podane na stronie na poziomie <Result>. Zastąpienia zasad zwrotów na poziomie <Rates> zasady zwrotów na poziomie <PackageData>. Ceny podlegające zwrotom mogą być wyróżniana za pomocą alternatywnych opcji, bez modyfikacji schematu wiadomości dotyczącej transakcji. Więcej informacji o tych opcjach Zasady dotyczące zwrotów.

Poniższy przykład pokazuje <Refundable> element ze wszystkimi ustawionymi atrybutami:

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

Uwaga: zalecamy skonfigurowanie wszystkich atrybutów. Plik danych Komunikat ostrzegawczy o stanie jest generowany, gdy co najmniej jeden atrybut nie ustawiono.

Jeśli nie ustawisz żadnych atrybutów, stawka nie będzie wyświetlana jako podlega zwrotowi. Te atrybuty:

  • available: (wymagane) ustawienie: 1 (lub true), aby wskazać, czy stawka zezwala na pełne refund; w przeciwnym razie ma wartość 0 (lub false).
  • refundable_until_days: (wymagane, jeśli available to true) Określa liczbę dni przed datą zameldowania, na które można otrzymać pełny zwrot środków. poproszono o dostęp. Wartość refundable_until_days musi być liczbą całkowitą z zakresu od 0 do 330 włącznie.
  • refundable_until_time: (zdecydowanie zalecany, jeśli available to true) Określa o ostatniej porze dnia, według lokalnego czasu hotelu, Żądanie zwrotu kosztów zostanie uwzględnione. Może to być połączone z refundable_until_days do określenia, dla Na przykład: „Zwroty środków są dostępne do 16:00 dwa dni przed zameldowania”. Jeśli refundable_until_time nie jest ustawiony, wartość ustawiana jest domyślnie północ.

    Wartość tego atrybutu ma format Time.

Podczas ustawiania atrybutów pamiętaj o tych kwestiach:

  • Jeśli available lub refundable_until_days nie jest ustawiona, stawka nie jest wyświetlana jako podlegająca zwrotowi.
  • Jeśli available to 0 (lub false), a pozostałe atrybuty są ignorowane. Stawka nie jest wyświetlana jako podlega zwrotowi, nawet jeśli skonfigurowano co najmniej jeden z pozostałych atrybutów.
<RoomID> Required string Unikalny identyfikator danych pokoju. Użyj tego identyfikatora, aby dopasować Dane pakietu pokojów z danymi wysłanymi w: <RoomData>. Więcej informacji: Metadane pakietu pokoi. (Możesz także użyć tego identyfikatora, aby odwołać się do definicja pokoju wspólnego w pojedynczym komunikacie transakcji podczas definiowania dane o salach).
<Tax> Required float Podatki obliczane od ostatecznej ceny pokoju. Element <Tax> przyjmuje 1 wymagany atrybut, currency, który definiuje trzyliterowy kod waluty na podatki. np. USD w przypadku dolara amerykańskiego.

Przykłady

Pakiet dla 1 osoby

Poniższy przykład zawiera odpowiedź z pakietem dla 1 osoby. Gdy użytkownik wybierze 1 w selektorze liczby osób, Google wyświetli najniższą odpowiednia cena niezależnie od liczby osób.

Jeśli cena za 1 osobę jest niedostępna, Google wyświetli najniższą cenę za dwuosobowe pokoje. Pamiętaj, że ceny za 1 osobę nie są jest odczytywany, jeśli dla dwuosobowej liczby osób lub więcej cen plan podróży.

W tym przykładzie odwołujemy się do wstępnie zdefiniowanych metadanych pokoju i pakietu za pomocą atrybutu Elementy <RoomID> i <PackageID>. Zapoznaj się z dokumentami <RoomData> oraz <PackageData>, aby zdefiniować te informacje.

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


Co najmniej 2 osoby

Poniższy przykład zdefiniowano odpowiedź zawierającą co najmniej 2 osoby.

W tym przykładzie odwołujemy się do wstępnie zdefiniowanych metadanych pokoju i pakietu za pomocą atrybutu Elementy <RoomID> i <PackageID>. Zapoznaj się z dokumentami <RoomData> oraz <PackageData>, aby zdefiniować te informacje.

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


Pakiety pokojów

Poniższy przykład pokazuje obłożenie w wielu pakietach sal, aby zademonstrować możliwe ceny za pokój w hostelu.

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

Wiele cen warunkowych

Ten przykład określa stawkę podstawową i kilka stawek warunkowych w elemencie <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>

Wartość <Occupancy> w wiadomości transakcji określa maksymalną liczbę gości za pokój lub pakiet. Pole <OccupancyDetails> może zawierać dodatkowe informacje takie jak liczba i typ gości (dorośli lub dzieci).

Gdy w elemencie <Rates> pojawiają się elementy <Occupancy> i <OccupancyDetails> <Result> lub <RoomBundle>, oznacza to, że stawka jest ograniczona przez poinformuj o obłożeniu.

Składnia

Jeśli występuje ciąg <OccupancyDetails>, jest on zawsze poprzedzony znakiem <Occupancy>. Zwróć uwagę na tę składnię:

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

Elementy potomne

Element <OccupancyDetails> ma te elementy podrzędne:

Element podrzędny Wymagana? Typ Opis
<NumAdults> Required integer Liczba dorosłych gości. min. 1, maks. 20 r.
<Children> Optional Object Kontener na co najmniej 1 element <Child>.
<Child age> Optional integer Maksymalny wiek tego dziecka, na przykład <Child age="17">.

Przykłady

Poniższe przykłady pokazują, jak <OccupancyDetails> może wyglądać w obrębie <Results>, <RoomBundle> lub element podrzędny <Rates>.

Odpowiedź dotycząca wyniku

Ten przykład określa jeden plan podróży i jego cenę w odpowiedzi na zapytanie o cenę w czasie rzeczywistym, w którym użytkownik określił liczby i typów gości. Tutaj <OccupancyDetails> – 2 osoby dorosłe i jedno dziecko – zwracane w komórce <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>

Odpowiedź dotycząca stawek

Ten przykład określa 1 plan podróży i cenę dla 1 osoby dorosłej i 1 dziecko. Tutaj <OccupancyDetails> są zwracane w funkcji <Rates> element <Result>.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
  <Result>
    <Property>8251</Property>
    <Checkin>2018-06-20</Checkin>
    <Nights>1</Nights>
    <Baserate currency="USD">62.18</Baserate>
    <Tax currency="USD">2.45</Tax>
    <OtherFees currency="USD">0.00</OtherFees>
    <Rates>
      <Rate rate_rule_id="rule-951">
        <Occupancy>2</Occupancy>
        <OccupancyDetails>
          <NumAdults>1</NumAdults>
          <Children>
            <Child age="17"/>
          </Children>
        </OccupancyDetails>
        <Baserate currency="USD">42.61</Baserate>
        <Tax currency="USD">5.70</Tax>
        <OtherFees currency="USD">0.00</OtherFees>
        <Custom1>abc4</Custom1>
        <AllowablePointsOfSale>
          <PointOfSale id="yourhotelpartnersite.com"/>
        </AllowablePointsOfSale>
      </Rate>
    </Rates>
  </Result>
</Transaction>

Pakiet pokojów

W poniższym przykładzie określono liczbę osób 2 dorosłych i 1 dziecka za dwie noce, a opłata podlega zwrotowi. Tutaj <OccupancyDetails> są widoczne wewnątrz <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>

Pakiety pokojów

Ten przykład zdefiniowano wiele stawek <RoomBundle>, które są jest przeznaczony dla 2 dorosłych i 2 dzieci. Tutaj <OccupancyDetails> pojawiają się w elemencie <Rates> elementu <RoomBundle>.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <Result>
    <Property>1234</Property>
    <Checkin>2018-06-10</Checkin>
    <Nights>2</Nights>
    <Baserate currency="USD">275.00</Baserate>
    <Tax currency="USD">27.50</Tax>
    <OtherFees currency="USD">0</OtherFees>
    <RoomBundle>
      <RoomID>5</RoomID>
      <PackageID>STD</PackageID>
      <Baserate currency="USD">275.00</Baserate>
      <Tax currency="USD">27.50</Tax>
      <OtherFees currency="USD">0</OtherFees>
      <InternetIncluded>1</InternetIncluded>
      <ChargeCurrency>web</ChargeCurrency>
      <Custom1>ratebasic</Custom1>
      <Custom2>ratebasic</Custom2>
      <Occupancy>4</Occupancy>
      <OccupancyDetails>
          <NumAdults>2</NumAdults>
          <Children>
              <Child age="17"/>
              <Child age="17"/>
          </Children>
      </OccupancyDetails>
      <Rates>
        <Rate rate_rule_id="mobile">
          <Baserate currency="USD">258.33</Baserate>
          <Tax currency="USD">25.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <ChargeCurrency>hotel</ChargeCurrency>
          <Custom1>ratecode321</Custom1>
        </Rate>
        <Rate rate_rule_id="us_or_gb">
          <Baserate currency="USD">268.33</Baserate>
          <Tax currency="USD">26.83</Tax>
          <OtherFees currency="USD">1.00</OtherFees>
          <Custom1>ratecode432</Custom1>
        </Rate>
      </Rates>
    </RoomBundle>
  </Result>
</Transaction>