Żądania
Składnia
Wiadomość OTA_HotelRateAmountNotifRQ
używa tej składni:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
EchoToken="message_ID"
TimeStamp="timestamp"
Version="3.0"
NotifType="[Overlay|Delta|Remove]"
NotifScopeType="[ProductRate]">
<POS>
<Source>
<RequestorID ID="partner_key"/>
</Source>
</POS>
<RateAmountMessages HotelCode="HotelID">
<RateAmountMessage>
<StatusApplicationControl Start="YYYY-MM-DD"
End="YYYY-MM-DD"
Mon="boolean_value"
Tue="boolean_value"
Weds="boolean_value"
Thur="boolean_value"
Fri="boolean_value"
Sat="boolean_value"
Sun="boolean_value"
InvTypeCode="RoomID"
RatePlanCode="PackageID"
RatePlanType="[26]" />
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt AmountBeforeTax="float"
AmountAfterTax="float"
CurrencyCode="currency"
NumberOfGuests="integer"/>
</BaseByGuestAmts>
<AdditionalGuestAmounts>
<AdditionalGuestAmount Amount="float"
AgeQualifyingCode="[10|8]"
MaxAge="integer"/>
</AdditionalGuestAmounts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
Elementy i atrybuty
Wiadomość OTA_HotelRateAmountNotifRQ
zawiera te elementy i atrybuty:
Element / @Attribute | Wystąpienia | Typ | Opis |
---|---|---|---|
OTA_HotelRateAmountNotifRQ | 1 | Complex element | Element główny wiadomości dotyczącej cen. |
OTA_HotelRateAmountNotifRQ / @xmlns | 0..1 | string (URI) | Przestrzeń nazw XML. |
OTA_HotelRateAmountNotifRQ / @EchoToken | 1 | string | Unikalny identyfikator tego komunikatu żądania. Ta wartość jest zwracana w wiadomości z odpowiedzią. Dozwolone znaki to a-z , A-Z , 0-9 , _ (underscore) i - (dash) . |
OTA_HotelRateAmountNotifRQ / @TimeStamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
OTA_HotelRateAmountNotifRQ / @Version | 1 | decimal | Wersja wiadomości OpenTravel. |
OTA_HotelRateAmountNotifRQ / @NotifType | 0..1 | enum | Typ powiadomienia, który ma być stosowany do wszystkich Prawidłowe wartości to: Aby dowiedzieć się, jak działają te atrybuty, zapoznaj się z przykładami.
|
OTA_HotelRateAmountNotifRQ / @NotifScopeType | 0..1 | enum | Zakres Prawidłowe wartości to:
|
OTA_HotelRateAmountNotifRQ / POS | 0..1 | POS | Kontener do określania konta partnera dla tego komunikatu (zazwyczaj używany, jeśli backend udostępnia pliki danych o cenach dla wielu kont partnerów). |
OTA_HotelRateAmountNotifRQ / POS / Source | 1 | Source | Wymagane, jeśli występuje właściwość <POS> . Kontener <RequestorID> . |
OTA_HotelRateAmountNotifRQ / POS / RequestorID | 1 | RequestorID | Wymagane, jeśli występuje właściwość <POS> . Definiuje konto partnera. |
OTA_HotelRateAmountNotifRQ / POS / RequestorID / @ID | 1 | string | Konto partnera, na którym jest wysyłana wiadomość. Ta wartość ciągu znaków to wartość „klucza partnera” podana na
stronie Ustawienia konta w Hotel Center.
Uwaga: jeśli masz backend, który udostępnia pliki danych dla wielu kont, ta wartość musi być zgodna z wartością atrybutu |
OTA_HotelRateAmountNotifRQ / RateAmountMessages | 1 | RateAmountMessages | Zbiór elementów <RateAmountMessage> , które definiują stawki. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / @HotelCode | 1 | string | Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu określonym za pomocą atrybutu <id> w elemencie <listing> w pliku danych z listą hoteli. Identyfikator hotelu jest też widoczny w Hotel Center. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage | 1..n | RateAmountMessage | Konteiner do ustawiania cen za stawkę za pokój (typ pokoju i kombinacja stawki w zakresie dat). |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl | 1 | StatusApplicationControl | Określa zakres dat oraz identyfikatory typu pokoju (InvTypeCode ) i taryfy (RatePlanCode ). |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Start | 1 | Date | Data rozpoczęcia (według strefy czasowej usługi) obejmująca zakres dat. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @End | 1 | Date | Data końcowa (zgodnie ze strefą czasową usługi) zakresu dat. Musi być równa lub większa niż wartość start .
Jeśli wartości start i end są takie same, aktualizacja dotyczy tej daty. Pamiętaj, że Google obsługuje dane z maksymalnie 3 lat. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Mon | 0..1 | boolean | Ustaw jako true lub 1 , aby wyraźnie uwzględnić poniedziałki.
Jeśli ustawisz wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Tue | 0..1 | boolean | Aby wyraźnie uwzględnić w kampanii wtorki, ustaw tę opcję na true lub 1 .
Jeśli ustawisz wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Weds | 0..1 | boolean | Ustaw jako true lub 1 , aby wyraźnie uwzględnić środy.
Jeśli ustawisz wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Thur | 0..1 | boolean | Aby uwzględnić w ramach harmonogramu wtorek, ustaw wartość true lub 1 .
Jeśli ustawisz wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Fri | 0..1 | boolean | Ustaw jako true lub 1 , aby wyraźnie uwzględnić piątki.
Jeśli ustawisz wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sat | 0..1 | boolean | Aby wyraźnie uwzględnić soboty, ustaw opcję na true lub 1 .
Jeśli ustawisz wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sun | 0..1 | boolean | Ustaw jako true lub 1 , aby wyraźnie uwzględnić niedziele.
Jeśli ustawisz wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @InvTypeCode | 1 | string | Unikalny identyfikator asortymentu (typ pokoju). Ta wartość jest mapowana na <RoomID> w wiadomości dotyczącej transakcji (danych usługi). |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanCode | 1 | string | Unikalny identyfikator planu taryfowego. Ten identyfikator jest mapowany na element <PackageID> w komunikacie Transakcja (Dane obiektu). Abonament jest dalej definiowany i wymieniony w <StatusApplicationControl> w komunikatach <OTA_HotelRateAmountNotifRQ> i <OTA_HotelAvailNotifRQ> . |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanType | 0..1 | string | Identyfikator wskazujący typ modelu cen ARI, który ma zastosowanie do tej aktualizacji cen. Należy ją określić tylko za pomocą wartości 26 , gdy używasz modelu ustalania cen na podstawie LOS. Wykluczenie tego atrybutu wskazuje, że jest to aktualizacja ceny według daty. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates | 0..1 | Rates | Kontener na kolekcję elementów <Rate> . Jeśli NotifType = "Remove" , nie należy określać tego elementu. W przeciwnym razie ten element musi być określony dokładnie raz. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate | 1 | Rate | Kontener na kolekcję elementów <BaseByGuestAmts> |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @RateTimeUnit | 0..1 | String | Jednostka, w której określana jest długość pobytu. Jedyną obsługiwaną wartością jest "Day" , co oznacza, że długość pobytu będzie określona w dniach.
Aby używać określania stawek na podstawie LOS, musisz podać wartości |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier | 0..1 | Integer | Liczba RateTimeUnits , która określa długość pobytu w ramach tej stawki.
Jeśli na przykład wartość Stawki zajmu określone w obiekcie Aby używać określania stawek na podstawie LOS, musisz podać wartości |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts | 1 | BaseByGuestAmts | Kontener na zbiór opłat podstawowych. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt | 1..n | BaseByGuestAmt | Określa ceny pokoi w określonej walucie. Cena może być ustalana za osobę za pomocą kilku elementów <BaseByGuestAmt> , z których każdy ma inną wartość atrybutu NumberOfGuests .
W przeciwnym razie cena jest stosowana dla maksymalnej liczby pasażerów określonej przez NumberOfGuests . |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountBeforeTax | 0..1 | float |
Cena za pokój za dzień przed opodatkowaniem i opłatami. Możesz podać zarówno Jeśli korzystasz z promocji, zniżka jest stosowana do |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountAfterTax | 0..1 | float | Cena za dzień pobytu w pokoju po uwzględnieniu obowiązujących podatków i opłat. Jeśli określona jest właściwość AmountAfterTax , nie trzeba wysyłać osobnych wiadomości <TaxFeeInfo> dla poszczególnych właściwości. Tego atrybutu można używać w połączeniu z atrybutem AmountBeforeTax , aby podać zarówno stawki podstawowe, jak i łączne, które mogą być wyświetlane użytkownikom w określonych regionach.
Ostrzeżenie: jeśli korzystasz z promocji, zdecydowanie zalecamy, aby nie używać kwot Uwaga: jeśli nie określono parametru |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @CurrencyCode | 1 | enum | Kod waluty wyrażony literami (3) według normy ISO 4217 dla konkretnej jednostki monetarnej.
Zobacz listę obsługiwanych walut. |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @NumberOfGuests | 0..1 | integer | Maksymalna liczba gości, którzy mogą zatrzymać się w ramach tej stawki.
Jeśli nie zostanie podana, domyślnie jest to 2 osoby.
Pamiętaj, że jeśli |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts | 0..1 | AdditionalGuestAmounts | Kontenery na opłaty za dodatkowych gości.
Ta składnia jest przydatna, jeśli dodatkowe stawki za dodatkowego gościa lub dziecko zmieniają się w zależności od daty. Jeśli kwoty można zdefiniować statycznie na poziomie obiektu, możesz użyć bardziej wydajnego komunikatu
Załóżmy na przykład, że ceny podstawowe są określone dla 1 i 2 osób dorosłych.
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount | 0..n | AdditionalGuestAmount | Określa ceny na podstawie typu gościa określonego w AgeQualifyingCode oraz, w odpowiednich przypadkach, wieku gościa określonego w MaxAge .
|
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @AgeQualifyingCode | 1 | enum | Określa typ dodatkowego gościa: dorosły lub dziecko. Prawidłowe opcje:
Wartość Wartość |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @MaxAge | 0..1 | integer | Wartość MaxAge musi być określona, jeśli wartość AgeQualifyingCode to 8 . Nie można go określić, gdy AgeQualifyingCode to 10 .
Wartość Podanie wartości Wartości większe niż Za pomocą oddzielnych elementów |
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @Amount | 1 | float | Kwota przed podatkami i opłatami dodanymi do stawki podstawowej za każdego dodatkowego gościa.
Podatki i opłaty, które zależą od wieku lokatorów, muszą być określone za pomocą elementu |
Przykłady
W tej sekcji znajdziesz przykłady kodu, które pokazują, jak:
- Konfigurowanie stawek podstawowych i łącznych
- Dodawanie, nakładanie i usuwanie stawek
- Dodawanie, nakładanie i usuwanie dodatkowych ilości gości
- Konfigurowanie stawek na podstawie LOS
- Dodawanie, nakładanie i usuwanie stawek na podstawie LOS
Gdy ustawiasz wartości add
, overlay
lub remove
, zakresy dat mogą być takie same lub różne w zależności od Twoich celów. Na przykład za pomocą parametru overlay
możesz ustawić tylko kilka tygodni na okres świąteczny w grudniu, a nie cały zakres ustawiony dla komunikatu „Dodaj stawkę”. Spowoduje to zastąpienie stawek za obłożenie tylko w tym okresie.
Ceny według daty
W przypadku danego pokoju i planu cenowego można ustawić maksymalnie 50 poziomów obłożenia na obiekt. Jeśli stawki są takie same dla wszystkich liczby osób, wystarczy przesłać maksymalną liczbę osób z wymaganą ceną. W ten sposób Google wnioskuje, że niższe obłożenie również ma tę samą stawkę podstawową.
Konfigurowanie stawek podstawowych i łącznych
Przykład 1
Stawka podstawowa (bez podatków i opłat) za domyślną liczbę osób (2). W tym modelu podatki i opłaty za usługę należy zdefiniować za pomocą wiadomości <TaxFeeInfo>
. Stawka podstawowa będzie bardziej widoczna dla użytkowników wyszukujących w określonych regionach.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Przykład 2
Cena podstawowa i łączna cena za domyślną liczbę osób (2 osoby). W tym modelu podatki i opłaty nie powinny być definiowane osobno za pomocą komunikatów <TaxFeeInfo>
. Stawka podstawowa będzie bardziej widoczna dla użytkowników, którzy szukają w niektórych regionach.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Przykład 3
Łączna cena (z podatkami i opłatami) za pobyt wielu osób. W tym modelu podatki i opłaty nie powinny być definiowane osobno za pomocą komunikatów <TaxFeeInfo>
.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountAfterTax="100.00" CurrencyCode="USD" NumberOfGuests="1"/> <BaseByGuestAmt AmountAfterTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> <BaseByGuestAmt AmountAfterTax="120.00" CurrencyCode="USD" NumberOfGuests="3"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Przykład 4
Stawka podstawowa i łączna stawka za różne typy pokoi i plany cenowe w różnych zakresach dat.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-23" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" AmountAfterTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> <RateAmountMessage> <StatusApplicationControl Start="2020-05-01" End="2020-05-31" InvTypeCode="RoomID_2" RatePlanCode="PackageID_2"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="200.00" AmountAfterTax="220.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Dodawanie, nakładanie i usuwanie stawek
Obowiązuje limit 5000 produktów (typów pokoi i kombinacji pakietów) na usługę. Aby usunąć zdefiniowane wcześniej produkty, użyj typów powiadomień Overlay
lub Remove
.
Dodawanie stawek
Aby dodać ceny za osobę w pokojach RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31, ustaw wartość NotifType
na Delta
. Pamiętaj, że Google obsługuje dane z maksymalnie 3 lat.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD" NumberOfGuests="1"/> <BaseByGuestAmt AmountBeforeTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> <BaseByGuestAmt AmountBeforeTax="120.00" CurrencyCode="USD" NumberOfGuests="3"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Stawki za nakładanie
Ustaw wartość NotifType
na Overlay
, aby usunąć wszystkie stawki za liczbę osób w pokoju RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31 i zastąpić je nowo określonymi stawkami za liczbę osób w pokoju.
Jeśli na przykład wiadomość została wysłana po wiadomości „Dodaj ceny”, ceny za 1, 2 i 3 osoby zostaną usunięte, a tylko cena za 1 osobę zostanie zapisana. Możesz też ustawić krótszy zakres dat (np. 2021-12-20 i 2021-12-31), aby zastąpić tylko niektóre stawki za zakwaterowanie w określonych terminach, np. w święta.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Overlay" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="200.00" CurrencyCode="USD" NumberOfGuests="1"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Usuwanie stawek
Aby usunąć wszystkie stawki za liczbę osób w pokoju RoomID_1 i pakiecie PackageID_1 w okresie od 2021-10-20 do 2021-12-31, ustaw NotifType
na Remove
.
Jeśli na przykład ta wiadomość została wysłana po jednej z innych przykładowych wiadomości, nie są przechowywane żadne stawki za obłożenie.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Remove" NotifScopeType="ProductRate">> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Dodawanie, nakładanie i usuwanie dodatkowych kwot
Dodawanie kwot
Aby dodać ceny podstawowe dla 1 i 2 osób oraz dodatkowej liczby osób w pokoju RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31, ustaw wartość NotifType
na Delta
.
Dodatkowe kwoty za dodatkowe osoby będą naliczane w ramach stawki podstawowej, która będzie określana na podstawie liczby osób w wyszukiwaniu użytkownika. Liczba osób określona przez użytkownika musi mieścić się w pojemności pokoju RoomID_1.
W tym przykładzie dodatkowe kwoty gości zostaną zastosowane w ten sposób:
- 5 USD za dzieci w wieku od 0 do 10 lat (włącznie).
- 10 USD za dzieci w wieku od 11 do 17 lat (włącznie).
- 20 USD dla dorosłych.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD" NumberOfGuests="1"/> <BaseByGuestAmt AmountBeforeTax="110.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount Amount="5.00" AgeQualifyingCode="8" MaxAge="10" /> <AdditionalGuestAmount Amount="10.00" AgeQualifyingCode="8" MaxAge="17" /> <AdditionalGuestAmount Amount="20.00" AgeQualifyingCode="10" /> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Kwoty nakładek
Ustaw wartość NotifType
na Overlay
, aby usunąć wszystkie stawki za liczbę osób i dodatkowe kwoty za dodatkowe osoby w przypadku RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31 i zastąpić je nowo określonymi stawkami za liczbę osób i dodatkowymi kwotami.
Jeśli na przykład wiadomość została wysłana po wiadomości „Dodaj ceny”, ceny za pobyt 1 i 2 osób zostaną usunięte, a w pamięci zostanie zapisana tylko nowa cena za pobyt 1 osoby. Poprzedni zestaw kwot dodatkowych gości zostanie usunięty, a zapisany zostanie tylko nowy zestaw kwot. Liczba dodatkowych osób będzie teraz określana na podstawie stawki za 1 osobę. Po tej aktualizacji nie ma dodatkowych opłat za gości, którzy są dziećmi.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Overlay" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="200.00" CurrencyCode="USD" NumberOfGuests="1"/> </BaseByGuestAmts> <AdditionalGuestAmounts> <AdditionalGuestAmount Amount="30.00" AgeQualifyingCode="10" /> </AdditionalGuestAmounts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Usuwanie kwot
Aby usunąć wszystkie ceny podstawowe za każdą liczbę gości oraz wszystkie kwoty za dodatkowe osoby w pokoju RoomID_1 i pakiecie PackageID_1 w okresie od 2021-10-20 do 2021-12-31, ustaw wartość parametru NotifType
na Delete
.
Jeśli na przykład ta wiadomość została wysłana po wysłaniu jednego z pozostałych przykładowych komunikatów, nie zostaną zapisane żadne stawki podstawowe za osobę ani kwoty za dodatkowe osoby.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Remove" NotifScopeType="ProductRate">> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Usuwanie tylko dodatkowych ilości gości
Ustaw NotifType
na Delta
z pustym elementem <AdditionalGuestAmounts>
, aby usunąć wszystkie kwoty dodatkowych gości dla RoomID_1 i PackageID_1 bez wpływu na stawki podstawowe w okresie od 2021-10-20 do 2021-12-31.
Jeśli na przykład ta wiadomość została wysłana po jednej z innych przykładowych wiadomości, zostaną zapisane tylko kwoty podstawowe.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1"/> <Rates> <Rate> <AdditionalGuestAmounts/> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Cena na podstawie LOS
Konfigurowanie stawek opartych na LOS
Przykład 1
Od 18 maja 2020 r. ustaw stawki za pobyty 1-, 2- i 3-dniowe. W tym przykładzie łączna cena za pobyt na 1, 2 i 3 noce wyniesie odpowiednio 100, 180 i 240 PLN.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-18" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> <Rates> <Rate UnitMultiplier="1" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="100.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> <Rate UnitMultiplier="2" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="90.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> <Rate UnitMultiplier="3" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="80.00" CurrencyCode="USD" NumberOfGuests="2" /> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Dodawanie, nakładanie i usuwanie stawek na podstawie LOS
Dodawanie długości pobytu
W przypadku cen ustalanych na podstawie długości pobytu operacja Delta
umożliwia stopniowe aktualizowanie stawek w zakresie dat zameldowania wskazanych w elemencie <StatusApplicationControl>
oraz dla wszystkich długości pobytu wskazanych przez UnitMultiplier
każdego elementu podrzędnego Rate
.
W przypadku każdej daty zameldowania i długości pobytu należy określić wszystkie stawki za liczbę osób.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0" NotifType="Delta" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-18" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> <Rates> <Rate UnitMultiplier="3" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="80.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Nakładanie długości pobytu
W przypadku ustalania cen na podstawie długości pobytu operacja Overlay
zastępuje stawki za wszystkie długości pobytu produktu i zakres dat zameldowania wskazane w <StatusApplicationControl>
.
W ramach tego komunikatu stawki za liczbę osób w pokoju w przypadku wszystkich długości pobytu w określonym terminie przyjazdu zostaną usunięte i zastąpione stawką za 2 osoby, która jest zdefiniowana tylko w przypadku długości pobytu 3.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2020-05-19T20:50:37-05:00" Version="3.0" NotifType="Overlay" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2020-05-18" End="2020-05-18" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> <Rates> <Rate UnitMultiplier="3" RateTimeUnit="Day"> <BaseByGuestAmts> <BaseByGuestAmt AmountBeforeTax="80.00" CurrencyCode="USD" NumberOfGuests="2"/> </BaseByGuestAmts> </Rate> </Rates> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Usuwanie długości pobytu
W przypadku ustalania cen na podstawie długości pobytu operacja Remove
usuwa stawki za wszystkie długości pobytu produktu i zakres dat zameldowania wskazane w <StatusApplicationControl>
.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0" NotifType="Remove" NotifScopeType="ProductRate"> <RateAmountMessages HotelCode="Property_1"> <RateAmountMessage> <StatusApplicationControl Start="2021-10-20" End="2021-12-31" InvTypeCode="RoomID_1" RatePlanCode="PackageID_1" RatePlanType="26"/> </RateAmountMessage> </RateAmountMessages> </OTA_HotelRateAmountNotifRQ>
Odpowiedzi
Składnia
Wiadomość OTA_HotelRateAmountNotifRS
używa tej składni:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05"
TimeStamp="timestamp"
EchoToken="echo_token"
Version="3.0">
<!-- Either Success or Errors will be populated. -->
<Success/>
<Errors>
<Error Type="12" Status="NotProcessed" ShortText="issue_code">issue_description</Error>
</Errors>
</OTA_HotelRateAmountNotifRS>
Elementy i atrybuty
Wiadomość OTA_HotelRateAmountNotifRS
zawiera te elementy i atrybuty:
Element / @Attribute | Wystąpienia | Typ | Opis |
---|---|---|---|
OTA_HotelRateAmountNotifRS | 1 | Complex element | Element główny odpowiedzi na wiadomość o dostępności. |
OTA_HotelRateAmountNotifRS / @TimeStamp | 1 | DateTime | Data i godzina utworzenia tej wiadomości. |
OTA_HotelRateAmountNotifRS / @EchoToken | 1 | string | Unikalny identyfikator powiązany z wiadomością OTA_HotelRateAmountNotifRQ . |
OTA_HotelRateAmountNotifRS / Success | 0..1 | Success | Wskazuje, że wiadomość OTA_HotelRateAmountNotifRQ została przetworzona.
W każdej wiadomości występuje element |
OTA_HotelRateAmountNotifRS / Errors | 0..1 | Errors | Kontener dla co najmniej 1 problemu napotkanego podczas przetwarzania wiadomości OTA_HotelRateAmountNotifRQ .
W każdej wiadomości występuje element |
OTA_HotelRateAmountNotifRS / Errors / Error | 1..n | Error | Opis błędu, który wystąpił podczas przetwarzania wiadomości OTA_HotelRateAmountNotifRQ . Szczegółowe informacje o tych błędach znajdziesz w artykule Komunikaty o błędach stanu pliku danych. |
OTA_HotelRateAmountNotifRS / Errors / Error / @Type | 1 | integer | OpenTravel Alliance EWT (Error Warning Type) powiązany z błędem. Używana jest tylko wartość 12 (Processing exception) . |
OTA_HotelRateAmountNotifRS / Errors / Error / @Code | 1 | integer | ERR (kod błędu) OpenTravel Alliance powiązany z błędem.
Używana jest tylko wartość 450 (Unable to process) . |
OTA_HotelRateAmountNotifRS / Errors / Error / @Code | 1 | enum | Stan pierwotnego żądania. Używana jest tylko wartość NotProcessed . |
OTA_HotelRateAmountNotifRS / Errors / Error / @ShortText | 1 | string | Identyfikator problemu w Google. Szczegółowe informacje o tych błędach znajdziesz w artykule Komunikaty o błędach stanu pliku danych. |
Przykłady
Sukces
Poniżej znajduje się odpowiedź na pomyślnie przetworzone wiadomość OTA_HotelRateAmountNotifRQ.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0"> <Success/> </OTA_HotelRateAmountNotifRS>
Błędy
Poniżej znajduje się odpowiedź na wiadomość OTA_HotelRateAmountNotifRQ, która nie została przetworzona z powodu błędów.
<?xml version="1.0" encoding="UTF-8"?> <OTA_HotelRateAmountNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="12345678" TimeStamp="2021-10-20T20:50:37-05:00" Version="3.0"> <Errors> <Error Type="12" Code="450" Status="NotProcessed" ShortText="8001">Example</Error> </Errors> </OTA_HotelRateAmountNotifRS>