Żądania
Składnia
Wiadomość OTA_HotelRateAmountNotifRQ ma tę 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 z cenami. |
| OTA_HotelRateAmountNotifRQ / @xmlns | 0..1 | string (URI) | Przestrzeń nazw XML. |
| OTA_HotelRateAmountNotifRQ / @EchoToken | 1 | string | Unikalny identyfikator tej wiadomości z żądaniem. 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 | wersję wiadomości OpenTravel; |
| OTA_HotelRateAmountNotifRQ / @NotifType | 0..1 | enum | Typ powiadomienia, które ma być stosowane do każdego 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 (zwykle używany, jeśli backend udostępnia pliki danych o cenach dla wielu kont partnerów). |
| OTA_HotelRateAmountNotifRQ / POS / Source | 1 | Source | Wymagany, jeśli występuje <POS>. Kontener na potrzeby elementu <RequestorID>. |
| OTA_HotelRateAmountNotifRQ / POS / RequestorID | 1 | RequestorID | Wymagany, jeśli występuje <POS>. Definiuje konto partnera. |
| OTA_HotelRateAmountNotifRQ / POS / RequestorID / @ID | 1 | string | Konto partnera, do którego należy ta wiadomość. Ta wartość ciągu znaków to wartość „Klucz 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 | Kolekcja elementów <RateAmountMessage>, które określają stawki. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / @HotelCode | 1 | string | Unikalny identyfikator usługi. Ta wartość musi być zgodna z identyfikatorem hotelu określonym za pomocą elementu <id> w elemencie <listing> w pliku danych z listą hoteli. Identyfikator hotelu jest też podany w Hotel Center. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage | 1..n | RateAmountMessage | Kontener do ustawiania cen za stawkę za pokój (połączenie typu pokoju i abonamentu w określonym zakresie dat). |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl | 1 | StatusApplicationControl | Określa zakres dat oraz identyfikatory typu pokoju (InvTypeCode) i planu cenowego (RatePlanCode). |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Start | 1 | Date | Data rozpoczęcia zakresu dat (włącznie) w strefie czasowej usługi. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @End | 1 | Date | Data zakończenia zakresu dat (włącznie z wartościami granicznymi) na podstawie strefy czasowej usługi. Musi być równa lub większa niż wartość start.
Jeśli wartości start i end są równe, aktualizacja zostanie zastosowana do tej daty. Pamiętaj, że Google obsługuje dane z okresu do 3 lat. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Mon | 0..1 | boolean | Ustaw wartość true lub 1, aby wyraźnie uwzględnić poniedziałki.
Jeśli wartość jest ustawiona na |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Tue | 0..1 | boolean | Ustaw wartość true lub 1, aby wyraźnie uwzględnić wtorki.
Jeśli wartość jest ustawiona na |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Weds | 0..1 | boolean | Ustaw wartość true lub 1, aby wyraźnie uwzględnić środy.
Jeśli wartość jest ustawiona na |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Thur | 0..1 | boolean | Ustaw wartość true lub 1, aby wyraźnie uwzględnić czwartki.
Jeśli wartość jest ustawiona na |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Fri | 0..1 | boolean | Ustaw wartość true lub 1, aby wyraźnie uwzględnić piątki.
Jeśli wartość jest ustawiona na |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sat | 0..1 | boolean | Ustaw na true lub 1, aby wyraźnie uwzględnić soboty.
Jeśli wartość jest ustawiona na |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sun | 0..1 | boolean | Ustaw wartość true lub 1, aby wyraźnie uwzględnić niedziele.
Jeśli wartość jest ustawiona na |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @InvTypeCode | 1 | string | Unikalny identyfikator asortymentu (rodzaju pokoju). Ta wartość jest mapowana na <RoomID> w wiadomości Transaction (Property Data). |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanCode | 1 | string | Unikalny identyfikator planu cenowego. Ten identyfikator jest mapowany na element <PackageID> w wiadomości Transaction (Property Data). Plan taryfowy jest dalej definiowany i określany w <StatusApplicationControl> w wiadomościach <OTA_HotelRateAmountNotifRQ> i <OTA_HotelAvailNotifRQ>. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanType | 0..1 | string | Identyfikator wskazujący typ modelu cenowego ARI, który ma zastosowanie do tej aktualizacji cen. Należy ją określić tylko wtedy, gdy używasz modelu cenowego opartego na długości pobytu, a wartość wynosi 26. Brak tego atrybutu oznacza, że jest to aktualizacja ceny za datę. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates | 0..1 | Rates | Kontener na kolekcję elementów <Rate>. Jeśli wartość parametru NotifType to "Remove", tego elementu nie można określić. W przeciwnym razie ten element musi być określony dokładnie raz. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate | 1 | Rate | Kontener kolekcji 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 podana w dniach.
Aby korzystać z ceny opartej na długości pobytu, należy określić |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier | 0..1 | Integer | Liczba RateTimeUnits, które składają się na długość pobytu w przypadku tej stawki.
Jeśli na przykład wartość Stawki za zajętość określone w tym obiekcie Aby korzystać z ceny opartej na długości pobytu, należy określić |
| 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 wybranej walucie. Cena może być podana za osobę, jeśli użyjesz kilku elementów <BaseByGuestAmt>, z których każdy ma inną wartość atrybutu NumberOfGuests.
W przeciwnym razie cena obowiązuje dla maksymalnej liczby osób określonej przez NumberOfGuests. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountBeforeTax | 0..1 | float |
Cena za pokój za dzień przed uwzględnieniem podatków i opłat. Możesz określić zarówno Jeśli korzystasz z promocji, rabat jest stosowany do |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountAfterTax | 0..1 | float | Cena za dzień po uwzględnieniu obowiązujących podatków i opłat. Jeśli określono wartość AmountAfterTax, nie trzeba wysyłać oddzielnych wiadomości <TaxFeeInfo> dla każdej usługi. Ten atrybut może być używany w połączeniu z atrybutem AmountBeforeTax, aby podawać stawki podstawowe i łączne, które mogą być wyświetlane użytkownikom w określonych regionach.
Ostrzeżenie: jeśli korzystasz z promocji, zdecydowanie odradzamy używanie Uwaga: jeśli nie określono parametru |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @CurrencyCode | 1 | enum | Trzyliterowy kod waluty według normy ISO 4217.
Zapoznaj się z listą obsługiwanych walut. |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @NumberOfGuests | 0..1 | integer | Maksymalna liczba gości, których można zakwaterować w ramach tej ceny.
Jeśli nie podano żadnej wartości, domyślnie są to 2 osoby.
Pamiętaj, że jeśli |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts | 0..1 | AdditionalGuestAmounts | Kontener na zbiór opłat za dodatkowych gości.
Ta składnia jest przydatna, jeśli dodatkowe stawki dla gości lub dzieci zmieniają się w zależności od daty. Jeśli te kwoty można zdefiniować statycznie na poziomie usługi, rozważ użycie 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, podanego za pomocą elementu AgeQualifyingCode, oraz w stosownych przypadkach wieku gościa, podanego za pomocą elementu MaxAge.
|
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @AgeQualifyingCode | 1 | enum | Określa typ dodatkowego gościa: osoba dorosła 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, gdy AgeQualifyingCode ma wartość 8. Nie można go określić, gdy AgeQualifyingCode ma wartość 10.
Wartość flagi Podanie wartości Wartości większe niż Możesz określić wiele przedziałów wiekowych dzieci za pomocą osobnych elementów |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @Amount | 1 | float | Kwota przed opodatkowaniem i opłatami dodana do stawki podstawowej za każdego dodatkowego gościa.
Podatki i opłaty zależne od wieku osób zajmujących pokój muszą być określone za pomocą elementu |
Przykłady
W tej sekcji znajdziesz przykłady kodu, które pokazują, jak:
- Konfigurowanie stawek podstawowych i stawek łącznych
- Dodawanie, nakładanie i usuwanie stawek
- Dodawanie, nakładanie i usuwanie dodatkowych kwot za gości
- Konfigurowanie cen na podstawie długości pobytu
- Dodawanie, nakładanie i usuwanie stawek opartych na długości pobytu
Gdy ustawisz wartości add, overlay lub remove, zakresy dat mogą być takie same lub różne w zależności od Twoich celów. Możesz na przykład użyć wartości overlay, aby ustawić tylko kilka tygodni na okres świąt grudniowych, a nie cały zakres ustawiony dla komunikatu „Dodaj stawkę”. Zastąpi to stawki obłożenia tylko w tym okresie.
Ceny za dzień
W przypadku danego pokoju i planu cenowego może być maksymalnie 50 poziomów obłożenia na obiekt. Jeśli stawki są takie same dla wszystkich rodzajów zakwaterowania, wystarczy przesłać maksymalną liczbę osób z wymaganą ceną. W ten sposób Google wnioskuje, że w przypadku mniejszego obłożenia obowiązuje ta sama stawka podstawowa.
Konfigurowanie stawek podstawowych i całkowitych
Przykład 1
Stawka podstawowa (bez podatków i opłat) dla domyślnego obłożenia (podwójnego). W tym modelu podatki i opłaty za obiekt muszą być zdefiniowane za pomocą wiadomości <TaxFeeInfo>. Stawka podstawowa będzie bardziej widoczna dla użytkowników wyszukujących z określonych regionów.
<?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 dla domyślnego obłożenia (2 osoby). W tym modelu podatki i opłaty nie powinny być definiowane oddzielnie za pomocą komunikatów <TaxFeeInfo>. Stawka podstawowa będzie bardziej widoczna dla użytkowników wyszukujących z określonych regionów.
<?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) przy różnym obłożeniu. W tym modelu podatki i opłaty nie powinny być definiowane oddzielnie 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
stawki podstawowe i całkowite dla wielu typów pokoi i abonamentów 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 kombinacji produktów (rodzaj pokoju i pakiet) na usługę. Użyj typów powiadomień Overlay lub Remove, aby usunąć wcześniej zdefiniowane produkty.
Dodawanie stawek
Ustaw wartość NotifType na Delta, aby dodać stawki za osobę dla
RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31. Pamiętaj, że Google obsługuje dane z okresu do 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ładki
Ustaw NotifType na Overlay, aby usunąć wszystkie stawki za pokój dla RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31 i zastąpić je nowo określonymi stawkami za pokój.
Jeśli na przykład ta wiadomość została wysłana po wiadomości „Dodaj stawki”, stawki za 1, 2 i 3 osoby zostaną usunięte i zapisana zostanie tylko nowa stawka za 1 osobę. Możesz też ustawić krótszy zakres dat (np. 2021-12-20 i 2021-12-31), aby zastąpić tylko niektóre stawki obłożenia w określonych datach, np. w dni świąteczne.
<?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
Ustaw NotifType na Remove, aby usunąć wszystkie stawki za pokój dla poszczególnych osób dla RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31.
Jeśli na przykład ta wiadomość została wysłana po którejś z pozostałych przykładowych wiadomości, nie zostaną zapisane żadne stawki za zajęcie.
<?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 gości
Dodawanie kwot
Ustaw wartość NotifType na Delta, aby dodać stawki podstawowe dla 1 i 2 osób oraz kwoty za dodatkowych gości dla RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31.
Dodatkowe opłaty za gości będą naliczane powyżej stawki podstawowej, która będzie określana na podstawie liczby osób w wyszukiwaniu użytkownika. Określona przez użytkownika liczba osób musi mieścić się w zakresie pojemności pomieszczenia RoomID_1.
W tym przykładzie dodatkowe kwoty za gości zostaną zastosowane w ten sposób:
- 5 USD w przypadku dzieci w wieku od 0 do 10 lat (włącznie).
- 10 USD w przypadku 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 pokój i wszystkie kwoty dodatkowe za gościa dla identyfikatorów RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31 i zastąpić je nowo określonymi stawkami za pokój i kwotami dodatkowymi.
Jeśli na przykład ta wiadomość została wysłana po wiadomości „Dodaj stawki”, stawki podstawowe dla 1 i 2 osób zostaną usunięte i zostanie zapisana tylko nowa stawka podstawowa dla 1 osoby. Poprzedni zestaw dodatkowych kwot za gości zostanie usunięty i zostanie zapisany tylko nowy zestaw kwot. Dodatkowe kwoty dla gości będą teraz korzystać z nowej stawki dla 1 osoby jako stawki podstawowej. Pamiętaj, że po tej aktualizacji nie będą już obowiązywać żadne dodatkowe opłaty za dzieci.
<?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
Ustaw NotifType na Delete, aby usunąć wszystkie stawki podstawowe za pokój i wszystkie dodatkowe kwoty za gościa w przypadku RoomID_1 i PackageID_1 w okresie od 2021-10-20 do 2021-12-31.
Jeśli na przykład ta wiadomość została wysłana po którejś z pozostałych przykładowych wiadomości, nie zostaną zapisane żadne podstawowe stawki za pobyt ani dodatkowe kwoty za gości.
<?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 kwot za dodatkowych gości
Ustaw wartość NotifType na Delta z pustym elementem <AdditionalGuestAmounts>, aby usunąć wszystkie dodatkowe kwoty za gości w przypadku 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 którejś z pozostałych przykładowych wiadomości, zapisane zostaną 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>Ceny zależne od długości pobytu
Konfigurowanie cen na podstawie długości pobytu
Przykład 1
Ustal stawki za pobyt 1-, 2- i 3-dniowy od 2020-05-18. 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 opartych na długości pobytu
Dodawanie długości pobytu
W przypadku cen opartych na długości pobytu operacja Delta umożliwia stopniowe aktualizowanie stawek w przypadku zakresów dat zameldowania wskazanych w elemencie <StatusApplicationControl> oraz wszystkich długości pobytu wskazanych w elemencie podrzędnym Rate elementu UnitMultiplier.
W przypadku każdej odpowiedniej daty zameldowania i długości pobytu należy określić wszystkie stawki za zajęcie pokoju.
<?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 cen opartych na długości pobytu Overlayoperacja zastępuje stawki dla wszystkich długości pobytu produktu i zakresu dat zameldowania wskazanych w <StatusApplicationControl>.
Wiadomość ta spowoduje usunięcie stawek za 1 osobę dla wszystkich długości pobytu w określonych datach przyjazdu i zastąpienie ich stawką za 2 osoby, która jest zdefiniowana tylko dla 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 cen opartych na długości pobytu operacja Remove usuwa stawki dla wszystkich długości pobytu produktu i zakresu dat zameldowania podanego 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 ma tę 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 ma 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 z powiązanejOTA_HotelRateAmountNotifRQ wiadomości. |
| OTA_HotelRateAmountNotifRS / Success | 0..1 | Success | Wskazuje, że wiadomość OTA_HotelRateAmountNotifRQ została przetworzona.
W każdej wiadomości występuje właściwość |
| OTA_HotelRateAmountNotifRS / Errors | 0..1 | Errors | Kontener na co najmniej 1 problem napotkany podczas przetwarzania wiadomości OTA_HotelRateAmountNotifRQ.
W każdej wiadomości występuje właściwość |
| 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 | Typ błędu lub ostrzeżenia OpenTravel Alliance EWT powiązany z błędem. Używana jest tylko wartość 12 (Processing exception). |
| OTA_HotelRateAmountNotifRS / Errors / Error / @Code | 1 | integer | Kod błędu OpenTravel Alliance ERR powiązany z błędem.
Używana jest tylko wartość 450 (Unable to process). |
| OTA_HotelRateAmountNotifRS / Errors / Error / @Code | 1 | enum | Stan pierwotnej prośby. 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
Oto odpowiedź na prawidłowo przetworzoną 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>