OTA_酒店房价金额通知

请求

语法

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 消息具有以下元素和属性:

元素 / @Attribute 出现次数 类型 说明
OTA_HotelRateAmountNotifRQ 1 Complex element 费率消息的根元素。
OTA_HotelRateAmountNotifRQ / @xmlns 0..1 string (URI) XML 命名空间。
OTA_HotelRateAmountNotifRQ / @EchoToken 1 string 相应请求消息的唯一标识符。此值会在响应消息中返回。允许的字符包括 a-zA-Z0-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

要应用于每个 <RateAmountMessage>NotifType 的范围。

有效值包括:

  • ProductRate:(如果未指定 NotifScopeType,则为默认值)NotifType 适用于产品,即客房类型 (InvTypeCode) 和房价方案 (RatePlanCode) 的组合。
OTA_HotelRateAmountNotifRQ / POS 0..1 POS 用于指定相应消息的合作伙伴账号的容器(通常在后端为多个合作伙伴账号提供价格 Feed 时使用)。
OTA_HotelRateAmountNotifRQ / POS / Source 1 Source 如果存在 <POS>,则必需提供此值。<RequestorID> 的容器。
OTA_HotelRateAmountNotifRQ / POS / RequestorID 1 RequestorID 如果存在 <POS>,则必需提供此值。定义合作伙伴账号。
OTA_HotelRateAmountNotifRQ / POS / RequestorID / @ID 1 string 相应消息的合作伙伴账号。此字符串值是 Hotel Center 中 “账号设置”页面上列出的“合作伙伴密钥”值。

注意:如果您有为多个账号提供 Feed 的后端,则此值需要与您的交易(房源数据)消息的 partner 属性值以及同一账号的 <OTA_HotelAvailNotifRQ> 消息的 <RequestorID> 元素中的 ID 属性值相匹配。

OTA_HotelRateAmountNotifRQ / RateAmountMessages 1 RateAmountMessages 用于定义费率的 <RateAmountMessage> 元素集合。
OTA_HotelRateAmountNotifRQ / RateAmountMessages / @HotelCode 1 string 房源的唯一标识符。此值必须与酒店列表 Feed 的<listing> 元素中使用 <id> 指定的酒店 ID 一致。您还可以在 Hotel Center 中找到酒店 ID。
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 值。 如果 startend 相等,则更新适用于该日期。请注意,Google 最多支持三年的数据。
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Mon 0..1 boolean 设置为 true1 可明确包含星期一。

如果设置为 true,则会排除未明确设置为 true 的其他工作日(实际上,这些工作日会从 StartEnd 中的日期中过滤掉)。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Tue 0..1 boolean 设置为 true1 可明确包含星期二。

如果设置为 true,则会排除未明确设置为 true 的其他工作日(实际上,这些工作日会从 StartEnd 中的日期中过滤掉)。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Weds 0..1 boolean 设置为 true1 可明确包含星期三。

如果设置为 true,则会排除未明确设置为 true 的其他工作日(实际上,这些工作日会从 StartEnd 中的日期中过滤掉)。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Thur 0..1 boolean 设置为 true1 可明确包含星期四。

如果设置为 true,则会排除未明确设置为 true 的其他工作日(实际上,这些工作日会从 StartEnd 中的日期中过滤掉)。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Fri 0..1 boolean 设置为 true1 可明确包含星期五。

如果设置为 true,则会排除未明确设置为 true 的其他工作日(实际上,这些工作日会从 StartEnd 中的日期中过滤掉)。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sat 0..1 boolean 设置为 true1 可明确包含周六。

如果设置为 true,则会排除未明确设置为 true 的其他工作日(实际上,这些工作日会从 StartEnd 中的日期中过滤掉)。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @Sun 0..1 boolean 设置为 true1 可明确包含星期日。

