促销活动

概览

借助此 API,您可以指定可能的折扣。在指定的促销信息中, Google 会应用符合条件的促销活动,即指向 最低价格。如果您要寻找支持任意费率的 API 符合相应条件时可上调或下调价格的调整项 就以我们的 Rate Modifications API。 请注意,如果两个 API 都存在,则先应用费率调整,然后再应用 促销。

请求

语法

Promotions 消息使用以下语法:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
            id="message_ID"
            timestamp="timestamp">
  <HotelPromotions hotel_id="HotelID" action="[overlay]">
    <Promotion id="PromotionID" action="[delete]">
      <BookingDates>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
        <DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
          days_of_week="MTWHFSU_or_subset"/>
      </BookingDates>
      <BookingWindow min="integer_or_duration" max="integer_or_duration"/>
      <Ceiling amount_per_night="float"/>
      <Floor amount_per_night="float"/>
      <CheckinDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckinDates>
      <CheckoutDates>
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </CheckoutDates>
      <!-- Specify only one of percentage, fixed_amount, fixed_amount_per_night,
           fixed_price, or fixed_price_per_night; applied_nights is only used
           with percentage, fixed_amount_per_night, and fixed_price_per_night. -->
      <Discount percentage="float" fixed_amount="float" fixed_amount_per_night="float"
                fixed_price="float" fixed_price_per_night="float"
                applied_nights="integer_1_to_99" rank="integer_1_to_99">
        <!-- FreeNights may not be used in conjunction with attributes on Discount -->
        <FreeNights stay_nights="integer" discount_nights="integer"
                    discount_percentage="float" night_selection="[cheapest|last]"
                    repeats="boolean"/>
      </Discount>
      <!-- Exactly one of Discount or BestDailyDiscount must be specified.
           Specify only one of percentage, fixed_amount, or fixed_price. -->
      <BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
      <Devices>
        <Device type="[desktop|tablet|mobile]"/>
      </Devices>
      <InventoryCount min="integer" max="integer"/>
      <LengthOfStay min="integer" max="integer"/>
      <MembershipRateRule id="RateRuleID"/>
      <MinimumAmount before_discount="integer"/>
      <Occupancy min="integer" max="integer"/>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <Stacking type="[any|base|none|second]"/>
      <StayDates application="[all|any|overlap]">
        <DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <UserCountries type="[include|exclude]">
        <Country code="country_code"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>

元素和属性

“促销”消息包含以下元素和属性:

元素 / @Attribute 出现次数 类型 说明
Promotions 1 Complex element 促销信息的根元素。
Promotions / @partner 1 string 此消息所属的合作伙伴账号。此字符串值是 “合作伙伴密钥”值列于 <ph type="x-smartling-placeholder"></ph> 账号设置页面

如果您有为以下对象提供 Feed 的后端: 多个账号,此值需要与 ID 匹配 <RequestorID> 中指定的属性值 <OTA_HotelRateAmountNotifRQ> 的元素以及 同一天收到 <OTA_HotelAvailNotifRQ> 条消息 。

Promotions / @id 1 string 此请求消息的唯一标识符。该值会返回 。允许使用的字符包括 a-z、A-Z、0-9、_ (下划线)和 -(短划线)。
Promotions / @timestamp 1 DateTime 此消息的创建日期和时间。
Promotions / HotelPromotions 0..n HotelPromotions

酒店的促销活动。每个促销活动只适用于 属性。

除非使用 <Stacking>,否则 在以下情况下,系统会向相应预订应用折扣最大的促销活动: 有多个促销活动符合条件。

Promotions / HotelPromotions / @hotel_id 1 string 房源的唯一标识符。该值必须与 使用 指定的酒店 ID <listing> 元素中的 <id>Hotel Center 中也会列出酒店 ID。
Promotions / HotelPromotions / @action 0..1 enum

如果指定,值必须为 "overlay"。当值为 "overlay" 时,所有 已存储的宣传内容会在存储指定的促销之前被删除 。

