概览
借助此 API,您可以定义在遇到以下情况时如何对费率动态应用操作: 条件,例如调整价格或启用退款功能。 与 Promotions API 不同,Promotions API 仅适用于 折扣力度最高的符合条件的促销活动,此 API 会应用所有操作 在满足特定条件时(包括可能发生的价格调整) 最终价格会提高
请求
语法
RateModifications
消息使用以下语法:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="partner_key"
id="message_ID"
timestamp="timestamp">
<HotelRateModifications hotel_id="HotelID" action="[overlay]">
<ItineraryRateModification id="ModificationID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
<DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week=""MTWHFSU_or_subset""/>
</BookingDates>
<BookingWindow min="integer" max="integer"/>
<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>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<LengthOfStay min="integer" max="integer"/>
<MinimumAmount before_discount="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<StayDates application="[all|any]">
<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>
<ModificationActions>
<PriceAdjustment multiplier="float"/>
<RateRule id="RateRuleID"/>
<Refundable available="[false|true]"
refundable_until_days="number_of_days"
refundable_until_time="time"/>
<Availability status="[unavailable]"/>
</ModificationActions>
</ItineraryRateModification>
</HotelRateModifications>
</RateModifications>
元素和属性
RateModifications
消息包含以下元素
属性:
元素 / @Attribute | 出现次数 | 类型 | 说明 |
---|---|---|---|
RateModifications | 1 | Complex element | 费率修改消息的根元素。 |
RateModifications / @partner | 1 | string | 此消息所属的合作伙伴账号。此字符串值是
“合作伙伴密钥”值列于
<ph type="x-smartling-placeholder"></ph>
账号设置页面。
注意:如果您的后端为以下对象提供 Feed
多个账号,此值需要与 |
RateModifications / @id | 1 | string | 此请求消息的唯一标识符。该值会返回 。允许使用的字符包括 a-z、A-Z、0-9、_ (下划线)和 -(短划线)。 |
RateModifications / @timestamp | 1 | DateTime | 此消息的创建日期和时间。 |
RateModifications / HotelRateModifications | 0..n | HotelRateModifications | 房源的房价调整。每次费率调整都会应用 一项媒体资源 注意:如果可以应用多项费率修改 所有修改都会应用无特定顺序 。 |
RateModifications / HotelRateModifications / @hotel_id | 1 | string | 房源的唯一标识符。该值必须与
使用 指定的酒店 ID
<listing> 元素中的 <id>
。Hotel Center 中也会列出酒店 ID。 |
RateModifications / HotelRateModifications / @action | 0..1 | enum | 如果未指定 |
RateModifications / HotelRateModifications / ItineraryRateModification | 0..200 | ItineraryRateModification | 对房源的单次费率修改。 注意:费率修改很难调试, 建议您谨慎使用。对于需要集成 需要进行 200 次以上的修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / @id | 1 | string | 房价修改的唯一标识符。最大数量 允许的字符数上限是 40。允许使用的字符包括:a-z、A-Z、0-9、 _(下划线)、-(短划线)和 .(英文句点)。 |
RateModifications / HotelRateModifications / ItineraryRateModification / @action | 0..1 | enum | 如果未指定,费率修改也会
系统不会存储 如果指定,则值必须为 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates | 0..1 | BookingDates | 用于指定预订时间的一个或多个日期范围的容器必须 才能应用费率修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange | 1..99 | DateRange | 指定房价必须在何时预订的日期范围 要应用的修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @start | 0..1 | Date | 开始日期(基于房源的时区),包含
日期范围。该日期必须早于或等于
end 日期。如果未指定 start ,则为
日期范围实际上没有限制 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @end | 0..1 | Date | 结束日期(基于房源的时区),包括
日期范围。该日期必须与
start 日期。如果未指定 end ,则为
日期范围实际上没有结束日期 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingDates / DateRange / @days_of_week | 0..1 | string | 允许出现在日期范围内的星期几。如果不是 指定日期范围,则允许日期范围内的所有日期。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。 有效字符包括:
任意字符组合均有效。 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow | 0..1 | BookingWindow | 相对于 入住日期(以房源的时区为准)。例如, 预订时间范围可设置为至少 7 天,但不得超过 180 天, 。 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @min | 0..1 | integer | 入住前必须提前至少提前几天预订 才能应用费率修改如果未指定,则会 没有最低限制。 |
RateModifications / HotelRateModifications / ItineraryRateModification / BookingWindow / @max | 0..1 | integer | 入住前最长入住天数 才能应用费率修改如果未指定,则会 没有最大值。 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates | 0..1 | CheckinDates | 用于指定入住时间的一个或多个日期范围的容器 才能应用费率修改 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange | 1..99 | DateRange | 指定房价入住日期的日期范围 要应用的修改。对于非线性广告, 删除一个或多个价格修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @start | 0..1 | Date | 开始日期(基于房源的时区),包含
日期范围。该日期必须早于或等于
end 日期。如果未指定 start ,则为
日期范围实际上没有限制 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @end | 0..1 | Date | 结束日期(基于房源的时区),包括
日期范围。该日期必须与
start 日期。如果未指定 end ,则为
日期范围实际上没有结束日期 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckinDates / DateRange / @days_of_week | 0..1 | string | 允许出现在日期范围内的星期几。如果不是 指定日期范围,则允许日期范围内的所有日期。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。 有效字符包括:
任意字符组合均有效。 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates | 0..1 | CheckoutDates | 一个或多个日期范围的容器,用于定义退房时间 只有这样才能应用费率修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange | 1..99 | DateRange | 指定房价必须在何时退房的日期范围 要应用的修改。对于非线性广告, 删除一个或多个价格修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @start | 0..1 | Date | 开始日期(基于房源的时区),包含
日期范围。该日期必须早于或等于
end 日期。如果未指定 start ,则为
日期范围实际上没有限制 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @end | 0..1 | Date | 结束日期(基于房源的时区),包括
日期范围。该日期必须与
start 日期。如果未指定 end ,则为
日期范围实际上没有结束日期 |
RateModifications / HotelRateModifications / ItineraryRateModification / CheckoutDates / DateRange / @days_of_week | 0..1 | string | 允许出现在日期范围内的星期几。如果不是 指定日期范围,则允许日期范围内的所有日期。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。 有效字符包括:
任意字符组合均有效。 |
RateModifications / HotelRateModifications / ItineraryRateModification / Devices | 0..1 | Devices | 用于列出有资格使用 费率调整。如果已指定,则费率修改 如果用户与列出的任一设备匹配,则会应用此参数。如果未指定, 那么这不会限制费率修改的应用。 |
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device | 1..3 | Device | 指定一种符合此费率条件的用户设备 修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / Devices / Device / @type | 1 | enum | 一种设备的类型。该值必须为 desktop ,
tablet 或 mobile 。 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions | 1 | ModificationActions | 符合所有指定条件时应用于费率的操作 都符合。 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment | 0..1 | PriceAdjustment | 将 AmountBeforeTax 和
AmountAfterTax 按指定调节系数 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / PriceAdjustment / @multiplier | 1 | float | AmountBeforeTax 和 AmountAfterTax 都是
乘以该值。 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule | 0..1 | RateRule | 通过应用指定的费率规则 ID 来修改费率。 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / RateRule / @id | 1 | string | 此 ID 将费率与
费率规则定义文件。
注意:
<ph type="x-smartling-placeholder">
|
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable | 0..1 | Refundable | 将房价的可退款性覆盖为指定值。
设置属性时,请注意以下事项:
|
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @available | 1 | boolean | (必需)设置为 1 或
true ,用于指明费率是否允许
退款;否则设为 0 或 false 。 |
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (如果
available 为 true )指定
提前几天办理全额退款
请求。refundable_until_days 的值
必须是 0 到 330 之间的整数(含 0 和 330)。 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Refundable / @refundable_until_time | 0..1 | Time | (推荐当 available 为 true 时)指定
一天当中的最新时间,即酒店的当地时间,
退款申请受理。这可与
用于指定 refundable_until_days ,对于
例如,“退款可在第二天下午 4:00 之前退款
签到”。如果未设置 refundable_until_time ,则应用此值
默认为午夜。 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability | 0..1 | Availability | 将费率的可用性替换为指定值。
我们仅支持将房价设置为 unavailable 。 |
RateModifications / HotelRateModifications / ItineraryRateModification / ModificationActions / Availability / @status | 1 | enum | 如果为 status="unavailable" ,则视为费率
无论该订单是否存在有效价格,
。 |
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay | 0..1 | LengthOfStay | 定义此房价修改的住宿晚数限制 。住宿晚数为 将超出最低和最高限制 |
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @min | 0..1 | integer | 住宿允许的最短住宿晚数(费率调整幅度) 。如果未指定,则没有最小值。 |
RateModifications / HotelRateModifications / ItineraryRateModification / LengthOfStay / @max | 0..1 | integer | 入住期间允许修改房价的最长住宿晚数 。如果未指定,则表示没有最大值。 |
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount | 0..1 | MinimumAmount | 指定每日房价的最小总和(使用较大者
AmountBeforeTax 或 AmountAfterTax ),则必须
才能应用费率修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / MinimumAmount / @before_discount | 1 | integer | 费率调整必须超过的值 。 |
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans | 0..1 | RatePlans | 用来列出要修改费率的费率方案的容器
。如果未指定 <RatePlans> ,则
此修改适用于所有价格方案。 |
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan | 1..n | RatePlan | 指定费率方案。费率方案由 如“交易”中所定义的套餐、费率和空房情况 (房源数据)、OTA_HotelRateAmountNotifRQ 和 OTA_HotelAvailNotifRQ 消息,并通过 PackageID 标识。 |
RateModifications / HotelRateModifications / ItineraryRateModification / RatePlans / RatePlan / @id | 1 | string | 费率方案的唯一标识符。该值映射到
<PackageData> 中的 PackageID 值
“交易(房源数据)”消息中,以及
RatePlanCode 属性
两者均有 <StatusApplicationControl>
<OTA_HotelRateAmountNotifRQ> 和
<OTA_HotelAvailNotifRQ> 封邮件。
允许的最大字符数为 50。 |
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes | 0..1 | RoomTypes | 包含房价修改所适用的客房类型的列表的容器。
调整后的费率会应用于每个<RoomType>
。如果未指定 <RoomTypes> ,则
房价修改适用于所有客房。 |
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType | 1..n | RoomType | 指定房间类型。客房类型是在
<RoomData> 元素在
交易(房源数据)消息且
使用 <RoomID> 值引用。(
<RoomID> 值也被
OTA_HotelRateAmountNotifRQ 中的 InvTypeCode 属性
messages.) |
RateModifications / HotelRateModifications / ItineraryRateModification / RoomTypes / RoomType / @id | 1 | string | 房源的唯一标识符(房间类型)。此值映射
发送给 <RoomID> 。
允许的最大字符数为 50。 |
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates | 0..1 | StayDates | 一个或多个日期范围的容器,用于确定 应用费率修改,例如根据季节性定价进行调整。 |
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / @application | 1 | enum | 说明应如何应用费率调整。 有效值包括:
必须始终指定此属性。 |
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange | 1..99 | DateRange | 用于指定价格调整日期的日期范围 。 |
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @start | 0..1 | Date | 开始日期(基于房源的时区),包含
日期范围。该日期必须早于或等于
end 日期。如果未指定 start ,则为
日期范围实际上没有限制 |
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @end | 0..1 | Date | 结束日期(基于房源的时区),包括
日期范围。此日期必须与start 相同或更晚
日期。如果未指定 end ,则为
日期范围实际上没有结束日期 |
RateModifications / HotelRateModifications / ItineraryRateModification / StayDates / DateRange / @days_of_week | 0..1 | string | 允许出现在日期范围内的星期几。如果不是 指定日期范围,则允许日期范围内的所有日期。每个 字符串中的字符指定了日期。例如:“MTWHF”指定了 日期范围允许工作日。 有效字符包括:
任意字符组合均有效。 |
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries | 0..1 | UserCountries | 如果已指定,则只有在用户 位于某个指定的国家/地区。如果未指定,则费率 无论用户身在何处,系统都会应用修改。 |
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / @type | 0..1 | enum | UserCountry 规范的类型。
有效值为 如果 UserCountry 如果 UserCountry 如果未设置 User countries |
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country | 1..300 | Country | 指定允许修改费率的用户所在国家/地区。 |
RateModifications / HotelRateModifications / ItineraryRateModification / UserCountries / Country / @code | 1 | string | CLDR 国家/地区代码;
例如 DE 或 FR 。请注意,对于某些
CLDR 国家/地区代码与由 2 个字母表示的 ISO 不同
国家/地区代码。此外,CLDR 地区代码也不受支持。 |
示例
基本消息
以下示例展示了基本的 RateModifications
` 消息:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1">
<ItineraryRateModification id="1">
<BookingDates>
<DateRange start="2023-07-01" end="2023-07-31" days_of_week="MTWHF"/>
<DateRange start="2023-09-01" end="2023-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2023-10-01" end="2023-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2023-10-08" end="2023-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
<ModificationActions>
<PriceAdjustment multiplier="1.2"/>
</ModificationActions>
</ItineraryRateModification>
</HotelRateModifications>
</RateModifications>
删除一项价格修改
以下示例展示了如何删除针对 属性:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1">
<ItineraryRateModification id="1" action="delete"/>
</HotelRateModifications>
</RateModifications>
删除所有费率修改
以下示例展示了如何删除 属性:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1" action="overlay"/>
</RateModifications>
叠加所有费率修改
以下示例展示了如何将 <HotelRateModifications>
与
属性。时间
action="overlay"
,所有已存储的费率修改均在
存储当前消息中指定的费率修改:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1" action="overlay"/>
<ItineraryRateModification id="1">
<BookingDates>
<DateRange start="2023-09-01" end="2023-09-30"/>
</BookingDates>
<ModificationActions>
<PriceAdjustment multiplier="1.2"/>
</ModificationActions>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
</ItineraryRateModification>
</HotelRateModifications>
</RateModifications>
多项修改操作
以下示例展示了如何执行多项修改操作 :
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1">
<ItineraryRateModification id="1">
<BookingDates>
<DateRange start="2023-01-01" end="2023-02-28"/>
</BookingDates>
<ModificationActions>
<PriceAdjustment multiplier=".95"/>
<Refundable available="true"
refundable_until_days="1"
refundable_until_time="12:00:00"/>
</ModificationActions>
</ItineraryRateModification>
</HotelRateModifications>
</RateModifications>
为用户所在国家/地区停用价格方案
以下示例展示了如何将价格方案限制为
日语 (JP
) 用户:
<?xml version="1.0" encoding="UTF-8"?>
<RateModifications partner="account_xyz"
id="123_abc"
timestamp="2023-05-22T16:20:00-04:00">
<HotelRateModifications hotel_id="Property_1">
<ItineraryRateModification id="1">
<RatePlans>
<RatePlan id="jp_only"/>
</RatePlans>
<UserCountries type="exclude">
<Country code="JP"/>
</UserCountries>
<ModificationActions>
<Availability status="unavailable"/>
</ModificationActions>
</ItineraryRateModification>
</HotelRateModifications>
</RateModifications>
响应
语法
RateModificationsResponse
消息使用以下语法:
<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues will be populated. -->
<Success/>
<Issues>
<Issue code="issue_code" status="issue_type"><var>issue_description</var></Issue>
</Issues>
</RateModificationsResponse>
元素和属性
RateModificationsResponse
消息包含以下内容
元素和属性:
元素 / @Attribute | 出现次数 | 类型 | 说明 |
---|---|---|---|
RateModifications | 1 | Complex element | 表示收到的 RateModifications 请求消息。 |
RateModificationsResponse / @timestamp | 1 | DateTime | 此消息的创建日期和时间。 |
RateModificationsResponse / @id | 1 | string | 来自相关 RateModifications 消息的唯一标识符。 |
RateModificationsResponse / @partner | 1 | string | 此消息所属的合作伙伴账号。 |
RateModificationsResponse / Success | 0..1 | Success | 指示 RateModifications 消息已成功处理
而不会出现警告、错误或故障
|
RateModificationsResponse / Issues | 0..1 | Issues | 处理
RateModifications 消息。
|
RateModificationsResponse / Issues / Issue | 1..n | Issue | 对在调试过程中遇到的警告、错误或失败情况的说明 处理 RateModifications 消息。有关这些问题的详情, 在“Feed 状态错误”中发现 信息。 |
RateModificationsResponse / Issues / Issue / @code | 1 | integer | 问题的标识符。 |
RateModificationsResponse / Issues / Issue / @status | 1 | enum | 遇到的问题类型。 有效值为 |
示例
成功
以下是对已成功处理的 RateModifications 的响应 消息。
<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</RateModificationsResponse>
问题
以下是对未处理的 RateModifications 消息的响应 发生错误。
<?xml version="1.0" encoding="UTF-8"?>
<RateModificationsResponse timestamp="2023-05-22T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</RateModificationsResponse>