概览
借助此 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 的后端:
多个账号,此值需要与 |
Promotions / @id | 1 | string | 此请求消息的唯一标识符。该值会返回 。允许使用的字符包括 a-z、A-Z、0-9、_ (下划线)和 -(短划线)。 |
Promotions / @timestamp | 1 | DateTime | 此消息的创建日期和时间。 |
Promotions / HotelPromotions | 0..n | HotelPromotions | 酒店的促销活动。每个促销活动只适用于 属性。 除非使用 |
Promotions / HotelPromotions / @hotel_id | 1 | string | 房源的唯一标识符。该值必须与
使用 指定的酒店 ID
<listing> 元素中的 <id>
。Hotel Center 中也会列出酒店 ID。 |
Promotions / HotelPromotions / @action | 0..1 | enum | 如果指定,值必须为 如果未指定,则当前指定的 消息为:
|
Promotions / HotelPromotions / Promotion | 0..99 | Promotion | 一项房源的促销活动。请注意,如果未指定 如需使用超过 99 个促销活动,请联系 您的技术支持客户经理 (TAM)。 |
Promotions / HotelPromotions / Promotion / @id | 1 | string | 促销活动的唯一标识符。最大数量 允许的字符数上限是 40。允许使用的字符包括:a-z、A-Z、0-9、 _(下划线)、-(短划线)和 .(英文句点)。 |
Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | 如果指定,则值必须为 如果指定了 |
Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | 一个或多个范围的容器,用于定义预订时间 才能应用促销优惠。 |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | 一个范围,用于指定开展促销活动必须预订的时间 。 |
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date 或 DateTime | 范围的开始日期或日期时间(基于媒体资源所在的时区),包括该日期/时间。
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date 或 DateTime | 范围的结束日期或日期时间(基于媒体资源所在的时区),包括该日期/时间。
|
Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | 允许出现在日期范围内的星期几。如果不是 指定日期范围,则允许日期范围内的所有日期。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。 有效字符包括:
任何字符组合均有效。 |
Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | 相对于 入住日期(以房源的时区为准)。例如,您可以将预订期限设置为入住前至少 7 天,但不超过 180 天。 |
Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | 入住前必须预订的最短入住天数
才能应用促销优惠。如果未指定此属性或其值
为 0 ,没有下限。
有效的值类型包括:
|
Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | 入住前的最晚入住天数
才能应用促销优惠。如果未指定此属性或其值
为 0 ,没有上限。
有效的值类型包括:
|
Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
定义对可设置费率最大值的限制 在应用促销优惠后展示。 促销活动必须始终指定 如果配置了堆叠,则可以对单次住宿应用多个包含 示例: 在
计算顺序如下:
60 是更严格的总体上限,这无关紧要, 仅适用于其自身的促销活动, 设置跨越整个促销活动堆栈的“天花板”上限 |
Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
折扣。 如果还指定了 税费及其他费用为 |
Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
定义对可设置费率的最小值的限制 在应用促销优惠后展示。 促销活动必须始终指定
如果配置了堆叠,则可以对单次住宿应用多个包含 示例: 在
计算顺序如下:
90 是更为严格的总底价,这一事实无关紧要, 仅适用于其自身的促销活动, 用于覆盖整个促销活动堆栈的底价。 |
Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
折扣应用后,每晚房价可设置的最低金额。 如果还指定了 税费及其他费用为 |
Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | 用于指定入住时间的一个或多个日期范围的容器 发生的所有情况。 |
Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | 指定入住必须在什么日期范围内进行,才能享受促销优惠 。如果您要删除一个或多个 促销。 也支持 YearlessDate 格式。
|
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”指定了 日期范围允许工作日。 有效字符包括:
任意字符组合均有效。 |
Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | 一个或多个日期范围的容器,用于定义退房时间 促销活动的触发条件。 |
Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | 一个日期范围,用于指定促销活动必须在什么时间退房 。对于非线性广告, 删除一个或多个宣传。 还支持 YearlessDate 格式。
|
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”指定了 日期范围允许工作日。 有效字符包括:
任意字符组合均有效。 |
Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | 用于列出有资格使用 推广活动。如果指定了此属性,则只有列出的设备上的符合条件的用户才能享受折扣优惠。如果未指定,则表示任何符合条件的用户 设备享受折扣价。 |
Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | 指定一种符合促销条件的用户设备。 |
Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | 一种设备的类型。值必须为 desktop 、tablet 或 mobile 。 |
Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | 必须指定 指定要应用于此促销活动的折扣。 |
Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | “ 介于 0 到 100 之间的一个小数值,用于指定折扣百分比。
应用于 示例:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | “ 从以下总和中减去的固定金额:
示例:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | “ 应用于每个 示例:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | 必须指定 如果指定了 如果 示例:
|
Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | 必须指定 如果指定了 如果 如果指定了 示例:
|
Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | 此参数只能用于
应用折扣的住宿晚数,从 价格最低必须是 1 到 99 之间的整数。如果未指定,则折扣会应用于所有晚数。 |
Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | 指定在满足最短住宿晚数要求时,对住宿的特定晚数提供折扣。父级 Discount 元素的属性
不允许。 |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | 应用折扣所需的住宿晚数。每个 折扣会应用于单独的住宿晚数细分。 例如,对于 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 | 必须是 cheapest 或 last 。如果
last ,则住宿晚段结束时的住宿晚数
每晚都有折扣。如果价格为 cheapest ,则最便宜
住宿晚数内的晚数可享受折扣。 |
Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | 折扣是否可应用于多个住宿晚数细分。如果为 例如,如果 |
Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | 为此促销活动分配排名,并将其设为“按排名选择”,系统会仅选择排名最低的促销活动进行应用。值 必须介于 1 到 99 之间(含 1 和 99)。如果多项促销活动共用 则任意选择和应用一个。 |
Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount |
指定
每日折扣,可能适用于住宿一晚的折扣。这是
与 每个房源可能有一组促销活动, 被视为“每日最佳”。这意味着,对于每晚的住宿,系统都会选择并应用符合条件且可为当晚提供最大幅折扣的单个“每日最佳”促销优惠。
可以用此类折扣指定 |
Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | 必须提供 介于 0 到 100 之间的一个小数值,用于指定折扣百分比。
应用于 示例:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | “ 从单个 示例:
|
Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | 必须提供 如果指定了 示例:
|
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 |
用于触发特定界面的成员资格费率规则的容器 相关折扣的处理。 不应指定此元素,除非
还指定了 |
Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string | |
Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | 指定每日房价的最小总和(使用较大者
AmountBeforeTax 或 AmountAfterTax ),则必须
。 |
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 | 一项费率可应用多个促销优惠,具体取决于 此设置:
在允许的组合中,可产生 最大折扣应用于费率。 |
Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | 一个或多个日期范围的容器,用于确定 例如为了适应季节性折扣。 |
Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | 说明应如何应用促销优惠。 有效值包括:
必须始终指定此属性。
|
Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | 指定促销活动应用日期的日期范围。 还支持 YearlessDate 格式。
如果您想设置 |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | 开始日期(基于房源的时区),包含
日期范围。此日期必须早于 end 日期或与之相同。如果未指定 start ,则为
日期范围实际上没有限制
如果存在以下情况,则应指定 |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | 结束日期(基于房源的时区),包括
日期范围。此日期必须与 start 日期相同或晚于该日期。如果未指定 end ,则为
实际上,从 start 起,日期范围将不受限制。
如果未提供 |
Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | 允许出现在日期范围内的星期几。如果未指定,则日期范围内的所有日期均可。字符串中的每个字符都指定一天。例如:“MTWHF”指定了 日期范围允许工作日。 有效字符包括:
任意字符组合均有效。 |
Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | 用于列出符合条件的用户地理位置(国家/地区)的容器 。如果指定了此属性,则只有列出的国家/地区中的符合条件的用户才能享受折扣费率。如果未指定,则向任何国家/地区符合条件的用户提供折扣费率。 |
Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | UserCountry 规范的类型。
有效值为 如果 UserCountry 如果 UserCountry 如果未设置 User countries |
Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | 指定一个国家/地区,在该国家/地区,用户符合促销条件。 |
Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | CLDR 国家/地区
代码,
例如 DE 或 FR 。请注意,对于某些
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 种不同的堆叠类型
以下示例展示了三个不同的促销
已应用(base
、second
、any
)。请注意,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
元素与 start
和 end
属性(类型为 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
的情况,其中 start
和 end
字段不含年份。在此示例中,促销优惠适用于
入住日期在 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
以下示例通过应用堆叠的 BestDailyDiscount
和 Discount
来为两晚住宿提供折扣。
<?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 | 表示促销活动消息已成功处理,没有警告、错误或失败。
|
PromotionsResponse / Issues | 0..1 | Issues | 处理
促销消息。
|
PromotionsResponse / Issues / Issue | 1..n | Issue | 处理促销活动消息时遇到的警告、错误或失败的说明。如需详细了解这些问题,请访问 在 Feed 状态错误消息。 |
PromotionsResponse / Issues / Issue / @code | 1 | integer | 问题的标识符。 |
PromotionsResponse / Issues / Issue / @status | 1 | enum | 遇到的问题类型。 有效值为 |
示例
成功
以下是对已成功处理的促销消息的响应。
<?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>