如果未指定,则当前指定的 消息为:

  • Added(如果存储的促销信息都没有 相同的 id
  • Updated(如果存储的促销活动有相同的 id)
  • Deleted(如果存储的促销活动有相同的 idaction 属性的值 当前消息中指定的促销信息 "delete")
Promotions / HotelPromotions / Promotion 0..99 Promotion

一项房源的促销活动。请注意,如果未指定 action="overlay"<Promotion>,系统会删除相应媒体资源的所有促销活动。

如需使用超过 99 个促销活动,请联系 您的技术支持客户经理 (TAM)。

Promotions / HotelPromotions / Promotion / @id 1 string 促销活动的唯一标识符。最大数量 允许的字符数上限是 40。允许使用的字符包括:a-z、A-Z、0-9、 _(下划线)、-(短划线)和 .(英文句点)。
Promotions /HotelPromotions / Promotion / @action 0..1 enum

如果指定,则值必须为 delete。如果不是 和 同一 id 的促销活动未存储,则此 促销。如果未指定,则促销活动包含 系统会存储相同的 id,则使用现有的促销活动 已更新。

如果指定了 delete,则存储的促销以及 相同的 id 被删除。 使用 delete 时,请勿在 <Promotion>。此外,delete 不是 允许与 <HotelPromotions action="overlay"/> 结合使用。

Promotions / HotelPromotions / Promotion / BookingDates 0..1 BookingDates 一个或多个范围的容器,用于定义预订时间 才能应用促销优惠。
Promotions / HotelPromotions / Promotion / BookingDates / DateRange 1..99 DateRange 一个范围,用于指定开展促销活动必须预订的时间 。
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start 0..1 DateDateTime

范围的开始日期或日期时间(基于媒体资源所在的时区),包括该日期/时间。

  • start 指定的日期或日期时间必须为 早于(或等于) end
  • 如果未指定 start,则范围实际上是 且开始时间不受限制
  • 如果将 start 填充为日期“YYYY-MM-DD”,则它为 解释为日期时间“YYYY-MM-DDT00:00:00”。
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end 0..1 Date DateTime

范围的结束日期或日期时间(基于媒体资源所在的时区),包括该日期/时间。

  • end 指定的日期或日期时间必须更晚 指定日期或日期时间 start
  • 如果未指定 end,则范围实际上是 且不限结束时间
  • 如果以“YYYY-MM-DD”的形式提供 end, 解释为日期时间“YYYY-MM-DDT23:59:59”。
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week 0..1 string

允许出现在日期范围内的星期几。如果不是 指定日期范围,则允许日期范围内的所有日期。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。

有效字符包括:

  • M(周一)
  • T(周二)
  • W:周三
  • H 表示周四
  • F - 周五
  • 周六 S
  • 周日U

任何字符组合均有效。

Promotions / HotelPromotions / Promotion / BookingWindow 0..1 BookingWindow 相对于 入住日期(以房源的时区为准)。例如,您可以将预订期限设置为入住前至少 7 天,但不超过 180 天。
Promotions / HotelPromotions / Promotion / BookingWindow / @min 0..1 integer or duration 入住前必须预订的最短入住天数 才能应用促销优惠。如果未指定此属性或其值 为 0,没有下限。

有效的值类型包括:

  • 整数:入住前的天数 日期。例如,值为 30 表示促销优惠仅适用于入住日期前至少 30 天的预订。
  • ISO 8601 时长(天、小时和分钟):入住日期前的天数(可选小时/分钟)。例如,值为 P30D 表示促销优惠仅适用于入住日期前至少 30 天的预订。答 价值 P30DT6H 的预订要求在 18:00 或之前预订 到家前 30 天预订。
Promotions / HotelPromotions / Promotion / BookingWindow / @max 0..1 integer or duration 入住前的最晚入住天数 才能应用促销优惠。如果未指定此属性或其值 为 0,没有上限。

有效的值类型包括:

  • 整数:入住前的天数 日期。例如,值 30 表示 本促销优惠仅适用于活动开始前 30 天内的预订, 入住日期。
  • ISO 8601 Duration(天、小时和分钟): 天(也可选择是小时/分钟)。对于 例如,值 P30D 表示仅限促销活动 适用于入住前 30 天内的预订。答 价值 P30DT6H 的预订要求在以下日期或之后的 18:00 或之后预订: 到家前 30 天预订。
Promotions / HotelPromotions / Promotion / Ceiling 0..1 Ceiling

定义对可设置费率最大值的限制 在应用促销优惠后展示。

促销活动必须始终指定 <Discount><BestDailyDiscount>,因此要创建符合以下条件的促销活动 仅适用于 <Ceiling>,一种选项是设置 <Discount>percentage0

如果配置了堆叠,则可以对单次住宿应用多个包含 <Ceiling> 的促销优惠。每项促销活动 应用折扣后,紧跟其上限。通过 下例展示了每个上限对 堆栈中的促销信息计算。

示例:

AmountBeforeTax为 1 晚的住宿定价 共有 2 项促销优惠:

  1. 堆叠类型为“base”的促销 第 fixed_amount 个(共 25 个)和上限 第 amount_per_night 个(共 60 个)
  2. 堆叠类型为“second”的促销 第 fixed_amount 个(共 25 个)和上限 第 amount_per_night 项,共 90 项

计算顺序如下:

  1. 先应用“base”促销优惠并应用折扣 将AmountBeforeTax调整为 75,但上限降低 设为 60
  2. second促销活动提供了 AmountBeforeTax从 60 降至 35。低于上限 所以不会应用第二个上限。最终费率为 35

60 是更严格的总体上限,这无关紧要, 仅适用于其自身的促销活动, 设置跨越整个促销活动堆栈的“天花板”上限

Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night 1 float

折扣。

如果还指定了 <Floor> 元素,则 必须设置为大于或等于 amount_per_night 属性 <Floor>

税费及其他费用为 amount_per_night 使用 AmountAfterTax 包含在每晚房价中,但 而不是使用 TaxFeeInfo 指定的。

Promotions / HotelPromotions / Promotion / Floor 0..1 Floor

定义对可设置费率的最小值的限制 在应用促销优惠后展示。

促销活动必须始终指定 <Discount><BestDailyDiscount>,因此要创建符合以下条件的促销活动 仅适用于 <Floor>,一种选项是设置 <Discount>percentage0

<Floor> 逻辑仍然适用于 <FreeNights>的折扣,即使免费住宿晚数有 已应用 100% 的折扣。

如果配置了堆叠,则可以对单次住宿应用多个包含 <Floor> 的促销优惠。每项促销活动 其折扣后紧跟其底价通过 以下示例展示了每个楼层对后续楼层的影响 堆栈中的促销信息计算。

示例:

AmountBeforeTax为 1 晚的住宿定价 共有 2 项促销优惠:

  1. 堆叠类型为“base”的促销 fixed_amount/25 和 1 层 第 amount_per_night 项,共 90 项
  2. 堆叠类型为“second”的促销 fixed_amount/25 和 1 层 第 amount_per_night 个(共 60 个)

计算顺序如下:

  1. 系统会先应用 base 促销,将 AmountBeforeTax 的价格折扣为 75,但最低价会将其上调至 90
  2. second促销活动提供了 AmountBeforeTax:90 到 65。高于地面 所以第二层不会应用最终费率为 65

90 是更为严格的总底价,这一事实无关紧要, 仅适用于其自身的促销活动, 用于覆盖整个促销活动堆栈的底价。

Promotions / HotelPromotions / Promotion / Floor / @amount_per_night 1 float

折扣应用后,每晚房价可设置的最低金额。

如果还指定了 <Ceiling> 元素,则 必须设置为小于或等于 amount_per_night 属性 <Ceiling>

税费及其他费用为 amount_per_night 使用 AmountAfterTax 包含在每晚房价中,但 而不是使用 TaxFeeInfo 指定的。

Promotions / HotelPromotions / Promotion / CheckinDates 0..1 CheckinDates 用于指定入住时间的一个或多个日期范围的容器 发生的所有情况。
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange 1..20 DateRange

指定入住必须在什么日期范围内进行,才能享受促销优惠 。如果您要删除一个或多个 促销。

也支持 YearlessDate 格式。

  • 如果 startend 中的一项是一年制 日期,两者都必须填充为无年份日期。
  • 不设年份的日期范围不得环绕新年。相反, 将范围表示为两个相邻的日期范围。例如: {"12-29", "01-05"} 可以表示为 {"12-29", "12-31"}{"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start 0..1 Date or YearlessDate 开始日期(基于房源的时区),包含 日期范围。该日期必须早于或等于 end日期。如果未指定 start,则为 日期范围实际上没有限制
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end 0..1 Date or YearlessDate 结束日期(基于房源的时区),包括 日期范围。此日期必须与start相同或更晚 日期。如果未指定 end,则为 日期范围实际上没有结束日期
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week 0..1 string

允许出现在日期范围内的星期几。如果未指定,则日期范围内的所有日期均可。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。

有效字符包括:

  • M(周一)
  • T(周二)
  • W:周三
  • H 表示周四
  • F - 周五
  • 周六 S
  • 周日U

任意字符组合均有效。

Promotions / HotelPromotions / Promotion / CheckoutDates 0..1 CheckoutDates 一个或多个日期范围的容器,用于定义退房时间 促销活动的触发条件。
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange 1..20 DateRange

一个日期范围,用于指定促销活动必须在什么时间退房 。对于非线性广告, 删除一个或多个宣传。

还支持 YearlessDate 格式。

  • 如果 startend 中有一个没有年份 日期,两者都必须填充为无年份日期。
  • 不设年份的日期范围不得环绕新年。相反, 将范围表示为两个相邻的日期范围。例如,{"12-29", "01-05"} 可以表示为 {"12-29", "12-31"}{"01-01", "01-05"}
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start 0..1 Date or YearlessDate 开始日期(基于房源的时区),包含 日期范围。该日期必须早于或等于 end日期。如果未指定 start,则为 日期范围实际上没有限制
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end 0..1 Date or YearlessDate 结束日期(基于房源的时区),包括 日期范围。此日期必须与start相同或更晚 日期。如果未指定 end,则为 日期范围实际上没有结束日期
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week 0..1 string

允许出现在日期范围内的星期几。如果未指定,则日期范围内的所有日期均可。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。

有效字符包括:

  • M(周一)
  • T(周二)
  • W:周三
  • H 表示周四
  • F - 周五
  • 周六 S
  • 周日U

任意字符组合均有效。

Promotions / HotelPromotions / Promotion / Devices 0..1 Devices 用于列出有资格使用 推广活动。如果指定了此属性,则只有列出的设备上的符合条件的用户才能享受折扣优惠。如果未指定,则表示任何符合条件的用户 设备享受折扣价。
Promotions / HotelPromotions / Promotion / Devices / Device 1..3 Device 指定一种符合促销条件的用户设备。
Promotions / HotelPromotions / Promotion / Devices / Device / @type 1 enum 一种设备的类型。值必须为 desktoptabletmobile
Promotions / HotelPromotions / Promotion / Discount 1 Discount

必须指定 DiscountBestDailyDiscount 中的一个。

指定要应用于此促销活动的折扣。

Promotions / HotelPromotions / Promotion / Discount / @percentage 0..1 float

percentage”中的一个, fixed_amountfixed_amount_per_nightfixed_pricefixed_price_per_night 是 必填字段。

介于 0 到 100 之间的一个小数值,用于指定折扣百分比。 应用于 AmountAfterTax(或 AmountBeforeTax(如果 AmountAfterTax 不是) 指定)。

示例:

  • 如果 AmountAfterTax 为 100 且 percentage 为 20,则

    促销率 = AmountAfterTax * (1 - 百分比) 折扣)

    80.00 = 100 * (1 - 0.2)

  • 如果 AmountBeforeTax 为 100, percentage 为 20,TaxFeeInfo 指定税费为 10, 然后

    促销率 = AmountBeforeTax * (1 - 百分比) 折扣)+ 税费

    90.00 = 100 * (1 - 0.2) + 10

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount 0..1 float

