Запросы
Синтаксис
Сообщение 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 | Тип уведомления, которое будет применяться к каждому объекту Допустимые значения: Чтобы понять, как работают эти атрибуты, ознакомьтесь с примерами.
|
| OTA_HotelRateAmountNotifRQ / @NotifScopeType | 0..1 | enum | Область действия Допустимые значения:
|
| 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.
Примечание. Если у вас есть сервер, который предоставляет фиды для нескольких аккаунтов, это значение должно совпадать со значением атрибута |
| 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, чтобы явно включить понедельники.
Если задано значение |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Tue | 0..1 | boolean | Укажите true или 1, чтобы включить вторники.
Если задано значение |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Weds | 0..1 | boolean | Укажите значение true или 1, чтобы явно включить среду.
Если задано значение |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Thur | 0..1 | boolean | Укажите значение true или 1, чтобы явно включить четверги.
Если задано значение |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Fri | 0..1 | boolean | Укажите значение true или 1, чтобы явно включить пятницы.
Если задано значение |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sat | 0..1 | boolean | Укажите значение true или 1, чтобы включить субботы.
Если задано значение |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sun | 0..1 | boolean | Чтобы явно включить воскресенья, задайте значение true или 1.
Если задано значение |
| 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", то есть длительность пребывания будет указана в днях.
Чтобы использовать цены на основе продолжительности проживания, необходимо указать |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier | 0..1 | Integer | Количество RateTimeUnits, составляющих длительность пребывания для этого тарифа.
Например, если значение Тарифы, указанные в объекте Чтобы использовать цены на основе продолжительности проживания, необходимо указать |
| 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 |
Цена за номер в день без учета налогов и сборов. Можно указать и Если вы используете промоакции, скидка применяется к атрибуту |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / BaseByGuestAmts / BaseByGuestAmt / @AmountAfterTax | 0..1 | float | Цена за номер в день с учетом налогов и сборов. Если указано свойство AmountAfterTax, то отправлять отдельные сообщения <TaxFeeInfo> для каждого свойства не нужно. Этот атрибут можно использовать в сочетании с атрибутом AmountBeforeTax, чтобы указывать как базовые, так и итоговые тарифы, которые могут показываться пользователям в определенных регионах.
Внимание! Если вы используете промоакции, мы настоятельно не рекомендуем использовать значения Примечание. Если не указано свойство |
| 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.
Обратите внимание, что если в |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts | 0..1 | AdditionalGuestAmounts | Контейнер для набора дополнительных сборов за гостей.
Этот синтаксис полезен, если дополнительные тарифы для гостей или детей меняются в зависимости от даты. Если эти суммы можно определить статически на уровне гостиницы, рекомендуем использовать более эффективное сообщение
Например, предположим, что базовые цены указаны для одного и двух взрослых.
|
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount | 0..n | AdditionalGuestAmount | Указывает цены в зависимости от типа гостя, заданного с помощью AgeQualifyingCode, и, если применимо, возраста гостя, заданного с помощью MaxAge.
|
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @AgeQualifyingCode | 1 | enum | Определяет тип дополнительного гостя: взрослый или ребенок. Допустимые значения:
Для атрибута Если для свойства |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @MaxAge | 0..1 | integer | Если для свойства AgeQualifyingCode задано значение 8, необходимо указать свойство MaxAge. Если свойство AgeQualifyingCode имеет значение 10, то указывать это свойство не нужно.
Значение Если указать значение Значения, превышающие Несколько возрастных диапазонов можно указать в отдельных элементах |
| OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @Amount | 1 | float | Сумма без учета налогов и сборов, которая добавляется к базовой цене за каждого дополнительного гостя.
Налоги и сборы, зависящие от возраста гостей, должны быть указаны в элементе |
Примеры
В этом разделе приведены примеры кода, которые показывают, как:
- Как настроить базовые и общие тарифы
- Как добавлять, накладывать и удалять тарифы
- Как добавить, наложить и удалить дополнительные цены за гостей
- Как настроить цены в зависимости от продолжительности проживания
- Как добавлять, накладывать и удалять цены на основе продолжительности проживания
При настройке значений 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 было успешно обработано.
В каждом сообщении присутствует |
| OTA_HotelRateAmountNotifRS / Errors | 0..1 | Errors | Контейнер для одной или нескольких проблем, возникших при обработке сообщения OTA_HotelRateAmountNotifRQ.
В каждом сообщении присутствует |
| 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>