OTA_HotelRateAmountNotifRQ

Запросы

Синтаксис

Сообщение OTA_HotelRateAmountNotifRQ использует следующий синтаксис:

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

Элементы и атрибуты

Сообщение OTA_HotelRateAmountNotifRQ содержит следующие элементы и атрибуты:

Элемент / @атрибут Количество Тип Описание
OTA_HotelRateAmountNotifRQ 1 Complex element Корневой элемент для сообщения о тарифах.
OTA_HotelRateAmountNotifRQ / @xmlns 0..1 string (URI) Пространство имен XML.
OTA_HotelRateAmountNotifRQ / @EchoToken 1 string Уникальный идентификатор этого сообщения запроса. Это значение возвращается в ответном сообщении. Допустимые символы: a-z, A-Z, 0-9, _ (underscore) и - (dash).
OTA_HotelRateAmountNotifRQ / @TimeStamp 1 DateTime Дата и время создания этого сообщения.
OTA_HotelRateAmountNotifRQ / @Version 1 decimal Версия сообщения OpenTravel.
OTA_HotelRateAmountNotifRQ / @NotifType 0..1 enum

Тип уведомления, которое будет применяться к каждому объекту <RateAmountMessage>.

Допустимые значения:

Чтобы понять, как работают эти атрибуты, ознакомьтесь с примерами.

  • Overlay: Удалить все цены за размещение для типа номера, тарифного плана и дат, указанных в <StatusApplicationControl>, и заменить их новыми ценами.
  • Remove: Удалить все существующие цены за размещение для типа номера, тарифного плана и дат, указанных в <StatusApplicationControl>.
  • Delta: (значение по умолчанию, если не указано значение NotifType). Добавьте или обновите существующие цены за размещение для типа номера, тарифного плана и дат, указанных в <StatusApplicationControl>.
OTA_HotelRateAmountNotifRQ / @NotifScopeType 0..1 enum

Область действия NotifType, которая будет применяться к каждому <RateAmountMessage>.

Допустимые значения:

  • ProductRate: (значение по умолчанию, если NotifScopeType не указано). NotifType применяется к продуктам – комбинациям типа номера (InvTypeCode) и тарифного плана (RatePlanCode).
OTA_HotelRateAmountNotifRQ / POS 0..1 POS Контейнер, в котором указывается аккаунт партнера для этого сообщения (обычно используется, если ваш сервер предоставляет фиды с ценами для нескольких аккаунтов партнеров).
OTA_HotelRateAmountNotifRQ / POS / Source 1 Source Обязательно, если указано значение <POS>. Контейнер для <RequestorID>.
OTA_HotelRateAmountNotifRQ / POS / RequestorID 1 RequestorID Обязательно, если указано значение <POS>. Определяет аккаунт партнера.
OTA_HotelRateAmountNotifRQ / POS / RequestorID / @ID 1 string Аккаунт партнера для этого сообщения. Это строковое значение, которое соответствует значению "Ключ партнера" на странице настроек аккаунта в Hotel Center.

Примечание. Если у вас есть сервер, который предоставляет фиды для нескольких аккаунтов, это значение должно совпадать со значением атрибута partner сообщения Transaction (Property Data) и значением атрибута ID в элементе <RequestorID> сообщения <OTA_HotelAvailNotifRQ> для того же аккаунта.