percentage”中的一个, fixed_amountfixed_amount_per_nightfixed_pricefixed_price_per_night 是 必填字段。

从以下总和中减去的固定金额: AmountAfterTax每晚房价(或 AmountBeforeTax每晚房价的总和: 未指定 AmountAfterTax)。假定其币种与每晚费率相同。如果此值大于每晚费率的总和,则结果为零。

示例:

  • 如果我们指定住宿价格为 1 晚, AmountBeforeTax 是 90, AmountAfterTax 为 100,fixed_amount 为 20,则

    促销率 = AmountAfterTax - 固定 折扣

    80.00 = 100 - 20

  • 如果我们指定住宿价格为 1 晚, AmountBeforeTax 是 100,fixed_amount 为 20,TaxFeeInfo 指定税率 8%,则

    促销率 =(AmountBeforeTax - 已修正 折扣)*(1 + 百分比税)

    86.40 = (100 - 20) * 1.08

  • 如果我们指定住宿价格为 1 晚, AmountBeforeTax 是 50,fixed_amount 是 TaxFeeInfo 将税费指定为 10,则

    促销率 =(AmountBeforeTax - 已修正 折扣)* 税费

    10.00 = 0 + 10

  • 如果我们要为 3 晚的住宿定价,其中 AmountAfterTax 值分别为 100、110 和 120,fixed_amount 为 150,则

    促销率 = 总和(AmountAfterTax) - (固定) 折扣)

    180.00 = (100 + 110 + 120) - 150

Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night 0..1 float