如果设置为 true,则会排除未明确设置为 true 的其他工作日(实际上,这些工作日会从 StartEnd 中的日期中过滤掉)。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @InvTypeCode 1 string 相应房源(房型)的唯一标识符。此值会映射到交易(房源数据)消息中的 <RoomID>
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanCode 1 string 相应费率方案的唯一标识符。此标识符对应于交易(房源数据)消息中的 <PackageID>。费率方案在 <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> 消息中进一步定义,并在 <StatusApplicationControl> 中引用。
OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / StatusApplicationControl / @RatePlanType 0..1 string 一个标识符,用于指明此价格更新所适用的 ARI 价格模式的类型。仅在使用基于 LOS 的定价模式时,才应使用 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",表示住宿时长将以天为单位指定。

如需使用基于 LOS 的价格,必须指定 RateTimeUnitUnitMultiplier。否则,两者都不应指定。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / @UnitMultiplier 0..1 Integer 构成相应房价的入住时长的 RateTimeUnits 数量。

例如,如果 RateTimeUnits 值为 "Day",则 UnitMultiplier 值为 5 表示此 Rate 对象下指定的费率适用于 5 晚住宿的每晚。

Rate 对象下指定的入住率将乘以 UnitMultiplier(住宿天数),得出住宿总价。

如需使用基于 LOS 的价格,必须指定 RateTimeUnitUnitMultiplier。否则,两者都不应指定。

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

客房费率在扣除税费及其他费用前的每日价格。

可以同时指定 AmountBeforeTaxAmountAfterTax。如果未指定 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 (3) 字母字符代码。

请参阅支持的币种列表。

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> 中指定的小于或等于用户搜索中成人人数的最高入住率。
  • 只要用户搜索中的入住人数不超过房间的容纳人数,系统就会应用这些价格。
  • 如果 NotifTypeDeltaOverlay<AdditionalGuestAmounts> 始终会将之前指定的额外金额替换为新的金额。
  • 只有当 NotifTypeDelta 时,<AdditionalGuestAmounts> 才可以独立于基本费率发送。当 NotifTypeOverlay 时,必须指定 <BaseByGuestAmts>
  • 如果 <AdditionalGuestAmounts> 元素为空,且 NotifType 设置为 Delta,则会移除现有的额外金额,而不会影响基本费率。
  • 它们会使用 <BaseByGuestAmt> 中指定的币种进行应用。

例如,假设指定了 1 名成人和 2 名成人的基本费率。

  • 如果用户搜索 3 名成人入住,系统会选择双人入住费率作为基本费率,并在其基础上应用 1 名成人的额外房客费用。
  • 如果用户搜索“1 名成人和 2 名儿童”,系统会选择单人入住费率作为基本费率,并在此基础上为两名儿童应用额外费用。
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: 位儿童。

最多只能将一个 AdditionalGuestAmount 元素的 AgeQualifyingCode 设置为 10

AgeQualifyingCode8 时,必须指定 MaxAge

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @MaxAge 0..1 integer AgeQualifyingCode8 时,必须指定 MaxAge。如果 AgeQualifyingCode10,则不得指定此属性。

MaxAge 应该是介于 017. 之间的整数

指定值 0 可停用子居住者。

大于 17 的值将被视为可接受的最大值 17

您可以通过单独的 AdditionalGuestAmount 元素指定多个儿童年龄段。年龄段必须是连续且不重叠的。

OTA_HotelRateAmountNotifRQ / RateAmountMessages / RateAmountMessage / Rates / Rate / AdditionalGuestAmounts / AdditionalGuestAmount / @Amount 1 float 在基本费率的基础上,为每位额外入住的房客加收的税费和其他费用之前的金额。

取决于入住者年龄的税费必须通过 <TaxFeeInfo> 消息中的 <AgeBrackets> 元素指定。

示例

本部分提供了一些代码示例,重点介绍了如何执行以下操作:

设置 addoverlayremove 值时,日期范围可以相同,也可以不同,具体取决于您的目标。例如,您可以仅使用 overlay 为 12 月的假期设置几周的时间,而不是为“添加速率”消息设置整个范围。这样只会替换相应时段的入住率。

