Na tej stronie znajdziesz informacje o komunikatach o transakcjach opartych na języku XML.
<Transaction>
Elementem głównym wiadomości dotyczącej transakcji jest <Transaction>
. Jest to kontener zawierający opisowe informacje
o pokojach i pakietach oraz cenach i dostępności pokoi i pakietów.
Element <Transaction>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących transakcji:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Wiadomości, których elementem głównym jest <Transaction>
, wymagają co najmniej 1 elementu podrzędnego. Wiadomości z transakcją mogą zawierać dowolną liczbę elementów podrzędnych, o ile łączny rozmiar wiadomości nie przekracza 100 MB.
Składnia
W elemencie <Transaction>
używana jest taka składnia:
<?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. Zwykle używasz tej opcji, jeśli backend udostępnia pliki danych z cenami dla wielu kont partnerów. Wartość ciągu znaków to wartość „Klucz partnera” podana na stronie Ustawienia konta w Hotel Center. |
timestamp | Required | DateTime | Moment wysłania wiadomości o transakcji. Wszystkie wiadomości z sygnaturą czasową wysłane w ciągu ostatnich 24 godzin zostaną przetworzone, a pozostałe zostaną odrzucone. Wiadomości są przetwarzane w kolejności |
Elementy potomne
Element <Transaction>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<PropertyDataSet> | Optional* | <PropertyDataSet> |
Opisuje konkretne sale i pakiety pokoi. Zwykle używasz tego elementu w oddzielnej wiadomości dotyczącej transakcji do definiowania wspólnych wartości pakietów pokoi i zmniejszania rozmiaru wiadomości o transakcjach. |
<Result> | Optional* | <Result> |
Dane o cenach w planie podróży pokoju lub w elemencie |
* Wymagane jest co najmniej 1 z tych właściwości: <PropertyDataSet> lub <Result> . |
Przykłady
Dane dotyczące pokoju
Poniższy przykład pokazuje dane pokoju w wiadomości dotyczącej 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>
Informacje o cenach
Poniższy przykład pokazuje 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 tym przykładzie określono dane cenowe za okres od 1 do 7 nocy 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>
Ceny podstawowe i warunkowe
Poniższy przykład pokazuje komunikat dotyczący transakcji, który zawiera stawkę podstawową 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>
Usuwanie zasobów reklamowych
Ten przykład usuwa z asortymentu kilka zasobów reklamowych (pobyty na 1 noc w różnych terminach) w przypadku hotelu:
<?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 informacji o sali i pakiecie (lub pakiecie Pokoje) w wiadomości <Transaction>
. Wartości ustawione w hotelu zastępują wartości ustawione na partnera.
Google przechowuje te informacje, więc nie musisz ich definiować za każdym razem, gdy wysyłasz aktualizacje cen.
Element <PropertyDataSet>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących transakcji:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Więcej informacji znajdziesz w artykule na temat metadanych pakietów sal.
Składnia
W elemencie <PropertyDataSet>
używana jest taka składnia:
<?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>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<PackageData> | Optional* | <PackageData> |
Opisuje pakiet pokoi. Te dane są powiązane z partnerem i hotelem, ale nie z planem podróży. Ten element jest podobny do elementu <RoomData> , ale opisuje udogodnienia i warunki, które nie są częścią opisu pokoju fizycznego.
Wskazujesz identyfikator pakietu w aktualizacji cen. Więcej informacji znajdziesz w opisie metadanych pakietów sal. |
<Property> | Required | string | Identyfikator hotelu, którego dotyczą powiązane dane. Wartość tego elementu musi być ciągiem znaków pasującym do wizytówki <id> w pliku danych z listą hoteli.
|
<RoomData> | Optional* | <RoomData> |
Opisuje pomieszczenie. Te dane są powiązane z partnerem i hotelem, ale nie z planem podróży.
Identyfikator pokoju podajesz w informacjach o cenach. |
* Wymagane jest co najmniej 1 z tych właściwości: <PackageData> lub <RoomData> . |
Przykłady
Dane dotyczące sal i pakietów
Ten przykład pokazuje dane dotyczące sal i pakietów w usłudze <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>
Gdy wysyłasz informacje o cenach i dostępności tego pokoju i pakietu, w komunikatach o cenach odwołujesz się do identyfikatorów sal i pakietów. W efekcie rozmiar wiadomości jest mniejszy, a liczba błędów, które mogą wystąpić z powodu zduplikowanych danych. Więcej informacji znajdziesz w artykule Metadane pakietu sali (w języku angielskim).
<RoomData>
Określa niezależne od planu metadane dotyczące pokojów, a także pakiety pokoi (pakiety pokoi to pokoje z dodatkowymi udogodnieniami). Aby ograniczyć powtarzanie danych opisowych w pliku danych z cenami, użyj atrybutu <RoomData>
.
Element <RoomData>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących transakcji:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Elementy <RoomData>
zawierają informacje powiązane z partnerem i hotelem, ale nie z planem podróży. Jego przeznaczeniem jest zbieranie wszystkich
danych niezwiązanych z planem podróży.
Element <RoomData>
jest podobny do elementu <PackageData>
, ale opisuje miejsce fizyczne, a nie udogodnienia i warunki pakietu. Aby podać szczegółowe informacje o pakietach pokoi, użyj kombinacji atrybutów <RoomData>
i <PackageData>
. W przypadku pokoi, które nie są częścią pakietu, użyj tylko <RoomData>
.
Możesz zdefiniować elementy <RoomData>
i <PackageData>
dla tego samego pokoju lub zestawu pokoi. Gdy Google wyświetla w wynikach wyszukiwania ten pokój lub pakiet, będzie zawierał opis z obu tych miejsc, oddzielony łącznikiem.
Więcej informacji znajdziesz w artykule na temat metadanych pakietów sal.
Składnia
W elemencie <RoomData>
używana jest taka składnia:
<?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>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<Capacity> | Optional | integer | Maksymalna liczba gości, jaką pokój może fizycznie pomieścić. Pojemność sali jest równa liczbie osób lub od niej większa.
Jeśli określisz tę wartość, musi ona być równa lub większa od wartości elementu Wartość |
<Description> | Optional | Object | szczegółowy opis pokoju, Ten element powinien zawierać informacje, które nie są opisywane w innych elementach ani w elemencie <Name> . W opisie pokoju nie używaj wielkich liter.
Element
Użyj osobnego elementu Ten przykład pokazuje francuską i angielską wersję opisu pokoju: <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 być zgodna z informacjami wyświetlanymi na stronie docelowej hotelu (dawniej punktu sprzedaży). Nie ustawiaj wartości tego elementu samymi wielkimi literami.
Ten element przyjmuje pojedynczy element podrzędny
Użyj osobnego elementu Poniższy przykład zawiera francuską i angielską wersję nazwy sali: <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órej jest przeznaczona sala.
Na przykład duży apartament może fizycznie pomieścić do 6 osób (liczba miejsc: 6), ale jest przeznaczony tylko dla 4 osób.
Ta wartość nie może być większa od wartości elementu Wartość
|
<OccupancySettings> | Optional | Object | Ustawienia, które mogą ograniczać lub modyfikować wymagania dotyczące obłożenia sali.
Element
<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 lub zestawu. Dla pokoju lub pakietu pokoi możesz określić więcej niż jeden obiekt <PhotoURL> . Każdy adres URL zdjęcia musi zawierać własny element <PhotoURL> .
Ten element pobiera następujące elementy podrzędne:
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 wyposażeniu pokoju. |
<RoomID> | Required | string | Unikalny identyfikator sali. Za pomocą tego identyfikatora możesz dopasować dane dotyczące sal do blokad <Result> w aktualizacji cen. Więcej informacji znajdziesz w artykule na temat metadanych pakietów sal. (Możesz też użyć tego identyfikatora, aby odwoływać się do definicji świetlicy w pojedynczej wiadomości dotyczącej transakcji, gdy definiować dane dotyczące pokoju w tekście). |
Przykłady
Dane dotyczące pokoju
W podanym niżej przykładzie zdefiniowano 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>
Metadane pokoju i pakietu
W podanym niżej przykładzie zdefiniowano 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 z kilkoma salami
W tym przykładzie zdefiniowano metadane sal i pakietów dotyczące wielu pakietów pomieszczeń:
<?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 funkcje znalezione w pokoju.
Element <RoomFeatures>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących transakcji:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<RoomFeatures>
Składnia
W elemencie <RoomFeatures>
używana jest taka składnia:
<?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>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<JapaneseHotelRoomStyle> | Optional | enum | Wskazuje styl japońskiego pokoju hotelowego. Prawidłowe wartości to:
|
<Beds> | Optional | Object | Liczba elementów <Bed> w pokoju jest równa liczbie sal. Pamiętaj, że nie uwzględniamy tu japońskich futonów.
Każdy element
<Bed> zawiera te elementy podrzędne:
<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 pokój jest apartamentem. |
<Capsule> | Optional | empty | Podaj ten element, gdy ten pokój jest salą kapsułową. |
<Roomsharing> | Optional | enum | Czy pokój jest udostępniany innym osobom, takim jak właściciele lub inni goście. Prawidłowe wartości to shared i private . |
<Outdoor> | Optional | empty | Dodaj ten element, gdy pomieszczenie dotyczy hotelu na świeżym powietrzu, który nie ma stałych ścian, instalacji wodno-kanalizacyjnych ani klimatyzacji. Na przykład pokoje hotelowe nie są obiektami zakwaterowania na świeżym powietrzu, a kempingi, w których goście mogą nocować w namiotach, oraz parkingi dla kamperów, do których przyjeżdżają własne kampery, znajdują się na świeżym powietrzu. |
<MobilityAccessible> | Optional | empty | Dodaj ten element, gdy sala jest przystosowana dla osób z niepełnosprawnością ruchową. |
<Smoking> | Optional | enum | Określa, czy pokój jest przeznaczony dla niepalących czy dla palących. Prawidłowe wartości to non_smoking i smoking . |
<BathAndToilet> | Optional | Object | Zawiera informacje o łazienkach i toaletach w pokoju.
Atrybut to:
Element opcjonalnie pobiera te elementy podrzędne:
Przykład: <BathAndToilet relation="separate"> <Bath bathtub="1" shower="1"/> <Toilet electronic_bidet="1" mobility_accessible="1"/> </BathAndToilet> |
<OpenAirBath> | Optional | empty | Dodaj ten element, jeśli w tym pokoju jest prywatna łazienka na świeżym powietrzu. |
<AirConditioning> | Optional | empty | Dodaj ten element, jeśli pokój jest klimatyzowany. |
<Balcony> | Optional | empty | Dodaj ten element, jeśli ten pokój ma balkon lub loża. |
<Views> | Optional | Object | Możliwe opcje:
|
Przykłady
JapaneseHotelRoomStyle
nie ma wartości domyślnej. Pominięcie wartości nie powoduje błędu XML, ale informacje o firmie nie wyświetlają się w wynikach wyszukiwania, gdy użytkownik filtruje według stylu pokoju lub łóżka.
2 łóżka pojedyncze
Poniższy przykład pokazuje, jak użyć właściwości <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
Poniżej znajduje się przykład pokoju japońskiego w stylu western
z 2 łóżkami double
.
<?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>
Styl japoński bez łóżka
Poniżej znajduje się przykład pokoju bez łóżka w japońskim stylu. W przypadku pokoju w stylu japanese
nie jest wymagana informacja o łóżku.
<?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
Poniżej znajduje się przykład pokoju w stylu japanese_western
z łóżkiem o rozmiarze king
.
<?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
pokojach, skorzystaj z tego przykładu:
<?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>
Określa niezależne od planu metadane dotyczące pakietów pokojów danego obiektu. Ten element zawiera informacje powiązane z partnerem i hotelem, ale nie z planem podróży. Jego celem jest jednorazowe zdefiniowanie wszystkich danych niezwiązanych z trasą i odwołanie ich do danych dotyczących planu podróży.
Element <PackageData>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących 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 cenami i hasła, które nie są częścią opisu fizycznego pomieszczenia. Stosując połączenia <RoomData>
i <PackageData>
, możesz podawać szczegółowe informacje o pakietach sal i funkcjach cen. W przypadku pokoi, które nie są częścią pakietu, użyj tylko <RoomData>
.
Możesz zdefiniować elementy <RoomData>
i <PackageData>
dla tego samego pokoju lub pakietu. Gdy Google wyświetla w wynikach wyszukiwania ten pokój lub pakiet, będzie zawierał opis z obu tych miejsc, oddzielony łącznikiem.
Jeśli aktualizujesz pojedynczy element <PackageData>
właściwości, musisz zaktualizować wszystkie jej elementy <PackageData>
i <RoomData>
.
Każdy element <PropertyDataSet>
jest traktowany jako wszystkie dane o usłudze i zastępuje wszystkie istniejące dane.
Więcej informacji znajdziesz w artykule na temat metadanych pakietów sal.
Składnia
W elemencie <PackageData>
używana jest taka składnia:
<?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>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<BreakfastIncluded> | Optional | boolean | Określa, czy pakiet obejmuje śniadanie w cenie.
Prawidłowe wartości to 0 (lub false ) i 1 (lub true ).
Zaleca się użycie właściwości |
<ChargeCurrency> | Optional | enum | Kiedy i gdzie użytkownik płaci za rezerwację. Ten element używa tej samej składni co <ChargeCurrency> w elemencie <Result> .
Wartością domyślną jest |
<CheckinTime> | Optional | Time | Najwcześniejsza możliwa godzina zameldowania. Czas musi być krótszy niż 24:00 czasu lokalnego hotelu. |
<CheckoutTime> | Optional | Time | Najpóźniejsza możliwa godzina wymeldowania według czasu lokalnego. |
<Description> | Optional | Object | Szczegółowy opis pakietu. Ten element powinien zawierać informacje, które nie są opisywane w innych elementach ani w elemencie <Name> . W opisie pokoju nie używaj wielkich liter.
Element <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, podczas gdy inne pakiety nie obejmują tego udogodnienia. Nie ustawiaj tego elementu w przypadku pakietów pokoi w hotelu, który zapewnia bezpłatny dostęp do internetu we wszystkich pokojach. Nie dotyczy to internetu przewodowego ani bezprzewodowego, które nie jest dostępne w pokojach gościnnych. Prawidłowe wartości to 0 (lub false ) i 1 (lub true ).
|
<Meals> | Optional | Object | Zawiera informacje na temat posiłków w tym pakiecie.
Element
Atrybuty opcjonalne są używane tylko wtedy, gdy Aby filtry posiłków ( |
<Name> | Required | string | Nazwa pakietu. Ta wartość powinna odpowiadać wartości wyświetlanej na stronie docelowej hotelu. Nie ustawiaj wartości tego elementu samymi wielkimi literami.
Ten element przyjmuje pojedynczy element podrzędny <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 jest przeznaczony pakiet pokoi.
Na przykład duży apartament może fizycznie pomieścić do 6 osób, ale jest przeznaczony tylko dla maksymalnie 4 osób.
Ta wartość nie może być większa od wartości elementu Wartość Jeśli określisz ten element zarówno w Uwaga: <Occupancy> może towarzyszyć obiektowi <OccupancyDetails> ,które określa rodzaj gości (dorośli lub dzieci). Informacje o składni i opisach elementów podrzędnych znajdziesz w artykule <OccupancyDetails> .
|
<PackageID> | Required | string | Unikalny identyfikator pakietu. Użyj tego identyfikatora, aby dopasować dane pakietu sal do bloków Możesz też użyć tego identyfikatora, by odwołać się do wspólnej definicji pakietu pokoi w jednej wiadomości dotyczącej transakcji, gdy zdefiniujesz wbudowane dane pakietu pokoju. |
<ParkingIncluded> | Optional | boolean | Określa, czy pakiet pokoi obejmuje bezpłatny parking, gdzie w innym przypadku usługa parkingowa w tym hotelu byłaby płatna. Nie podawaj wartości tego elementu w przypadku hotelu z bezpłatnym parkingiem.
Prawidłowe wartości to |
<PhotoURL> | Optional | Object | (Tak samo jak <PhotoURL> w <RoomData> , ale w przypadku opakowania (np. zdjęć posiłków).)
|
<Refundable> | Optional | Object | Umożliwia podanie ceny jako pełnej zwrotu środków lub jej bezpłatnej anulowania. Jeśli nie zostanie podany, nie wyświetlą się żadne informacje o zwrocie środków.
Zasady zwrotów na poziomie <PackageData> zastępują zasady zwrotów na poziomie <Result> . Zasady zwrotów na poziomie <Rates> zastępują zasady zwrotów na poziomie <PackageData> . Ceny podlegające zwrotom można też informować użytkowników za pomocą alternatywnych opcji bez bezpośredniego modyfikowania schematu wiadomości dotyczących transakcji. Dowiedz się więcej o tych opcjach
Zasady dotyczące zwrotów środków.
Poniższy przykład pokazuje element <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Uwaga: zalecamy ustawienie wszystkich atrybutów. Jeśli nie ustawisz co najmniej 1 atrybutu, zostanie wygenerowane ostrzeżenie o stanie pliku danych. Jeśli nie skonfigurujesz żadnych atrybutów, stawka nie będzie wyświetlana jako podlegająca zwrotowi. Są to:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<MembershipBenefits |
Optional | boolean | Cena obejmuje korzyści, jakie zapewniają status elitarne, za czas pobytu. Zawiera te parametry:
|
<CarRentalIncluded> | Optional | boolean | W cenę pobytu wliczone jest bezpłatne wypożyczenie samochodu na czas pobytu. |
<MilesIncluded>> | Optional | boolean | Stawka obejmuje mile w programie lojalnościowym linii lotniczej. Dostępne parametry:
|
<OnPropertyCredit> | Optional | boolean | Cena obejmuje środki do wykorzystania w miejscu zakwaterowania (hotel, ośrodek, spa itp.). Parametr:
|
<AirportTransportationIncluded> | Optional | Object | W cenę wliczony jest transport między hotelem a pobliskim lotniskiem. Opcjonalny atrybut direction określa kierunkowość transportu. Prawidłowe wartości to:
from : transport z lotniska do obiektu Jest to wartość domyślna, jeśli nie określono kierunku.
to : zapewniany jest transport z obiektu na lotnisko.
round_trip : zapewniany jest transport zarówno z lotniska, jak i z lotniska.
|
Przykłady
Pakiet 1 pokoju
Poniższy przykład określa zestaw 1 pokoi dla 2 osób (1 osoba dorosła i 1 dziecko) oraz 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 dotyczące pokoju i pakietu
W podanym niżej przykładzie zdefiniowano 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 z kilkoma salami
W tym przykładzie zdefiniowano metadane sal i pakietów dotyczące wielu pakietów pomieszczeń:
<?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 pokoi z cenami
Ten przykład określa metadane dotyczące pomieszczeń i pakietów w przypadku pakietu sal z funkcjami dotyczącymi cen:
<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
W tym przykładzie zdefiniowano metadane pokoju i pakietu dotyczące 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 wiadomości <Transaction>
.
Element <Result>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących transakcji:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
+ ...
Użyj narzędzia <Result>
, aby ustawić lub zaktualizować ceny pokoi oraz określić dostępne zasoby reklamowe. Elementy zdefiniowane w tym elemencie zwykle odwołują się do niezależnych metadanych sali lub pakietu (takich jak opis lub zestaw udogodnień) zdefiniowanych w atrybutach <PackageData>
i <RoomData>
.
Zwykle bardzo często wysyłasz wiadomości z informacjami o aktualizacji cen. Dokładna częstotliwość wykonywania tych czynności i częstotliwość ich wykonywania zależy od wybranego trybu wyświetlania.
Aby usunąć plany podróży, w wiadomości dotyczącej transakcji możesz użyć <Result>
zgodnie z opisem w sekcji Usuwanie zasobów reklamowych.
Więcej informacji o używaniu komunikatów dotyczących transakcji do aktualizowania cen i dostępności znajdziesz w artykule Dodawanie i aktualizowanie zasobów reklamowych.
Pojedyncza wiadomość dotycząca transakcji może zawierać dowolną liczbę elementów <Result>
, ale jej rozmiar nie przekracza 100 MB.
Składnia
W elemencie <Result>
używana jest taka składnia:
<?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ślonej pary hotelu i planu podróży zastąpią wszelkie wcześniejsze (aktualne) ceny znajdujące się w pamięci podręcznej Google. Atrybut scalony pozwala przechowywać dodatkowe ceny w pamięci podręcznej Google bez usuwania informacji o poprzednich cenach. Zapytanie o cenę w czasie rzeczywistym z odpowiedziami na pytania kontekstowe zawsze będzie miało ten atrybut ustawiony na true (niezależnie od odpowiedzi na wiadomość dotyczącą transakcji). |
Elementy potomne
Element <Result>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Co najmniej jedna strona docelowa, która kwalifikuje się do umieszczenia w przypadku danego hotelu. Strona docelowa to witryna, która może obsłużyć proces rezerwacji użytkownika. Aby wyraźnie uwzględnić określoną stronę docelową (i wykluczyć inne), dodaj w pliku stron docelowych co najmniej 1 element <AllowablePointsOfSale> , który pasuje do atrybutu id elementu <PointOfSale> .
Jeśli nie użyjesz tego elementu, wszystkie strony docelowe zdefiniowane w pliku stron docelowych zostaną uznane za kwalifikujące się do wykorzystania do rezerwacji pokoju. Więcej informacji znajdziesz w artykule o składni plików stron docelowych. |
<Baserate> | Optional | float | Cena pokoju za pobyt. Wartość tego elementu powinna wyglądać tak:
Gdy sala jest niedostępna w ramach planu podróży, należy pominąć właściwość Aby usunąć pakiet pokoi, postępuj zgodnie z instrukcjami w artykule Usuwanie pakietu pokoi. Pole <Baserate currency="USD">1200.40</Baserate> Element
|
<ChargeCurrency> | Optional | enum | Kiedy i gdzie użytkownik płaci za rezerwację. Tego elementu można używać w wiadomości o transakcji w elemencie <Result> dotyczącym ceny hotelu lub bloku <PackageData> w przypadku pakietu pokoi.
Prawidłowe wartości to:
Wartością domyślną jest |
<Checkin> | Required | Date | Data zameldowania w planie podróży podana w formacie Data. Kombinacja elementów <Nights> i <Checkin> tworzy plan podróży. |
<Custom[1‑5]> | Optional | string | Określa pole niestandardowe, które może służyć do przekazywania dodatkowych danych powiązanych z hotelem. Możesz przekazać maksymalnie 5 wartości niestandardowych z tymi nazwami elementów:
Elementy Elementy <Custom> podane w elemencie |
<ExpirationTime> | Optional | DateTime | Data i godzina, kiedy cena uznaje się za wygasła (minimum 3 godziny).
Nie zalecamy podawania sygnatur czasowych ważności, jeśli nie są one niezbędne dla struktury cen. Google nie obsługuje cen, które straciły ważność, a każdy plan podróży, którego cena wygasła, będzie kwalifikować się do zapytania o ceny na żywo. |
<Nights> | Required | integer | Liczba nocy w planie podróży. Wartość elementu <Nights> musi być dodatnią liczbą całkowitą.
Kombinacja właściwości <Nights> i <Checkin> tworzy plan podróży. |
<OtherFees> | Optional | float | Opłaty inne niż stawka podstawowa i podatki, które wpływają na ostateczną cenę pokoju. Element <OtherFees> przyjmuje 1 wymagany atrybut currency , który określa trzyliterowy kod waluty opłat. Na przykład: USD .
Element |
<Occupancy> | Optional | integer | Określa maksymalną liczbę osób.
Jeśli element <Occupancy> należy do kategorii <Result> , musi zawierać wartość 2 lub większą. Obok <Occupancy> może towarzyszyć atrybut <OccupancyDetails> , który określa rodzaj gości (dorośli lub dzieci). Informacje o składni i opisie elementów podrzędnych znajdziesz w sekcji <OccupancyDetails> . Jeśli nie podano elementu <Occupancy> , zajętość jest domyślnie ustawiona na 2 .
Uwaga: skontaktuj się z zespołem pomocy, aby włączyć funkcję przesyłania cen za obłożenie inne niż podwójne. |
<PackageID> | Optional | string | Unikalny identyfikator pakietu, który pozwala zmapować go na wstępnie zdefiniowane dane pakietu. Służy też do wypełniania zmiennej strony docelowej PACKAGE-ID. Więcej informacji znajdziesz w opisie metadanych pakietów sal. |
<Property> | Required | string | Identyfikator hotelu, na który mają wpływ powiązane dane (cena, plan podróży, pakiet pokoi lub metadane). Wartość tego elementu musi być ciągiem znaków. Wartość tego elementu musi odpowiadać wartości <id> określonej w pliku danych z listą hoteli.
|
<Rates> | Optional | <Rates> |
Kontener na co najmniej 1 blok <Rate> . Każdy obiekt <Rate> w regionie <Rates> określa inną cenę za pokój i plan podróży.
Używaj elementu |
<Refundable> | Optional | Object | Umożliwia podanie ceny jako pełnej zwrotu środków lub jej bezpłatnej anulowania. Jeśli nie zostanie podany, nie wyświetlą się żadne informacje o zwrocie środków.
Zasady zwrotów na poziomie <PackageData> zastępują zasady zwrotów na poziomie <Result> . Zasady zwrotów na poziomie <Rates> zastępują zasady zwrotów na poziomie <PackageData> . Ceny podlegające zwrotom można też informować użytkowników za pomocą alternatywnych opcji bez bezpośredniego modyfikowania schematu wiadomości dotyczących transakcji. Dowiedz się więcej o zasadach dotyczących zwrotów środków.
Poniższy przykład pokazuje element <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Uwaga: zalecamy ustawienie wszystkich atrybutów. Jeśli nie ustawisz co najmniej 1 atrybutu, zostanie wygenerowane ostrzeżenie o stanie pliku danych. Jeśli nie skonfigurujesz żadnych atrybutów, stawka nie będzie wyświetlana jako podlegająca zwrotowi. Są to:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<RoomBundle> | Optional | <RoomBundle> |
Kontener informacji na temat cennych fizycznych opisów pokoju, pakietów udogodnień i niektórych szczegółów dotyczących zasad zakupu dotyczących danego hotelu i planu podróży.
Ogólnie rzecz biorąc, ten element służy do określania cen pokoju podstawowego i różnych typów pokoi w tej samej usłudze. Opisy pakietów pokoi można definiować w tekście, ale informacje te należy definiować w osobnym komunikacie dotyczącym transakcji. Google będzie przechowywać metadane, aby umożliwić Ci odwoływanie się do nich, zamiast powtarzać je przy kolejnych zmianach cen. |
<RoomID> | Optional | string | Unikalny identyfikator sali do zmapowania na wstępnie zdefiniowane dane sali. Służy też do wypełniania zmiennej strony docelowej „PARTNER-ROOM-ID”. Więcej informacji znajdziesz w opisie metadanych pakietów sal. |
<Tax> | Optional | float | Podatki obliczane dla ostatecznej ceny pokoju.
Element <Tax> przyjmuje 1 wymagany atrybut currency , który określa trzyliterowy kod waluty na potrzeby podatków. Na przykład: USD . Element <Tax> jest wymagany, jeśli <Baserate> ma wartość większą niż 0. |
<Unavailable> | Optional | Object | wskazuje, że planu podróży nie można zarezerwować. Pełni funkcję kontenera do podawania bardziej szczegółowych powodów, dla których plan podróży był niedostępny. Pod tagiem <Unavailable> może znajdować się co najmniej 1 z tych przyczyn niedostępności:
|
Przykłady
Przykład z wieloma usługami
W tym przykładzie zdefiniowano 1 plan podróży i jej ceny dla 2 obiektów:
<?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>
W tym przykładzie nie ma informacji o sali, takich jak opis, zdjęcie i podpis, nazwa sali i jej pojemność.
Te informacje możesz zdefiniować raz w osobnej wiadomości o transakcji przechowywanej przez Google. Możesz odwoływać się do niego podczas kolejnych aktualizacji cen i asortymentu. Więcej informacji znajdziesz w artykule na temat metadanych pakietów sal.
Przykład wiele stawek
Poniższy przykład pokazuje 1 plan podróży i jedną właściwość z wieloma stawkami dla różnych miejsc. Elementu <Rates>
można używać do określania cen z wieloma stawkami dla określonej usługi. Ten przykład jest też przydatny w przypadku usług kwater wakacyjnych (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
Poniższy przykład pokazuje jeden plan podróży, którego dostępności nie udało się pobrać z kanałów podrzędnych: drugi jest poniżej minimalnej liczby noclegów i został już zarezerwowany na określone daty, oraz trzeci, którego obiekt jest zamknięty w dniu przyjazdu, ale otwiera się w trakcie pobytu:
<?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>
. Każdy obiekt <Rate>
w lokalizacji <Rates>
określa inną cenę pokoju lub planu podróży.
Używaj elementu <Rates>
tylko wtedy, gdy istnieje kilka cen dotyczących tej samej sali lub planu podróży. Możesz na przykład zdefiniować wiele stawek za ceny warunkowe, ceny prywatne lub ceny warunkowe w pakietach pokoi.
Element <Rates>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących transakcji:
+<Transaction>
+<PropertyDataSet>
// Room and package metadata + <Property> +<RoomData>
+<PackageData>
+<Result>
// Pricing and availability +<Rates>
+<RoomBundle>
(Can also contain<Rates>
) + ...
Wartości ustawione w elemencie <Rate>
zastępują wartości związane z cenami w elemencie nadrzędnym <Result>
lub <RoomBundle>
. Jeśli nie są ustawione w elemencie <Rate>
, dziedziczą wartość z elementu nadrzędnego. Do elementu <RoomBundle>
jest dziedziczony tylko element <AllowablePointsofSale>.
Składnia
W elemencie <Rates>
używana jest taka składnia:
<?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 | W przypadku cen warunkowych ten identyfikator odpowiada stawce określonej w pliku definicji reguły ceny. Limit znaków w tym polu to 40 znaków. |
Elementy potomne
Element <Rates>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<AllowablePointsOfSale> | Optional | Object | Co najmniej jedna strona docelowa, która kwalifikuje się do umieszczenia w przypadku danego hotelu. Ten element używa tej samej składni co <AllowablePointsOfSale> w elemencie <Result> . |
<Baserate> | Required | float | Cena pokoju za pobyt. Ten element używa tej samej składni co <Baserate> w elemencie <Result> .
Uwaga: nie można określić elementu podrzędnego |
<ChargeCurrency> | Optional | enum | Kiedy i gdzie użytkownik płaci za rezerwację. Ten element używa tej samej składni co <ChargeCurrency> w elemencie <Result> . |
<Custom[1‑5]> | Optional | string | Pola niestandardowe, których możesz używać do przekazywania na stronę docelową dodatkowych danych związanych z hotelem. Ten element używa tej samej składni co <Custom[1‑5]> w elemencie <Result> . Obowiązuje limit 200 znaków na każde pole niestandardowe. Więcej informacji znajdziesz w artykule o
plikach stron docelowych.
Jeśli w elemencie |
<ExpirationTime> | Optional | DateTime | Data i godzina, według których stawka została uznana za nieważną. Ten element używa tej samej składni co <ExpirationTime> w elemencie <Result> . |
<Occupancy> | Optional | integer | Określa maksymalną liczbę osób.
|
<OtherFees> | Required | float | Opłaty inne niż stawka podstawowa i podatki, które wpływają na ostateczną cenę pokoju. Ten element używa tej samej składni co <OtherFees> w elemencie <Result> . |
<Refundable> | Optional | Object | Umożliwia podanie ceny jako pełnej zwrotu środków lub jej bezpłatnej anulowania. Jeśli nie zostanie podany, nie wyświetlą się żadne informacje o zwrocie środków.
Zasady zwrotów na poziomie <PackageData> zastępują zasady zwrotów na poziomie <Result> . Zasady zwrotów na poziomie <Rates> zastępują zasady zwrotów na poziomie <PackageData> . Ceny podlegające zwrotom można też informować użytkowników za pomocą alternatywnych opcji bez bezpośredniego modyfikowania schematu wiadomości dotyczących transakcji. Dowiedz się więcej o tych opcjach
Zasady dotyczące zwrotów środków.
Poniższy przykład pokazuje element <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Uwaga: zalecamy ustawienie wszystkich atrybutów. Jeśli nie ustawisz co najmniej 1 atrybutu, zostanie wygenerowane ostrzeżenie o stanie pliku danych. Jeśli nie skonfigurujesz żadnych atrybutów, stawka nie będzie wyświetlana jako podlegająca zwrotowi. Są to:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<Tax> | Required | float | Podatki obliczane dla ostatecznej ceny pokoju. Ten element używa tej samej składni co <Tax> w <Result> . |
Przykłady
Stawka podstawowa i cena warunkowa
Poniższy przykład pokazuje komunikat dotyczący transakcji, który zawiera stawkę podstawową i stawkę 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>
Wiele cen warunkowych
Poniższy przykład określa stawkę podstawową i wiele cen warunkowych w obrębie <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 pokoi jako elementów podrzędnych <Result>
w wiadomości <Transaction>
. Zdefiniuj osobny element
dla każdej kombinacji pakietu lub planu podróży. Aby zdefiniować pakiet i warunki pakietów sal, użyj funkcji <RoomData>
.
Element <RoomBundle>
pojawia się w tym miejscu w hierarchii XML wiadomości dotyczących 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 sal.
Składnia
W elemencie <RoomBundle>
używana jest taka składnia:
<?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>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<Baserate> | Required | float | Określa cenę pakietu pokoi za pobyt. Ten element używa tej samej składni co <Baserate> w elemencie <Result> , z tym wyjątkiem:
|
<BreakfastIncluded> | Optional | boolean | Określa, czy pakiet obejmuje śniadanie w cenie. |
<ChargeCurrency> | Optional | enum | Kiedy i gdzie użytkownik płaci za rezerwację. Ten element używa tej samej składni co <ChargeCurrency> w elemencie <Result> .
Wartością domyślną jest |
<Custom[1‑5]> | Optional | string | Pola niestandardowe do przekazywania dodatkowych danych do stron docelowych pakietu pokoi. Użyj tej samej składni co <Custom[1-5]> w elemencie <Result> . Obowiązuje limit 200 znaków na każde pole niestandardowe. Więcej informacji znajdziesz w artykule o plikach stron docelowych.
Jeśli w elemencie |
<InternetIncluded> | Optional | boolean | Pakiet pokoi obejmuje bezpłatny dostęp do internetu, a inne pakiety nie obejmują tego udogodnienia. Nie ustawiaj tego elementu w przypadku pakietów pokoi w hotelu, który zapewnia bezpłatny dostęp do internetu we wszystkich pokojach. Nie dotyczy to internetu przewodowego ani bezprzewodowego, które nie jest dostępne w pokojach gościnnych. |
<Occupancy> | Required | integer | Maksymalna liczba gości, dla których przeznaczony jest pakiet pokoi. Na przykład duży apartament może fizycznie pomieścić 6 osób, ale „pakiet poślubny” jest przeznaczony tylko dla 2 osób.
Ta wartość nie może być większa niż Do określania obłożenia w adresie URL strony docelowej użyj zmiennych Wartość Uwagi:
|
<OtherFees> | Required | float | Opłaty inne niż stawka podstawowa i podatki, które wpływają na ostateczną cenę pokoju. Element <OtherFees> przyjmuje 1 wymagany atrybut currency , który określa trzyliterowy kod waluty opłat. Na przykład USD w przypadku złotego. |
<PackageID> | Optional (recommended) | string | Unikalny identyfikator danych pakietu. Za pomocą tego identyfikatora możesz dopasować dane pakietu pokoi do danych wysłanych w <PackageData> . Więcej informacji znajdziesz w opisie metadanych pakietów sal. Możesz też użyć tego identyfikatora, by odwołać się do wspólnej definicji pakietu pokoi w jednej wiadomości dotyczącej transakcji, gdy zdefiniujesz wbudowane dane pakietu pokoju. |
<ParkingIncluded> | Optional | boolean | Określa, czy pakiet pokoi obejmuje bezpłatny parking, gdzie w innym przypadku usługa parkingowa w tym hotelu byłaby płatna. Nie podawaj wartości tego elementu w przypadku hotelu z bezpłatnym parkingiem.
Prawidłowe wartości to |
<RatePlanID> | Optional | string | Identyfikator abonamentu to unikalny identyfikator kombinacji pokoju i pakietu. Na przykład jeśli <RoomID> ma wartość 5, a <PackageID> wartość ABC, możesz użyć wartości 5-ABC dla <RatePlanID> . Zdecydowanie zalecamy korzystanie ze zmiennej RatePlanID jako zmiennej przy tworzeniu adresu URL dynamicznej strony docelowej (wcześniej punktu sprzedaży).
Więcej informacji znajdziesz w artykule o używaniu zmiennych i warunków. |
<Rates> | Optional | <Rates> |
Stawki, które zastępują wartości domyślne w tym pakiecie pokoi. Ten element używa takiej samej składni jak <Rates> w elemencie <Result> . |
<Refundable> | Optional | Object | Umożliwia podanie ceny jako pełnej zwrotu środków lub jej bezpłatnej anulowania. Jeśli nie zostanie podany, nie wyświetlą się żadne informacje o zwrocie środków.
Zasady zwrotów na poziomie <PackageData> zastępują zasady zwrotów na poziomie <Result> . Zasady zwrotów na poziomie <Rates> zastępują zasady zwrotów na poziomie <PackageData> . Ceny podlegające zwrotom można też informować użytkowników za pomocą alternatywnych opcji bez bezpośredniego modyfikowania schematu wiadomości dotyczących transakcji. Dowiedz się więcej o tych opcjach
Zasady dotyczące zwrotów środków.
Poniższy przykład pokazuje element <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Uwaga: zalecamy ustawienie wszystkich atrybutów. Jeśli nie ustawisz co najmniej 1 atrybutu, zostanie wygenerowane ostrzeżenie o stanie pliku danych. Jeśli nie skonfigurujesz żadnych atrybutów, stawka nie będzie wyświetlana jako podlegająca zwrotowi. Są to:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<RoomID> | Required | string | Unikalny identyfikator danych pokoju. Za pomocą tego identyfikatora możesz dopasować dane pakietu pokoi do danych wysłanych w <RoomData> .
Więcej informacji znajdziesz w artykule o
metadanych pakietu pokoju. (Tego identyfikatora możesz też użyć, aby odwoływać się do definicji świetlicy w pojedynczej wiadomości dotyczącej transakcji, gdy zdefiniujesz źródło danych pokoju). |
<Tax> | Required | float | Podatki obliczane dla ostatecznej ceny pokoju.
Element <Tax> przyjmuje 1 wymagany atrybut currency , który określa trzyliterowy kod waluty na potrzeby podatków. Na przykład USD w przypadku złotego. |
Przykłady
Pakiet dla 1 osoby
Poniższy przykład zawiera odpowiedź z pojedynczym pakietem zajętości.
Gdy użytkownik wybierze w selektorze obłożenia nazwę 1
, Google wyświetli najniższą kwalifikującą się cenę niezależnie od liczby osób.
Jeśli cena za 1 osobę nie jest dostępna, Google wyświetli najniższą cenę za 2 osoby. Pamiętaj, że zapytania na żywo za 1 osobę nie są wyświetlane w odpowiedzi na zapytania, jeśli pobyt w przypadku podwójnych lub dodatkowych cen dotyczących planu podróży jest przechowywany w pamięci podręcznej.
W tym przykładzie odwołuje się do wstępnie zdefiniowanych metadanych sal i pakietów za pomocą elementów <RoomID>
i <PackageID>
. Aby określić te informacje, użyj elementów <RoomData>
i <PackageData>
.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<!-- Note: Once defined it does not have to be repeated for future
Transaction Messages.
PropertyDataSets can also be defined and sent in their own
Transaction Message separately from pricing. Google can be
configured to pull just PropertyDataSets once per day
(or on a predefined frequency). -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P11111</PackageID>
<Occupancy>1</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P54321</PackageID>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<Result>
<!-- Single occupancy pricing will be specified in a room bundle below -->
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Base Room Bundle -->
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P54321</PackageID>
<Baserate currency="USD">199.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P54321</RatePlanID>
</RoomBundle>
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P11111</PackageID>
<!-- Price for 1 ("occupancy") is the lowest price and will be
displayed -->
<Baserate currency="USD">174.99</Baserate>
<Tax currency="USD">22.08</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P11111</RatePlanID>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
occupancy will be displayed-->
<Baserate currency="USD">298.88</Baserate>
<Tax currency="USD">42.12</Tax>
<OtherFees currency="USD">10.00</OtherFees>
<RatePlanID>436233-P12345</RatePlanID>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 1 or more occupancies..-->
</Result>
</Transaction>
Co najmniej 2 osoby
Poniższy przykład definiuje odpowiedź zawierającą co najmniej 2 zajęcia.
W tym przykładzie odwołuje się do wstępnie zdefiniowanych metadanych sal i pakietów za pomocą elementów <RoomID>
i <PackageID>
. Aby określić te informacje, użyj elementów <RoomData>
i <PackageData>
.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="12345678">
<!-- Efficient method of defining Room Bundles-->
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P33333</PackageID>
<Occupancy>3</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<Result>
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<!-- Base Room Bundle -->
<RoomBundle>
<!-- Baserate above and attributes must match atleast one room bundle
below -->
<RoomID>060773</RoomID>
<PackageID>P33333</PackageID>
<Baserate currency="USD">499.99</Baserate>
<Tax currency="USD">55.12</Tax>
<OtherFees currency="USD">22.00</OtherFees>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
<Baserate currency="USD">598.88</Baserate>
<Tax currency="USD">62.12</Tax>
<OtherFees currency="USD">30.00</OtherFees>
</RoomBundle>
<!-- ..Continue providing all available RoomBundle rates under matched
property for 2 or more occupancies..-->
</Result>
</Transaction>
Pakiety z kilkoma salami
Poniższy przykład określa liczbę obłożenia w wielu pakietach sal, aby zademonstrować możliwe ceny pokoi w hostelach.
<?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
Poniższy przykład określa stawkę podstawową i wiele cen warunkowych w obrębie <RoomBundle>
:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Custom1>ratebasic</Custom1>
<!-- Neither rate overrides Custom2. -->
<Custom2>ratebasic</Custom2>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode321</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides Custom1 from roombundle. -->
<Custom1>ratecode432</Custom1>
<!-- Custom2 is inherited from roombundle. -->
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
<OccupancyDetails>
<Occupancy>
w wiadomości o transakcji określa maksymalną liczbę gości na pokój lub pakiet. <OccupancyDetails>
może zawierać dodatkowe informacje, takie jak liczba i rodzaj gości (osoby dorosłe lub dzieci).
Gdy <Occupancy>
i <OccupancyDetails>
pojawiają się w elemencie <Rates>
w elemencie <Result>
lub <RoomBundle>
, oznacza to, że częstotliwość jest ograniczona przez szczegółowe informacje o obłożeniu.
Składnia
Gdy występuje <OccupancyDetails>
, jest zawsze poprzedzony ciągiem <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>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Opis |
---|---|---|---|
<NumAdults> | Required | integer | Liczba dorosłych gości. min.: 1, maks.:20. |
<Children> | Optional | Object | Kontener dla co najmniej jednego elementu <Child> . |
<Child age> | Optional | integer | Maksymalny wiek tego konta dziecka – na przykład <Child age="17"> . |
Przykłady
Poniższe przykłady pokazują, jak element <OccupancyDetails>
może wyglądać w obrębie elementu <Results>
, <RoomBundle>
lub elementu podrzędnego <Rates>
.
Odpowiedź dotycząca wyniku
W poniższym przykładzie zdefiniowano jeden plan podróży i ceny dla jednej usługi w odpowiedzi na zapytanie o rzeczywistą cenę, w którym użytkownik podał liczbę i typy gości. Tutaj <OccupancyDetails>
– 2 osoby dorosłe i 1 dziecko – są zwracane w ciągu <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>
Stawki za odpowiedź
Poniższy przykład określa 1 plan podróży i ceny dla 1 osoby dorosłej i 1 dziecka. Tutaj <OccupancyDetails>
zwracany jest element <Rates>
właściwości <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 pokoi
Poniższy przykład określa liczbę osób 2 dorosłych i 1 dziecko na 2 noce i obowiązuje stawka zwrotu środków. <OccupancyDetails>
wewnątrz elementu <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 z kilkoma salami
Poniższy przykład określa kilka stawek <RoomBundle>
, które są ograniczone do 2 dorosłych i 2 dzieci. Tutaj <OccupancyDetails>
występuje w elemencie <Rates>
w elemencie <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>