percentage”中的一个, fixed_amountfixed_amount_per_nightfixed_pricefixed_price_per_night 是 必填字段。

应用于每个 AmountAfterTax 每晚费率(如果指定了 applied_nights,则应用于最便宜的 N 个每晚费率)的固定折扣。如果 AmountAfterTax 未指定,它将应用于 AmountBeforeTax。假设 采用与每晚价格相同的币种。如果 “fixed_amount_per_night”大于 每晚价格会降为 0,即 折扣不会导致每晚费率变为负值。

示例:

  • 如果我们预订的是 3 晚住宿的价格, AmountAfterTax 的值为 100、110 和 120;和 fixed_amount_per_night 为 10,则

    促销率 = 总和(AmountBeforeTax - 固定金额 折扣)

    300.00 = ((100 - 10) + (110 - 10) + (120 - 10))

  • 如果我们预订的是 3 晚住宿的价格, AmountAfterTax 的值为 10、50 和 100;和 fixed_amount_per_night 是 20,那么

    促销率 = 总和(AmountAfterTax - 固定金额 折扣)

    110.00 = (0 + (50 - 20) + (100 - 20))

Promotions / HotelPromotions / Promotion / Discount / @fixed_price 0..1 float

必须指定 percentagefixed_amountfixed_amount_per_nightfixed_pricefixed_price_per_night 中的一个。

如果指定了 AmountAfterTax 每晚费率,则此属性会将住宿价格(含税费及其他费用)设置为指定的值。如果指定了 AmountBeforeTax,则 无论是否指定 AmountAfterTax,都会设置 指定价值的住宿的税前价格。假设 采用与每晚价格相同的币种。

如果 AmountAfterTax 旨在反映百分比税率,则为 AmountBeforeTax 设置固定价格可能会导致税费和其他费用不准确。一般情况下,强烈建议您使用 TaxFeeInfo 指定房源的税费及其他费用。

示例:

  • 如果我们指定住宿价格为 1 晚, AmountBeforeTax 是 90, AmountAfterTax 为 100,fixed_price 为 80,则促销率为 80。
  • 如果我们指定住宿价格为 1 晚, AmountBeforeTax 是 100,fixed_amount 为 80,TaxFeeInfo 指定的税率为 8%,则

    促销率 = 固定价格 *(1 + 百分比税费)

    86.40 = 80 * 1.08

  • 如果我们要为 3 晚的住宿定价,其中 AmountAfterTax 值分别为 100、110 和 120,fixed_amount 为 300,则

    促销率 = 300

Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night 0..1 float

必须指定 percentagefixed_amountfixed_amount_per_nightfixed_pricefixed_price_per_night 中的一个。

如果指定了 AmountAfterTax 每晚价格,则此 将住宿每晚的价格(包括税费和其他费用)设置为 指定值。如果指定了 AmountBeforeTax,则 无论是否指定 AmountAfterTax,都会设置 每晚的税前价格不超过指定值。时间是 假定采用的货币与每晚价格相同。

如果 AmountAfterTax 旨在反映百分比税率,则为 AmountBeforeTax 设置固定价格可能会导致税费和其他费用不准确。一般来说,强烈建议使用 TaxFeeInfo 指定房源的税费。

如果指定了 applied_nights,则新价格会应用于最便宜的 N 晚。

示例:

  • 如果我们确定的是入住 2 晚的价格, AmountBeforeTax 的值为 90、90; AmountAfterTax 的值为 100、100;和 fixed_price 为 80,则促销率为 80 + 80 = 160。
  • 如果我们要为 2 晚的住宿定价,其中 AmountBeforeTax 为 100、100;fixed_amount 为 80,并且 TaxFeeInfo 指定了 8% 的税费,则促销折扣率为 (80 + 80) * 1.08 = 172.8。
  • 如果我们预订的是 3 晚住宿的价格, AmountAfterTax 的值为 100、110 和 120;和 fixed_amount 为 110,则促销率为 110 * 3 = 330。
Promotions / HotelPromotions / Promotion / Discount / @applied_nights 0..1 integer

此参数只能用于 percentagefixed_amount_per_night

应用折扣的住宿晚数,从 价格最低必须是 1 到 99 之间的整数。如果未指定,则折扣会应用于所有晚数。

Promotions / HotelPromotions / Promotion / Discount / FreeNights 0..1 FreeNights 指定在满足最短住宿晚数要求时,对住宿的特定晚数提供折扣。父级 Discount 元素的属性 不允许。
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights 1 integer

应用折扣所需的住宿晚数。每个 折扣会应用于单独的住宿晚数细分。