按日期计费

对于给定的客房和房价方案,每个酒店的入住率上限为 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>
添加、叠加和移除费率

每个媒体资源的商品(房型和套餐组合)数量上限为 5,000 个。使用 OverlayRemove 通知类型移除之前定义的产品。

添加费率

NotifType 设置为 Delta,以添加 2021 年 10 月 20 日至 2021 年 12 月 31 日期间 RoomID_1 和 PackageID_1 的每入住人数费率。请注意,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 在 2021-10-20 至 2021-12-31 期间的所有按入住人数收费的价格,并将其替换为新指定的按入住人数收费的价格。

例如,如果此消息是在“添加房价”消息之后发送的,则系统会删除入住人数为 1、2 和 3 的房价,并仅存储新的入住人数为 1 的房价。您还可以设置较短的日期范围(例如: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 在 2021-10-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="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,以添加 2021 年 10 月 20 日至 2021 年 12 月 31 日期间 RoomID_1 和 PackageID_1 的入住人数为 1 和 2 时的基本房价以及额外房客费用。

额外房客费用将在基本费率的基础上收取,而基本费率将根据用户搜索中的入住人数来确定。指定的用户入住人数必须在 RoomID_1 的容量范围内。

在此示例中,额外房客费用将按以下方式收取:

  • 0-10 周岁(含)儿童的费用为 5 美元。
  • 11 至 17 周岁(含)儿童的费用为 10 美元。
  • 成人票价为 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 在 2021-10-20 至 2021-12-31 期间的所有按入住人数计费的价格和所有额外房客费用,并将其替换为新指定的按入住人数计费的价格和额外费用。

例如,如果此消息是在“添加房价”消息之后发送的,则系统会删除基本入住率 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 在 2021-10-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="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 设置为具有空 <AdditionalGuestAmounts> 元素的 Delta,以删除 RoomID_1 和 PackageID_1 的所有额外房客金额,而不会影响 2021-10-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="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>

基于 LOS 的定价

设置基于住宿时长的价格

示例 1

设置了从 2020-05-18 开始的 1 晚、2 晚和 3 晚住宿的佣金率。在此示例中,住宿 1 晚、2 晚和 3 晚的总房价分别为 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>
添加、叠加和移除基于 LOS 的费率

添加住宿晚数

借助基于 LOS 的价格,Delta 操作可用于逐步更新 <StatusApplicationControl> 中指示的入住日期范围以及每个子 Rate 元素的 UnitMultiplier 指示的所有住宿时长的价格。

对于每个适用的入住日期和住宿晚数,都必须指定所有入住率。

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

叠加住宿时长

采用基于 LOS 的价格时,Overlay 操作会替换产品和入住日期范围(如 <StatusApplicationControl> 中所示)的所有住宿时长的费率。

收到此消息后,系统将移除指定到达日期所有住宿时长的每人入住费率,并替换为仅针对住宿时长 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>

移除住宿时长

采用基于住宿时长的价格时,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 消息具有以下元素和属性:

元素 / @Attribute 出现次数 类型 说明
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 消息时遇到的错误的说明。如需详细了解这些错误,请参阅Feed 状态错误消息
OTA_HotelRateAmountNotifRS / Errors / Error / @Type 1 integer 与错误关联的 OpenTravel Alliance EWT(错误警告类型)。仅使用值 12 (Processing exception)
OTA_HotelRateAmountNotifRS / Errors / Error / @Code 1 integer 与错误关联的 OpenTravel Alliance ERR(错误代码)。 仅使用值 450 (Unable to process)
OTA_HotelRateAmountNotifRS / Errors / Error / @Code 1 enum 原始请求的状态。仅使用值 NotProcessed
OTA_HotelRateAmountNotifRS / Errors / Error / @ShortText 1 string 问题的 Google 标识符。如需详细了解这些错误,请参阅 Feed 状态错误消息

示例

成功

以下是成功处理 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>