OTA_HotelRateAmountNotifRQ / RateAmountMessages 1 RateAmountMessages Набор элементов <RateAmountMessage>, определяющих тарифы.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / @HotelCode 1 string Уникальный идентификатор ресурса. Это значение должно совпадать с идентификатором гостиницы, указанным в элементе <id> в элементе <listing> в фиде со списком гостиниц. Идентификатор гостиницы также указан в Hotel Center.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage 1..n RateAmountMessage Контейнер для настройки цен за номер (комбинация типа номера и тарифного плана в диапазоне дат).
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl 1 StatusApplicationControl Определяет диапазон дат, а также идентификаторы типа номера (InvTypeCode) и тарифного плана (RatePlanCode).
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Start 1 Date Дата начала диапазона дат (включая ее) в часовом поясе ресурса.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @End 1 Date Дата окончания диапазона дат (включительно) по часовому поясу ресурса. Значение должно быть больше или равно значению start. Если значения start и end совпадают, то обновление применяется к этой дате. Обратите внимание, что Google поддерживает данные за период до трех лет.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Mon 0..1 boolean Укажите true или 1, чтобы явно включить понедельники.

Если задано значение true, другие дни недели, для которых не задано значение true, исключаются (фактически они отфильтровываются из дат в пределах Start и End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Tue 0..1 boolean Укажите true или 1, чтобы включить вторники.

Если задано значение true, другие дни недели, для которых не задано значение true, исключаются (фактически они отфильтровываются из дат в пределах Start и End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Weds 0..1 boolean Укажите значение true или 1, чтобы явно включить среду.

Если задано значение true, другие дни недели, для которых не задано значение true, исключаются (фактически они отфильтровываются из дат в пределах Start и End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Thur 0..1 boolean Укажите значение true или 1, чтобы явно включить четверги.

Если задано значение true, другие дни недели, для которых не задано значение true, исключаются (фактически они отфильтровываются из дат в пределах Start и End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Fri 0..1 boolean Укажите значение true или 1, чтобы явно включить пятницы.

Если задано значение true, другие дни недели, для которых не задано значение true, исключаются (фактически они отфильтровываются из дат в пределах Start и End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sat 0..1 boolean Укажите значение true или 1, чтобы включить субботы.

Если задано значение true, другие дни недели, для которых не задано значение true, исключаются (фактически они отфильтровываются из дат в пределах Start и End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sun 0..1 boolean Чтобы явно включить воскресенья, задайте значение true или 1.

Если задано значение true, другие дни недели, для которых не задано значение true, исключаются (фактически они отфильтровываются из дат в пределах Start и End).

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @InvTypeCode 1 string Уникальный идентификатор инвентаря (типа номера). Это значение сопоставляется с элементом <RoomID> в сообщении Transaction (Property Data).
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanCode 1 string Уникальный идентификатор тарифного плана. Этот идентификатор сопоставляется с полем <PackageID> в сообщении Transaction (Property Data). Тарифный план определяется и упоминается в элементе <StatusApplicationControl> в сообщениях <OTA_HotelRateAmountNotifRQ> и <OTA_HotelAvailNotifRQ>.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanType 0..1 string Идентификатор, который указывает тип модели ценообразования ARI, применяемой к этому обновлению цен. Это свойство следует указывать только при использовании модели ценообразования на основе продолжительности проживания. В этом случае значение должно быть равно 26. Если атрибут не указан, значит, это обновление цены за дату.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates 0..1 Rates Контейнер для набора элементов <Rate>. Если свойство NotifType имеет значение "Remove", то этот элемент указывать не нужно. В противном случае этот элемент должен быть указан ровно один раз.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate 1 Rate Контейнер для набора элементов <BaseByGuestAmts>.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @RateTimeUnit 0..1 String Единица измерения длительности пребывания. Единственное поддерживаемое значение – "Day", то есть длительность пребывания будет указана в днях.

Чтобы использовать цены на основе продолжительности проживания, необходимо указать RateTimeUnit и UnitMultiplier. В противном случае не нужно указывать ни один из них.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier 0..1 Integer Количество RateTimeUnits, составляющих длительность пребывания для этого тарифа.

Например, если значение RateTimeUnits равно "Day", а UnitMultiplier – 5, то тарифы, указанные в объекте Rate, применяются к каждой ночи при проживании в течение пяти ночей.

Тарифы, указанные в объекте Rate, будут умножены на значение UnitMultiplier (длительность пребывания), чтобы получить общую стоимость проживания.

Чтобы использовать цены на основе продолжительности проживания, необходимо указать RateTimeUnit и UnitMultiplier. В противном случае не нужно указывать ни одно из них.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts 1 BaseByGuestAmts Контейнер для набора базовых платежей.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt 1..n BaseByGuestAmt Указывает цены на номера в определенной валюте. Цену можно указать для каждого варианта размещения, используя несколько элементов <BaseByGuestAmt>, каждый с разным значением NumberOfGuests. В противном случае цена применяется к максимальному количеству гостей, указанному в атрибуте NumberOfGuests.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountBeforeTax 0..1 float

Цена за номер в день без учета налогов и сборов.

Можно указать и AmountBeforeTax, и AmountAfterTax. Если не указано свойство AmountBeforeTax, необходимо указать свойство AmountAfterTax. Если указано свойство AmountBeforeTax, а свойство AmountAfterTax не указано, то налоги и сборы должны быть указаны в сообщении <TaxFeeInfo>.

Если вы используете промоакции, скидка применяется к атрибуту AmountBeforeTax, а процентная скидка – также к атрибуту AmountAfterTax. Поскольку это не работает с некоторыми налоговыми структурами, мы настоятельно рекомендуем указывать здесь только AmountBeforeTax, а для налогов и сборов использовать <TaxFeeInfo>.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountAfterTax 0..1 float Цена за номер в день с учетом налогов и сборов. Если указано свойство AmountAfterTax, то отправлять отдельные сообщения <TaxFeeInfo> для каждого свойства не нужно. Этот атрибут можно использовать в сочетании с атрибутом AmountBeforeTax, чтобы указывать как базовые, так и итоговые тарифы, которые могут показываться пользователям в определенных регионах.

Внимание! Если вы используете промоакции, мы настоятельно не рекомендуем использовать значения AmountAfterTax. Если вы хотите использовать скидки, укажите налоги и сборы с помощью сообщения <TaxFeeInfo>. Скидки будут применяться к суммам в валюте AmountBeforeTax.

Примечание. Если не указано свойство AmountBeforeTax, необходимо указать свойство AmountAfterTax.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @CurrencyCode 1 enum Трехбуквенный код валюты по стандарту ISO 4217.

Ознакомьтесь со списком поддерживаемых валют.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @NumberOfGuests 0..1 integer Максимальное количество гостей, которое может быть размещено по этому тарифу. Если значение не указано, по умолчанию используется 2.

Обратите внимание, что если в <AdditionalGuestAmounts> включена плата за детей, то NumberOfGuests относится только к взрослым. Если параметр <AdditionalGuestAmounts> не указан или не содержит сведений о доплате за детей, то NumberOfGuests относится к общему числу гостей, включая взрослых и детей.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts 0..1 AdditionalGuestAmounts Контейнер для набора дополнительных сборов за гостей.

Этот синтаксис полезен, если дополнительные тарифы для гостей или детей меняются в зависимости от даты. Если эти суммы можно определить статически на уровне гостиницы, рекомендуем использовать более эффективное сообщение ExtraGuestCharges.

Дополнительные суммы за гостей применяются следующим образом:
  • Они применяются в дополнение к базовой цене за размещение. Базовая цена за размещение – это самая высокая цена за размещение, указанная в элементе <BaseByGuestAmts>, которая меньше или равна количеству взрослых в поисковом запросе пользователя.
  • Они применяются, если количество гостей в поисковом запросе не превышает вместимость номера.
  • <AdditionalGuestAmounts> всегда заменяет ранее указанные дополнительные суммы новыми, если для атрибута NotifType задано значение Delta или Overlay.
  • Элемент <AdditionalGuestAmounts> может отправляться независимо от базовых тарифов, только если элемент NotifType имеет значение Delta. Элемент <BaseByGuestAmts> должен быть указан, если элемент NotifType имеет значение Overlay.
  • Пустой элемент <AdditionalGuestAmounts> с атрибутом NotifType, для которого задано значение Delta, удаляет существующие дополнительные суммы, не влияя на базовые тарифы.
  • Они применяются с использованием валюты, указанной в поле <BaseByGuestAmt>.

Например, предположим, что базовые цены указаны для одного и двух взрослых.

  • Если пользователь ищет номер для трех взрослых, в качестве базовой цены будет выбрана цена за номер для двух человек, а за третьего взрослого будет добавлена дополнительная плата.
  • Если пользователь ищет номер для одного взрослого и двух детей, в качестве базовой будет выбрана цена за одноместное размещение, а за детей будет взиматься дополнительная плата.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount 0..n AdditionalGuestAmount Указывает цены в зависимости от типа гостя, заданного с помощью AgeQualifyingCode, и, если применимо, возраста гостя, заданного с помощью MaxAge.
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @AgeQualifyingCode 1 enum Определяет тип дополнительного гостя: взрослый или ребенок. Допустимые значения:
  • 10: взрослый.
  • 8: ребенок.

Для атрибута AgeQualifyingCode можно задать значение 10 не более чем в одном элементе AdditionalGuestAmount.

Если для свойства AgeQualifyingCode задано значение 8, необходимо указать свойство MaxAge.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @MaxAge 0..1 integer Если для свойства AgeQualifyingCode задано значение 8, необходимо указать свойство MaxAge. Если свойство AgeQualifyingCode имеет значение 10, то указывать это свойство не нужно.

Значение MaxAge должно быть целым числом в диапазоне от 0 до 17..

Если указать значение 0, то дети не будут учитываться.

Значения, превышающие 17, будут считаться равными максимально допустимому значению 17.

Несколько возрастных диапазонов можно указать в отдельных элементах AdditionalGuestAmount. Возрастные диапазоны должны быть непрерывными и не должны пересекаться.

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @Amount 1 float Сумма без учета налогов и сборов, которая добавляется к базовой цене за каждого дополнительного гостя.

Налоги и сборы, зависящие от возраста гостей, должны быть указаны в элементе <AgeBrackets> сообщения <TaxFeeInfo>.

Примеры

В этом разделе приведены примеры кода, которые показывают, как:

При настройке значений add, overlay или remove диапазоны дат могут быть одинаковыми или разными в зависимости от ваших целей. Например, вы можете использовать overlay, чтобы задать только несколько недель для декабрьских праздников, а не весь диапазон, установленный для сообщения "Добавить тариф". Это значение заменит тарифы на размещение только для этого периода.

Цены по датам

Для определенного номера и тарифного плана можно указать не более 50 цен в зависимости от количества гостей. Если цены одинаковы для всех вариантов размещения, отправьте только максимальное количество гостей и цену. В этом случае Google предполагает, что для меньшего количества гостей действует та же базовая цена.

Как настроить базовые и общие тарифы

Пример 1

Базовый тариф (без налогов и сборов) для стандартного размещения (двухместного). В этом случае налоги и сборы для объекта должны быть определены с помощью сообщения <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 AmountBeforeTax="100.00"
                            CurrencyCode="USD"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Пример 2

Базовая и общая цена за размещение по умолчанию (двухместное). В этой модели налоги и сборы не должны определяться отдельно с помощью сообщений <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 AmountBeforeTax="100.00"
                            AmountAfterTax="110.00"
                            CurrencyCode="USD"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

Пример 3

Общая цена (с учетом налогов и сборов) для нескольких вариантов размещения. В этой модели налоги и сборы не должны определяться отдельно с помощью сообщений <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>

Пример 4

Базовые и итоговые цены для разных типов номеров и тарифных планов в разные диапазоны дат.

<?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>
Как добавлять, накладывать и удалять тарифы

Для каждого объекта можно добавить не более 5000 товаров (комбинаций типов номеров и пакетов). Чтобы удалить ранее определенные товары, используйте типы уведомлений Overlay или Remove.

Добавить цены

Задайте для атрибута NotifType значение Delta, чтобы добавить цены за размещение для RoomID_1 и PackageID_1 на период с 20 октября по 31 декабря 2021 г. Обратите внимание, что Google поддерживает данные за период до трех лет.

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

Цены на оверлеи

Задайте для атрибута NotifType значение Overlay, чтобы удалить все цены за размещение для RoomID_1 и PackageID_1 в период с 20 октября по 31 декабря 2021 г. и заменить их новыми.

Например, если это сообщение было отправлено после сообщения "Добавление цен", то цены для одного, двух и трех гостей будут удалены, а сохранится только новая цена для одного гостя. Вы также можете задать более короткий диапазон дат, например 2021-12-20 и 2021-12-31), чтобы заменить только некоторые тарифы на определенные даты, например на праздники.

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

Удалить тарифы

Установите для атрибута NotifType значение Remove, чтобы удалить все цены за размещение для RoomID_1 и PackageID_1 в период с 20 октября по 31 декабря 2021 г.

Например, если это сообщение было отправлено после любого из других примеров сообщений, тарифы за размещение не будут сохранены.

<?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>
Как добавлять, накладывать и удалять дополнительные цены за гостей

Добавить суммы

Задайте для элемента NotifType значение Delta, чтобы добавить базовые тарифы для одного и двух гостей, а также дополнительные суммы за гостей для RoomID_1 и PackageID_1 в период с 20 октября по 31 декабря 2021 г.

Дополнительная плата за гостей будет добавляться к базовой цене, которая определяется количеством гостей в поисковом запросе пользователя. Указанное пользователем количество гостей должно соответствовать вместимости номера RoomID_1.

В этом примере дополнительные суммы за гостей будут применяться следующим образом:

  • 5 долларов США для детей от 0 до 10 лет (включительно).
  • 10 долларов США для детей в возрасте от 11 до 17 лет (включительно).
  • 20 долларов США для взрослых.
<?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>

Суммы наложений

Задайте для атрибута NotifType значение Overlay, чтобы удалить все цены за размещение и все дополнительные суммы за гостей для RoomID_1 и PackageID_1 в период с 20 октября по 31 декабря 2021 г. и заменить их новыми ценами за размещение и дополнительными суммами.

Например, если это сообщение было отправлено после сообщения "Добавление тарифов", тарифы для базового размещения 1 и 2 будут удалены и сохранится только новый тариф для базового размещения 1. Предыдущий набор дополнительных сумм для гостей будет удален, и будет сохранен только новый набор сумм. Дополнительные суммы за гостей теперь будут использовать новую цену за размещение 1 в качестве базовой. Обратите внимание, что после этого обновления для детей не будет дополнительных сборов.

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

Удалить значения

Задайте для атрибута NotifType значение Delete, чтобы удалить все базовые тарифы в зависимости от количества гостей и все дополнительные суммы за гостей для RoomID_1 и PackageID_1 в период с 20 октября по 31 декабря 2021 года.

Например, если это сообщение было отправлено после любого из других примеров сообщений, то базовые тарифы за размещение или суммы за дополнительных гостей не будут сохранены.

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

Удалить только суммы за дополнительных гостей

Задайте для атрибута NotifType значение Delta с пустым элементом <AdditionalGuestAmounts>, чтобы удалить все дополнительные цены для гостей для RoomID_1 и PackageID_1, не затрагивая базовые цены в период с 20 октября по 31 декабря 2021 года.

Например, если это сообщение было отправлено после любого из других примеров сообщений, будут сохранены только базовые суммы.

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

Цены на основе продолжительности проживания

Как настроить цены на основе продолжительности проживания

Пример 1

Установите цены на проживание в течение одной, двух и трех ночей, начиная с 18 мая 2020 г. В этом примере общая стоимость проживания в течение одной, двух и трех ночей составит 100, 180 и 240 долларов США соответственно.

<?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>
Как добавлять, накладывать и удалять тарифы на основе продолжительности проживания

Добавьте длительность пребывания

При ценообразовании на основе длительности пребывания операция Delta позволяет постепенно обновлять тарифы для диапазонов дат заезда, указанных в элементе <StatusApplicationControl>, и для всех значений длительности пребывания, указанных в атрибуте UnitMultiplier каждого дочернего элемента Rate.

Для каждой даты заезда и длительности пребывания должны быть указаны все тарифы в зависимости от количества гостей.

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

Наложение длительности пребывания

При ценообразовании на основе длительности пребывания операция Overlay заменяет цены для всех вариантов длительности пребывания и диапазона дат заезда, указанных в элементе <StatusApplicationControl>.

В результате цены для разного количества гостей и любой длительности пребывания с указанными датами заезда будут удалены и заменены ценой для двух гостей, которая задана только для длительности пребывания, равной трем дням.

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

Удалить длительность пребывания

Если вы используете цены на основе длительности пребывания, операция Remove удаляет цены для всех вариантов длительности пребывания и диапазона дат заезда, указанных в элементе <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>

Ответы

Синтаксис

Сообщение OTA_HotelRateAmountNotifRS использует следующий синтаксис:

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

Элементы и атрибуты

Сообщение OTA_HotelRateAmountNotifRS содержит следующие элементы и атрибуты:

Элемент / @атрибут Количество Тип Описание
OTA_HotelRateAmountNotifRS 1 Complex element Корневой элемент ответа на сообщение о доступности.
OTA_HotelRateAmountNotifRS / @TimeStamp 1 DateTime Дата и время создания этого сообщения.
OTA_HotelRateAmountNotifRS / @EchoToken 1 string Уникальный идентификатор из связанного сообщения OTA_HotelRateAmountNotifRQ.
OTA_HotelRateAmountNotifRS / Success 0..1 Success Указывает, что сообщение OTA_HotelRateAmountNotifRQ было успешно обработано.

В каждом сообщении присутствует <Success> или <Errors>.

OTA_HotelRateAmountNotifRS / Errors 0..1 Errors Контейнер для одной или нескольких проблем, возникших при обработке сообщения OTA_HotelRateAmountNotifRQ.

В каждом сообщении присутствует <Success> или <Errors>.

OTA_HotelRateAmountNotifRS / Errors / Error 1..n Error Описание ошибки, возникшей при обработке сообщения OTA_HotelRateAmountNotifRQ. Подробную информацию об этих ошибках можно найти в статье Сообщения об ошибках в статусе фида.
OTA_HotelRateAmountNotifRS / Errors / Error / @Type 1 integer Тип ошибки или предупреждения (EWT) по классификации OpenTravel Alliance. Используется только значение 12 (Processing exception).
OTA_HotelRateAmountNotifRS / Errors / Error / @Code 1 integer Код ошибки OpenTravel Alliance, связанный с ошибкой. Используется только значение 450 (Unable to process).
OTA_HotelRateAmountNotifRS / Errors / Error / @Code 1 enum Статус исходного запроса. Используется только значение NotProcessed.
OTA_HotelRateAmountNotifRS / Errors / Error / @ShortText 1 string Идентификатор проблемы в Google. Подробную информацию об этих ошибках можно найти в статье Сообщения об ошибках в статусе фида.

Примеры

Выполнено

Ниже приведен ответ на успешно обработанное сообщение 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>

Ошибки

Ниже приведен ответ на сообщение 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">
  <Errors>
    <Error Type="12" Code="450" Status="NotProcessed" ShortText="8001">Example</Error>
  </Errors>
</OTA_HotelRateAmountNotifRS>