例如,对于 10 晚住宿,stay_nights 为 4(repeats 为 true),则住宿两晚 细分:第 1 晚到第 4 晚以及第 5 晚到第 8 晚;该 第 9 晚和第 10 晚不在住宿晚数的范围内。

Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights 1 integer 住宿晚数的每个细分中的折扣晚数。
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage 1 float 应用于折扣晚数的折扣。如果此值为 50,则每个所选的夜晚都会享受 5 折优惠。
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection 1 string 必须是 cheapestlast。如果 last,则住宿晚段结束时的住宿晚数 每晚都有折扣。如果价格为 cheapest,则最便宜 住宿晚数内的晚数可享受折扣。
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats 1 boolean

折扣是否可应用于多个住宿晚数细分。如果为 false,则只有入住晚数的细分 行程开始时的优惠。如果为 true,则对任何住宿晚数段都会应用折扣。

例如,如果 stay_nights 为 4,行程为 10 晚,如果 repeatstrue,则 2 细分受众群会打折(1-4 晚和 5-8 晚);但是,如果 repeatsfalse,则只有 1 个细分 (第 1 至 4 晚)。

Promotions / HotelPromotions / Promotion / Discount / @rank 0..1 integer 为此促销活动分配排名,并将其设为“按排名选择”,系统会仅选择排名最低的促销活动进行应用。值 必须介于 1 到 99 之间(含 1 和 99)。如果多项促销活动共用 则任意选择和应用一个。
Promotions / HotelPromotions / Promotion / BestDailyDiscount 1 Discount

Discount 或 必须指定 BestDailyDiscount

指定 每日折扣,可能适用于住宿一晚的折扣。这是 与 Discount 不同,后者对整个应用应用折扣 住宿。

每个房源可能有一组促销活动, 被视为“每日最佳”。这意味着,对于每晚的住宿,系统都会选择并应用符合条件且可为当晚提供最大幅折扣的单个“每日最佳”促销优惠。

Stacking 可以使用 BestDailyDiscount 指定。其必须设置为 basenone。“每日最佳”折扣 将得到每晚最大折扣后的金额相加并视为 一次性入住折扣(即 Discount),同时遵循 配置的堆叠类型系统会将此组合折扣与其他符合条件的 <Discount> 促销活动进行比较,并可与这些促销活动叠加使用,以找出折扣力度最高的折扣或组合折扣。BestDailyDiscount 或 单个 Discount(以产生较低价格者为准) 已选定并应用于base堆叠类型

可以用此类折扣指定 StayDates, 但 application 必须设置为 overlap

.
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage 0..1 float

必须提供 percentagefixed_amountfixed_price 中的一个。

介于 0 到 100 之间的一个小数值,用于指定折扣百分比。 应用于 AmountAfterTax(或 AmountBeforeTax(如果 AmountAfterTax 不是) 指定)。

示例:

  • 如果 AmountAfterTax(每晚住宿费)为 100,percentage 为 20,则

    促销率 = AmountAfterTax * (1 - 百分比) 折扣)

    80.00 = 100 * (1 - 0.2)

  • 如果入住酒店的 AmountBeforeTax 为 100, percentage 为 20,TaxFeeInfo 指定税费为 10, 然后

    促销率 = AmountBeforeTax * (1 - 百分比) 折扣)+ 税费

    90.00 = 100 * (1 - 0.2) + 10

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount 0..1 float

percentage”中的一个, fixed_amountfixed_price 为必填项。

从单个 AmountAfterTax 每晚房价(如果未指定 AmountAfterTax,则为 AmountBeforeTax 每晚房价)中扣除的固定金额。假定其币种与每晚费率相同。如果该值大于 每晚房价的总和,所得值为零。

示例:

  • 如果单晚 AmountBeforeTax 是 90, AmountAfterTax 为 100,fixed_amount 为 20,则

    促销率 = AmountAfterTax - 固定 折扣

    80.00 = 100 - 20

  • 如果单晚 AmountBeforeTax 为 100, fixed_amount 为 20,TaxFeeInfo 指定的税费为 8%,之后

    促销率 =(AmountBeforeTax - 已修正 折扣)*(1 + 百分比税)

    86.40 = (100 - 20) * 1.08

Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price 0..1 float

必须提供 percentagefixed_amountfixed_price 中的一个。

如果指定了 AmountAfterTax 每晚价格,则此 将住宿晚的价格(包括税费和其他费用)设置为 指定值。如果指定了 AmountBeforeTax,则 无论是否指定 AmountAfterTax,都会设置 指定价值的住宿的税前价格。假设 采用与每晚价格相同的币种。

示例:

  • 如果单晚 AmountBeforeTax 是 90, AmountAfterTax 为 100,fixed_price 为 80,则促销率为 80。
  • 如果单晚 AmountBeforeTax 为 100, fixed_amount 为 80,TaxFeeInfo 指定的税费为 8%,之后

    促销率 = 固定价格 *(1 + 百分比税费)

    86.40 = 80 * 1.08

Promotions / HotelPromotions / Promotion / InventoryCount 0..1 InventoryCount 指定对于以下国家/地区中必须可用的会议室数量的限制 应用此促销优惠的顺序。折扣仅应用于 达到该限制的住宿晚数。不允许与 fixed_amount折扣。请注意,可用的 可以用 OTA_HotelInvCountNotifRQ (InvCount) 或 OTA_HotelAvailNotifRQ (BookingLimit).
Promotions / HotelPromotions / Promotion / InventoryCount / @min 0..1 integer 促销活动中必须提供的房间数下限 以应用于每晚价格如果未指定,则表示没有 最低。
Promotions / HotelPromotions / Promotion / InventoryCount / @max 0..1 integer 促销活动的可用房间数量上限 以应用于每晚价格如果未指定,则表示无上限。
Promotions / HotelPromotions / Promotion / LengthOfStay 0..1 LengthOfStay 指定此促销活动的住宿晚数限制 。超出住宿晚数时,系统不会应用促销优惠 最低和最高限制
Promotions / HotelPromotions / Promotion / LengthOfStay / @min 0..1 integer 住宿允许的最少住宿晚数 。如果未指定,则表示无最小值。
Promotions / HotelPromotions / Promotion / LengthOfStay / @max 0..1 integer 促销优惠适用的住宿晚数上限。如果未指定,则表示无上限。
Promotions / HotelPromotions / Promotion / MembershipRateRule 0..1 MembershipRateRule

