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 |
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 |
* 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 Wartość |
<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
Użyj osobnego elementu 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,
Użyj osobnego elementu 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 Wartość
|
<OccupancySettings> | Optional | Object | Ustawienia, które mogą ograniczać lub modyfikować wymagania dotyczące liczby osób w
pokoju.
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,
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:
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:
|
<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 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 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:
Element opcjonalnie przyjmuje 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 | 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:
|
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
|
<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 |
<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> <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
Atrybuty opcjonalne są używane tylko wtedy, gdy atrybut W przypadku filtrów posiłków ( |
<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, <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 Wartość Jeśli ten element określisz zarówno w 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 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 |
<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 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:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<MembershipBenefits |
Optional | boolean | Cena uwzględnia korzyści ze statusu Elite za pobyt. Zawiera
następujące parametry:
|
<CarRentalIncluded> | Optional | boolean | Cena obejmuje bezpłatne wypożyczenie samochodu na czas pobytu. |
<MilesIncluded>> | Optional | boolean | Cena obejmuje mile w ramach programu lojalnościowego linii lotniczej. Parametry obejmują:
|
<OnPropertyCredit> | Optional | boolean | W cenę wliczone są środki do wykorzystania na terenie obiektu (żywność i wyżywienie, ośrodek wypoczynkowy, spa itp.). Parametr:
|
<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:
Jeśli sala jest niedostępna w planie podróży,
Pole Aby usunąć pakiet pokoi, wykonaj czynności opisane 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ę. 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:
Wartością domyślną jest |
<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:
Elementy <Niestandardowy> elementy podane w polu |
<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 |
<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 Uwaga: w okresie |
<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 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:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<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 |
<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> :
|
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
<AllowablePointsofSale> 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 |
<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
|
<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.
|
<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 |
<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 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:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<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:
|
<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 |
<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
|
<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ż
Definiując liczbę osób w adresie URL strony docelowej, użyj funkcji
Wartość Uwagi:
|
<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 |
<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 na temat tych opcji
Zasady dotyczące zwrotów.
Poniższy przykład pokazuje <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:
Podczas ustawiania atrybutów pamiętaj o tych kwestiach:
|
<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
Poniższy przykład przedstawia liczbę osób dla 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>