用于触发特定界面的成员资格费率规则的容器 相关折扣的处理。

应指定此元素,除非 还指定了 <Discount>

Promotions / HotelPromotions / Promotion / MembershipRateRule / @id 1 string

的 ID 与会员计划相关联的价格规则

Promotions / HotelPromotions / Promotion / MinimumAmount 0..1 MinimumAmount 指定每日房价的最小总和(使用较大者 AmountBeforeTaxAmountAfterTax),则必须 。
Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount 1 integer 应用促销优惠所必须超过的值。
Promotions / HotelPromotions / Promotion / Occupancy 0..1 Occupancy 指定此促销活动适用的入住人数限制 。入住人数超出以下天数时,系统不会应用促销优惠 最低和最高限制。
Promotions / HotelPromotions / Promotion / Occupancy / @min 0..1 integer 用户指定的入住人数必须至少达到此值,系统才会应用折扣。
Promotions / HotelPromotions / Promotion / Occupancy / @max 0..1 integer 用户指定的入住人数不得超过此值,否则系统将无法应用折扣。
Promotions / HotelPromotions / Promotion / RatePlans 0..1 RatePlans 包含促销活动适用的费率方案列表的容器。 如果未指定 <RatePlans>,则促销活动 适用于所有价格方案
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan 1..n RatePlan 指定费率方案。费率方案由 如“交易”中所定义的套餐、费率和空房情况 (房源数据)、OTA_HotelRateAmountNotifRQ 和 OTA_HotelAvailNotifRQ 消息,并通过 PackageID 标识。
Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id 1 string 费率方案的唯一标识符。该值映射到 <PackageData> 中的 PackageID 值 交易(房源数据)消息中,以及 RatePlanCode 属性在 <StatusApplicationControl> <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> 封邮件。 允许的最大字符数为 50。
Promotions / HotelPromotions / Promotion / RoomTypes 0..1 RoomTypes 促销活动适用的客房类型列表的容器。 此促销优惠会应用于每个<RoomType> 。如果未指定 <RoomTypes>,则 促销适用于所有客房。
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType 1..n RoomType 指定房间类型。房间类型在交易(房源数据)消息的 <RoomData> 元素中定义,并使用其 <RoomID> 值进行引用。( <RoomID> 值也被 OTA_HotelRateAmountNotifRQ 中的 InvTypeCode 属性 messages.)
Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id 1 string 房源的唯一标识符(房间类型)。此值映射 发送给 <RoomID>。 允许的最大字符数为 50。
Promotions / HotelPromotions / Promotion / Stacking 0..1 Stacking 指定促销活动的组合方式。如果未指定,“类型” 假定为 base
Promotions / HotelPromotions / Promotion / Stacking / @type 1 enum

一项费率可应用多个促销优惠,具体取决于 此设置:

  • any:可与其他任何促销活动结合使用(但不包括 none),而应将促销信息显示 并不能保证实际应用
  • base:系统会先选择最优惠的符合条件的 base 促销活动,然后再应用其他促销活动。此方法之前名为 base_only
  • second:最优惠的second促销活动 已选择,并在base促销活动结束后应用 (如适用)且在any促销之前。
  • none:不能与其他产品结合使用 促销。

在允许的组合中,可产生 最大折扣应用于费率。

Promotions / HotelPromotions / Promotion / StayDates 0..1 StayDates 一个或多个日期范围的容器,用于确定 例如为了适应季节性折扣。
Promotions / HotelPromotions / Promotion / StayDates / @application 1 enum

说明应如何应用促销优惠。

有效值包括:

  • all:将促销优惠应用于以下活动的每晚: 如果行程中的所有日期重叠,则显示此行程 并附上了住宿日期信息
  • any:如果行程中的任何日期与住宿日期范围内的日期重叠,则将促销优惠应用于行程中的所有晚数。
  • overlap:仅将促销活动应用于 行程中与住宿日期的日期重叠的住宿晚数 范围。

必须始终指定此属性。

  • 如果 <Discount> 指定了 percentage,并且 application 设置为 allany,则折扣将以整次住宿费用的百分比形式应用。
  • 如果 <Discount> 指定 percentageapplication 设为 overlap, 折扣以每晚费率的百分比形式应用, 。
  • <Discount>,指定了 fixed_amount 而设置为 overlapapplication 则是 无效组合。
  • <FreeNights> 支持所有 application 值。请注意,对于 overlap, 仅将重叠住宿晚数视为折扣 要求。
Promotions / HotelPromotions / Promotion / StayDates / DateRange 1..99 DateRange

指定促销活动应用日期的日期范围。

还支持 YearlessDate 格式。

  • 如果 startend 中的一项是一年制 日期,两者都必须填充为无年份日期。
  • 不设年份的日期范围不得环绕新年。相反, 将范围表示为两个相邻的日期范围。例如: {"12-29", "01-05"} 可以表示为 {"12-29", "12-31"}{"01-01", "01-05"}

如果您想设置 StayDates 范围,以允许在特定日期促销,则应将 start 日期设置为当前日期,不添加 end,以免促销活动失效。

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start 0..1 Date or YearlessDate 开始日期(基于房源的时区),包含 日期范围。此日期必须早于 end 日期或与之相同。如果未指定 start,则为 日期范围实际上没有限制

如果存在以下情况,则应指定 start 值: 未提供“end”值。

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end 0..1 Date or YearlessDate 结束日期(基于房源的时区),包括 日期范围。此日期必须与 start 日期相同或晚于该日期。如果未指定 end,则为 实际上,从 start起,日期范围将不受限制。

如果未提供 start 值,您应指定 end 值。

Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week 0..1 string

允许出现在日期范围内的星期几。如果未指定,则日期范围内的所有日期均可。字符串中的每个字符都指定一天。例如:“MTWHF”指定了 日期范围允许工作日。

有效字符包括:

  • M(周一)
  • T(周二)
  • W:周三
  • H 表示周四
  • F - 周五
  • 周六 S
  • 周日U

任意字符组合均有效。

Promotions / HotelPromotions / Promotion / UserCountries 0..1 UserCountries 用于列出符合条件的用户地理位置(国家/地区)的容器 。如果指定了此属性,则只有列出的国家/地区中的符合条件的用户才能享受折扣费率。如果未指定,则向任何国家/地区符合条件的用户提供折扣费率。
Promotions / HotelPromotions / Promotion / UserCountries / @type 0..1 enum UserCountry 规范的类型。

有效值为 includeexclude

如果 UserCountry type 设置为 include,此促销活动适用于以下国家/地区的用户: 列出的国家/地区。

如果 UserCountry typeexclude, 此促销活动适用于所列用户 国家/地区。

如果未设置 User countries type,则会被视为 include,且促销优惠已应用于以下国家/地区的用户: 所列国家/地区。

Promotions / HotelPromotions / Promotion / UserCountries / Country 1..300 Country 指定一个国家/地区,在该国家/地区,用户符合促销条件。
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code 1 string CLDR 国家/地区 代码, 例如 DEFR。请注意,对于某些 CLDR 国家/地区代码与由 2 个字母表示的 ISO 不同 国家/地区代码。此外,CLDR 地区代码也不受支持。

示例

对于每项媒体资源,最多只能创建 500 项促销活动。请参阅 促销"从媒体资源中移除促销信息的示例。

基本信息

以下示例展示了基本的 Promotions 消息:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <BookingWindow min="7" max="330"/>
      <CheckinDates>
         <DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
      </CheckinDates>
      <CheckoutDates>
         <DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
      </CheckoutDates>
      <Devices>
        <Device type="mobile"/>
        <Device type="tablet"/>
      </Devices>
      <Discount percentage="20" applied_nights="2"/>
      <LengthOfStay min="2" max="14"/>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <Stacking type="base"/>
      <UserCountries>
        <Country code="US"/>
        <Country code="GB"/>
      </UserCountries>
    </Promotion>
  </HotelPromotions>
</Promotions>


库存状况

以下示例展示了如何在超额创建折扣时创建折扣 距离送达日期较近的广告资源:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow max="7"/>
      <Discount percentage="10"/>
      <InventoryCount min="3"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


删除一项促销活动

以下示例展示了如何删除房源的一项促销活动:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1" action="delete"/>
  </HotelPromotions>
</Promotions>

删除所有促销活动

以下示例展示了如何删除房源的所有促销活动:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>



叠加所有促销活动

以下示例展示了如何为属性叠加 <HotelPromotions> 一个或多个新的促销活动。如果为 action="overlay",系统会先删除所有已存储的促销活动,然后再存储当前消息中指定的促销活动:

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1" action="overlay">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-09-01" end="2020-09-30"/>
      </BookingDates>
      <Discount percentage="10"/>
      <RoomTypes>
         <RoomType id="123"/>
         <RoomType id="456"/>
      </RoomTypes>
      <RatePlans>
         <RatePlan id="234"/>
         <RatePlan id="567"/>
      </RatePlans>
      <Stacking type="base"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

3 种不同的堆叠类型

以下示例展示了三个不同的促销 已应用(basesecondany)。请注意,none促销不会 因为其他促销优惠能提供更好的折扣。如果原始 则折扣价为 72.90 美元。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="10"/>
      <Stacking type="base"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="10"/>
      <Stacking type="second"/>
    </Promotion>
    <Promotion id="3">
      <Discount percentage="10"/>
      <Stacking type="any"/>
    </Promotion>
    <Promotion id="4">
      <Discount percentage="25"/>
      <Stacking type="none"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


无堆叠类型

在下面的示例中,由于使用了 none 促销信息, 而组合其他促销活动的折扣则较低。如果原价为 100 美元,则折扣价为 75 美元。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="10"/>
      <Stacking type="base"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="10"/>
      <Stacking type="any"/>
    </Promotion>
    <Promotion id="3">
      <Discount percentage="25"/>
      <Stacking type="none"/>
    </Promotion>
  </HotelPromotions>
</Promotions>



预订期限边界

以下示例展示了 BookingWindow 元素使用时,其开始和结束边界均定义为 ISO 8601 持续时间 类型。根据此预订时间范围限制,您必须在入住前一天的 18:00 当天或之前进行预订,并且必须在入住前 2 天的 12:00 当天或之后进行预订。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingWindow min="P1DT6H" max="P2DT12H"/>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


预订日期日期/时间边界

以下示例展示了将 BookingDates 元素与 startend 属性(类型为 DateTime)搭配使用的情况。此预订日期限制要求完成预订 。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
         <DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
      </BookingDates>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>


不含年份的日期范围

以下示例展示了 CheckInDates 元素包含 DateRanges 的情况,其中 startend 字段不含年份。在此示例中,促销优惠适用于 入住日期在 12 月 29 日至 1 月 2 日之间,而不考虑年份。无年期 跨越新年边界的日期范围无效,因此 DateRange 表示为两个相邻的日期范围。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <CheckInDates>
         <DateRange start="12-29" end="12-31"/>
         <DateRange start="01-01" end="01-02"/>
      </CheckInDates>
      <Discount percentage="20"/>
    </Promotion>
  </HotelPromotions>
</Promotions>



FreeNights 折扣

以下示例应用每入住四晚,可享两晚 5 折优惠 指定的预订日期范围。对于十晚的行程,总共需要 四晚可享五折优惠。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <BookingDates>
        <DateRange start="2022-01-01" end="2022-05-31"/>
      </BookingDates>
      <Discount>
        <FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>

下个示例提供 1 晚 5 折优惠,即在 指定住宿日期范围。系统只会统计重叠的住宿晚数 才有资格享受折扣。以下行程(含签到) 在 2022 年 1 月 1 日和 2022 年 1 月 7 日退房、符合条件的住宿晚数和 折扣的应用方式如下。

  • 2022 年 1 月 1 日(住宿)
  • 2022-01-02(住宿)
  • 2022-01-03
  • 2022-01-04(折扣)
  • 2022-01-05(住宿)
  • 2022-01-06(住宿)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <StayDates application="overlap">
        <DateRange start="2022-01-01" end="2022-01-02"/>
        <DateRange start="2022-01-04" end="2022-01-06"/>
      </StayDates>
      <Discount>
        <FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
      </Discount>
    </Promotion>
  </HotelPromotions>
</Promotions>


排位选择

以下示例提供两种折扣,一种是八折优惠,另一种是八折优惠 八五折优惠。评估期间,仅应用 15% 的折扣 因为它的排名较低。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
  <HotelPromotions hotel_id="Property_1">
    <Promotion id="1">
      <Discount percentage="15" rank="25"/>
    </Promotion>
    <Promotion id="2">
      <Discount percentage="20" rank="50"/>
    </Promotion>
  </HotelPromotions>
</Promotions>

BestDailyDiscount

以下示例通过应用堆叠的 BestDailyDiscountDiscount 来为两晚住宿提供折扣。

<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
            id="123_abc"
            timestamp="2020-05-18T16:20:00-04:00">
 <HotelPromotions hotel_id="HotelID" action="overlay">
   <Promotion id="general">
     <BestDailyDiscount fixed_amount="20"/>
   </Promotion>
   <Promotion id="may">
     <BestDailyDiscount fixed_amount="50"/>
     <StayDates application="overlap">
        <DateRange start="2023-05-01" end="2023-05-31"/>
     </StayDates>
   </Promotion>
   <Promotion id="fiesta">
     <Discount fixed_amount_per_night="5"/>
     <Stacking type="any"/>
   </Promotion>
 </HotelPromotions>
</Promotions>

在 2023 年 4 月 30 日至 2023 年 5 月 2 日期间住两晚 在计算时,应考虑可得出 最接近的折扣最靠前。

第 1 晚,“常规”促销是唯一符合条件的 20 的固定折扣

第二个晚上,“可能”提供的折扣 “常规”折扣。因此,当“可以”已选择“固定折扣” 金额为 50

如果过夜,还可以参加“嘉年华”每晚 5 次促销折扣,或 总共 10 颗。可叠加使用各种最高每日折扣 因为“嘉年华”堆叠类型设置为“any”。如果将其设置为 base,则系统只会应用每日最佳折扣或“节日”折扣的组合。请参见 的说明 Stacking,了解详情。

总体而言,住宿价格可享受 20 + 50 + 10 = 80 的固定金额折扣。

响应

语法

PromotionsResponse 消息使用以下语法:

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
                    id="message_ID"
                    partner="partner_key">
  <!-- Either Success or Issues are populated. -->
  <Success/>
  <Issues>
    <Issue code="issue_code"
           status="issue_type">
      issue_description
    </Issue>
  </Issues>
</PromotionsResponse>

元素和属性

PromotionsResponse 消息包含以下元素和属性:

元素 / @Attribute 出现次数 类型 说明
PromotionsResponse 1 Complex element 表示收到的 促销活动请求消息。
PromotionsResponse / @timestamp 1 DateTime 此消息的创建日期和时间。
PromotionsResponse / @id 1 string 相关“推广”消息中的唯一标识符。
PromotionsResponse / @partner 1 string 此消息对应的合作伙伴账号。
PromotionsResponse / Success 0..1 Success 表示促销活动消息已成功处理,没有警告、错误或失败。

<Success><Issues> 为 。

PromotionsResponse / Issues 0..1 Issues 处理 促销消息。

<Success><Issues> 为 。

PromotionsResponse / Issues / Issue 1..n Issue 处理促销活动消息时遇到的警告、错误或失败的说明。如需详细了解这些问题,请访问 在 Feed 状态错误消息
PromotionsResponse / Issues / Issue / @code 1 integer 问题的标识符。
PromotionsResponse / Issues / Issue / @status 1 enum

遇到的问题类型。

有效值为 warningerror、 和 failure

示例

成功

以下是对已成功处理的促销消息的响应。

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Success/>
</PromotionsResponse>

问题

以下是对由于以下原因未处理的促销消息的回复: 错误。

<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
                    id="12345678"
                    partner="partner_key">
  <Issues>
    <Issue code="1001" status="error">Example</Issue>
  </Issues>
</PromotionsResponse>