税务信息

请求

语法

TaxFeeInfo 消息使用以下语法:

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="timestamp"
            id="message_ID"
            partner="partner_key">
  <Property action="[overlay]">
    <ID>HotelID</ID>
    <Taxes>
      <Tax>
        <RoomTypes>
          <RoomType id="RoomID_1"/>
          <RoomType id="RoomID_2"/>
        </RoomTypes>
        <RatePlans>
          <RatePlan id="PackageID_1"/>
          <RatePlan id="PackageID_2"/>
        </RatePlans>
        <BookingDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </BookingDates>
        <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>
        <StayDates application="[all|any|overlap]">
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </StayDates>
        <Type>[percent|amount|cumulative_percent]</Type>
        <Basis>[room|person]</Basis>
        <Period>[stay|night]</Period>
        <Currency>currency_code</Currency>
        <Amount>tax_amount</Amount>
        <ApplicableNights max="integer" excluded="integer"/>
        <LengthOfStay min="integer" max="integer"/>
        <!-- Use either <Amount> or <Brackets> -->
        <Brackets base_amount="tax_amount"/>
          <Bracket starts_at="nightly_rate" amount="tax_amount"/>
        </Brackets>
        <AgeBrackets>
          <AdultCharge amount="tax_amount"/>
          <ChildAgeBrackets>
            <ChildAgeBracket max_age="max_age" amount="tax_amount"/>
          </ChildAgeBrackets>
        </AgeBrackets>
        <UserCountries type="[include|exclude]">
          <Country code="country_code1"/>
          <Country code="country_code2"/>
        </UserCountries>
        <!--"exclusive" parameter is optional -->
        <Rank exclusive="[true|false]">integer</Rank>
      </Tax>
    </Taxes>
    <Fees>
      <Fee>
        <RoomTypes>
          <RoomType id="RoomID_1"/>
          <RoomType id="RoomID_2"/>
        </RoomTypes>
        <RatePlans>
          <RatePlan id="PackageID_1"/>
          <RatePlan id="PackageID_2"/>
        </RatePlans>
        <BookingDates>
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </BookingDates>
        <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>
        <StayDates application="[all|any|overlap]">
          <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD" days_of_week="MTWHFSU_or_subset"/>
        </StayDates>
        <Type>[percent|amount|cumulative_percent]</Type>
        <Basis>[room|person]</Basis>
        <Period>[stay|night]</Period>
        <Currency>currency_code</Currency>
        <Amount>fee_amount</Amount>
        <ApplicableNights max="integer" excluded="integer"/>
        <LengthOfStay min="integer" max="integer"/>
        <!-- Use either <Amount> or <Brackets> -->
        <Brackets base_amount="tax_amount"/>
          <Bracket starts_at="nightly_rate" amount="tax_amount"/>
        </Brackets>
        <AgeBrackets>
          <AdultCharge amount="tax_amount"/>
          <ChildAgeBrackets>
            <ChildAgeBracket max_age="max_age" amount="tax_amount"/>
          </ChildAgeBrackets>
        </AgeBrackets>
        <UserCountries type="[include|exclude]">
          <Country code="country_code1"/>
          <Country code="country_code2"/>
        </UserCountries>
        <!--"exclusive" parameter is optional -->
        <Rank exclusive="[true|false]">integer</Rank>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>

元素和属性

TaxFeeInfo 消息具有以下元素和属性:

元素 / @Attribute 出现次数 类型 说明
TaxFeeInfo 1 Complex element 用于定义单个房源的税费和其他费用的消息的根元素。
TaxFeeInfo / @timestamp 1 DateTime 相应消息的创建日期和时间。
TaxFeeInfo / @id 1 string 相应请求消息的唯一标识符。此值会在响应消息中返回。允许使用的字符包括 a-zA-Z0-9_(下划线)和 -(短划线)。
TaxFeeInfo / @partner 1 string 相应消息的合作伙伴账号。此字符串值是 Hotel Center 中 “账号设置”页面上列出的“合作伙伴密钥”值。

注意:如果您有一个可为多个账号提供 Feed 的后端,则此值需要与同一账号的 <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> 消息的 <RequestorID> 元素中指定的 ID 属性值一致。

TaxFeeInfo / Property 1..n Property 用于定义单个房源的税费和其他费用的容器。
TaxFeeInfo / Property / @action 0..1 string 指定更新的应用方式。仅支持 overlay,默认值为 overlay。在应用此更新之前,系统会清除相应媒体资源的所有先前 TaxesFees
TaxFeeInfo / Property / ID 1 string 房源的唯一标识符。此值必须与酒店列表 Feed 的<listing> 元素中使用 <id> 指定的酒店 ID 一致。您还可以在 Hotel Center 中找到酒店 ID。
TaxFeeInfo / Property / Taxes 0..1 Taxes 包含一个或多个 <Tax> 元素的容器。
TaxFeeInfo / Property / Taxes / Tax 1..n Tax 适用于相应房源的个人税费。
TaxFeeInfo / Property / Taxes / Tax / RoomTypes 0..1 RoomTypes 包含适用相应税费的客房类型列表的容器。 税费会应用于指定的每个 <RoomType>。如果未指定 <RoomTypes>,则税费适用于所有客房。
TaxFeeInfo / Property / Taxes / Tax / RoomTypes / RoomType 1..n RoomType 指定房间类型。客房类型在交易(房源数据)消息的 <RoomData> 元素中定义,并使用其 RoomID 进行标识。(其 <RoomID> 值也会被 OTA_HotelRateAmountNotifRQ 消息中的 InvTypeCode 属性引用。)
TaxFeeInfo / Property / Taxes / Tax / RoomTypes / RoomType / @id 1 string 相应房源(房型)的唯一标识符。此值会映射到交易(房源数据)消息中的 <RoomID>。允许的最大字符数为 50。
TaxFeeInfo / Property / Taxes / Tax / RatePlans 0..1 RatePlans 包含适用相应税费的费率方案列表的容器。 如果未指定 <RatePlans>,则相应税费适用于所有费率方案。
TaxFeeInfo / Property / Taxes / Tax / RatePlans / RatePlan 1..n RatePlan 指定费率方案。房价方案由套餐、房价和空房情况组合而成,如交易(房源数据)、OTA_HotelRateAmountNotifRQ 和 OTA_HotelAvailNotifRQ 消息中所定义,并由 PackageID 标识。
TaxFeeInfo / Property / Taxes / Tax / RatePlans / RatePlan / @id 1 string 相应费率方案的唯一标识符。此值对应于交易(房源数据)消息的 <PackageData> 中的 PackageID 值,以及在 <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> 消息的 <StatusApplicationControl> 属性下设置的 RatePlanCode 值。 允许的最大字符数为 50。
TaxFeeInfo / Property / Taxes / Tax / BookingDates 0..1 BookingDates 一个容器,用于存放一个或多个日期范围,这些日期范围用于定义必须在何时进行预订才能应用相应税费。
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange 1..99 DateRange 一个日期范围,用于指定必须在何时进行预订才能应用相应税费。
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @start 0..1 Date 日期范围的开始日期(含),以媒体资源所在的时区为准。此日期必须早于或等于 end 日期。如果未指定 start,则日期范围在开始日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @end 0..1 Date 日期范围的结束日期(以媒体资源的时区为准,含)。此日期必须与 start 日期相同或晚于该日期。如果未指定 end,则日期范围在结束日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / BookingDates / DateRange / @days_of_week 0..1 string

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

有效字符包括:

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

任何字符组合均有效。

TaxFeeInfo / Property / Taxes / Tax / CheckinDates 0..1 CheckinDates 一个容器,用于存放一个或多个日期范围,这些日期范围用于定义必须在何时办理入住手续才能应用相应税费。
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange 1..20 DateRange 一个日期范围,用于指定必须在何时办理入住手续才能应用相应税费。
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @start 0..1 Date 日期范围的开始日期(含),以媒体资源所在的时区为准。此日期必须早于或等于 end 日期。如果未指定 start,则日期范围在开始日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @end 0..1 Date 日期范围的结束日期(以媒体资源的时区为准,含)。此日期必须与 start 日期相同或晚于该日期。如果未指定 end,则日期范围在结束日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / CheckinDates / DateRange / @days_of_week 0..1 string

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

有效字符包括:

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

任何字符组合均有效。

TaxFeeInfo / Property / Taxes / Tax / CheckoutDates 0..1 CheckoutDates 一个容器,包含一个或多个日期范围,用于定义必须在何时退房才能应用相应税费。
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange 1..20 DateRange 一个日期范围,用于指定必须在何时退房才能应用相应税费。
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @start 0..1 Date 日期范围的开始日期(含),以媒体资源所在的时区为准。此日期必须早于或等于 end 日期。如果未指定 start,则日期范围在开始日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @end 0..1 Date 日期范围的结束日期(以媒体资源的时区为准,含)。此日期必须与 start 日期相同或晚于该日期。如果未指定 end,则日期范围在结束日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / CheckoutDates / DateRange / @days_of_week 0..1 string

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

有效字符包括:

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

任何字符组合均有效。

TaxFeeInfo / Property / Taxes / Tax / StayDates 0..1 StayDates

一个或多个日期范围的容器,用于确定是否应用税费,例如为了适应季节性折扣。

TaxFeeInfo / Property / Taxes / Tax / StayDates / @application 1 enum

说明应如何应用税费。

有效值包括:

  • all:如果行程中的所有日期都与住宿日期重叠,则将税费应用于行程中的每个晚上。
  • any:如果行程中的任何日期与住宿日期范围中的日期重叠,则将税费应用于行程中的所有晚数。
  • overlap:仅对行程中与住宿日期范围内的日期重叠的晚数应用税费。

    注意:仅当 <Period> 设置为 night 时,overlap 才有效。

必须始终指定此属性。

TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange 1..99 DateRange 指定应用税费的日期范围。
TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @start 0..1 Date 日期范围的开始日期(含),以媒体资源所在的时区为准。此日期必须早于或等于 end 日期。如果未指定 start,则日期范围在开始日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @end 0..1 Date 日期范围的结束日期(以媒体资源的时区为准,含)。此日期必须与 start 日期相同或晚于该日期。如果未指定 end,则日期范围在结束日期方面实际上不受限制。
TaxFeeInfo / Property / Taxes / Tax / StayDates / DateRange / @days_of_week 0..1 string

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

有效字符包括:

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

任何字符组合均有效。

TaxFeeInfo / Property / Taxes / Tax / Type 1 enum

有效值包括:

  • percent: 总费率的百分比
  • amount: 要添加到最终费率的固定金额
  • cumulative_percent: 在计算此税费或费用之前累积的总费率、税费和费用的百分比。如果指定了此值,则还必须指定 <Rank>
  • <Brackets><AgeBrackets> 不得指定为 cumulative_percent 类型。

TaxFeeInfo / Property / Taxes / Tax / Basis 1 enum

有效值包括:

  • room: <Amount> 会应用于房间。
  • person: <Amount> 按人头收取。 此值仅在 <Type> 设置为“金额”时适用。
TaxFeeInfo / Property / Taxes / Tax / Period 1 enum

有效值包括:

  • stay:<Amount> 添加到住宿的总费率中。
  • night: <Amount> 按入住晚数收取。
TaxFeeInfo / Property / Taxes / Tax / Currency 0..1 string 相应税费的三字母币种代码(例如:USD)。

注意:如果未指定 <Currency>,但指定了 <Amount>,则 <Currency> 值默认为基本汇率币种。

TaxFeeInfo / Property / Taxes / Tax / Amount 0..1 float 税费的百分比或金额值。
TaxFeeInfo / Property / Taxes / Tax / ApplicableNights 0..1 ApplicableNights 仅当 <Type> 设置为 金额<Period> 设置为 晚数时,此值才适用。

限制可应用税费的晚数。

请指定 maxexcluded,但不能同时指定这两者。

TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @max 0..1 integer <ApplicableNights max="N"> 表示应排除前 N 晚之后的夜晚。
TaxFeeInfo / Property / Taxes / Tax / ApplicableNights / @excluded 0..1 integer <ApplicableNights excluded="N"> 表示应排除前 N 个晚上的住宿。
TaxFeeInfo / Property / Taxes / Tax / LengthOfStay 0..1 LengthOfStay 定义可应用此税费的住宿时长限制。 如果住宿天数超出最小和最大限制,则不适用相应税费。
TaxFeeInfo / Property / Taxes / Tax / LengthOfStay / @min 0..1 integer 住宿中允许的最少晚数,只有达到此晚数才会应用相应税费。 如果未指定,则表示没有最小值。
TaxFeeInfo / Property / Taxes / Tax / LengthOfStay / @max 0..1 integer 住宿中允许的最长晚数,超过此晚数将不适用相应税费。 如果未指定,则没有上限。
TaxFeeInfo / Property / Taxes / Tax / Brackets 0..1 Brackets 包含一个或多个 <Bracket> 元素的容器。 定义一组连续且不重叠的税率档位。例如:印度 GST 税级。

仅当 <Period> 设置为 night 且未指定 <Amount> 时,此元素才有效。

TaxFeeInfo / Property / Taxes / Tax / Brackets / @base_amount 0..1 float 适用于低于第一个价格区间的 starts_at 值的每晚价格的税费百分比或金额值。
TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket 1..n Bracket 根据每晚房价定义税率档位。
TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket / @starts_at 1 float

定义税率区间的下限。上限在后续括号的 starts_at 字段中指定。 最后一个区间的上限不确定。

当每晚房价大于或等于相应税档的 starts_at 值,且严格小于后续税档的 starts_at 值时,相应税档处于有效状态。

此值必须严格大于 0。

TaxFeeInfo / Property / Taxes / Tax / Brackets / Bracket / @amount 1 float 相应税率档位所适用的税率或税额值。
TaxFeeInfo / Property / Taxes / Tax / AgeBrackets 0..1 AgeBrackets 允许根据入住者的年龄指定一组税费。

仅当未指定 <Brackets><Amount><Basis> 设置为 person<Type> 设置为 amount 时,此元素才有效。

TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / AdultCharge 0..1 AdultCharge 用于指定成人税费的容器。
TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / AdultCharge / @amount 1 float 针对成人应用的固定税费金额。
TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets 0..1 ChildAgeBrackets 用于容纳一个或多个 <ChildAgeBracket> 元素的容器。
TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket 1..n ChildAgeBracket 定义儿童的年龄范围以及相应的税费金额。
TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age 1 integer

定义儿童年龄的上限。下限在前面括号的 max_age 字段中指定 + 1。 上限和下限均包含在内。第一个区间的下限为 0。

max_age 必须在 0 到 17 的范围内(含边界值)。

TaxFeeInfo / Property / Taxes / Tax / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount 1 float 适用于此年龄段儿童的固定税额。
TaxFeeInfo / Property / Taxes / Tax / UserCountries 0..1 UserCountries 用于列出含税或不含税的用户国家/地区的容器。如果存在,则仅针对指定国家/地区的用户包含或排除相应税费。
TaxFeeInfo / Property / Taxes / Tax / UserCountries / @type 0..1 enum UserCountries 规范的类型。

有效值为 includeexclude

如果 UserCountries type 设置为 include,则税费仅适用于所列国家/地区的用户。

而如果 UserCountries typeexclude,则税费仅适用于所列国家/地区以外的用户。

如果未设置 UserCountries type,我们会将其视为 include,并且税费仅适用于所列国家/地区的用户。

TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country 1..n Country 在 UserCountries 列表中定义一个国家/地区。
TaxFeeInfo / Property / Taxes / Tax / UserCountries / Country / @code 1 string CLDR 国家/地区代码,例如 DEFR。请注意,对于某些国家/地区,CLDR 国家/地区代码与双字母 ISO 国家/地区代码并不相同。此外,不支持 CLDR 地区代码。
TaxFeeInfo / Property / Taxes / Tax / Rank 1 integer

用于指定税费或其他费用的应用顺序的等级。 例如,值为 2 表示税费是第二个应用的。 如果 <Type> 设置为 cumulative_percent,则应始终指定此元素。一般来说,此排序适用于税费和费用。

<Rank>2</Rank>

税费之间允许存在重复的排名值,但这可能会导致未定义的行为,即以任意累积方式应用税费。

或者,在 <Rank> 中使用 "exclusive" 参数,以表明同一等级的所有税费都适用于相应费率。默认值为 false,所有具有相同优先级的税费都会以任意方式应用于相应费率。"exclusive" 为可选项。

如果 exclusive 参数设置为 true,则只有 <Tax> 中列出的第一个税费或 <Fee> 中列出的第一个费用会应用于费率。

<Rank exclusive="true">1</Rank>

系统会先应用税费,然后再应用其他费用;因此,如果税费和费用的等级相同,且费用的 "exclusive" 设置为 true,系统仍会先应用税费。最佳做法是按应应用税费的顺序列出税费。

如需包含同一等级的所有税费和其他费用,请避免将 exclusive 设置为 true

没有等级的税费及其他费用会在所有有等级的条目之前应用。

<Rank> 必须在 1 到 99 的范围内(含边界值)。

TaxFeeInfo / Property / Fees 0..1 Fees 包含一个或多个 <Fee> 元素的容器。
TaxFeeInfo / Property / Fees / Fee 1..n Fee

适用于房源的单项费用。

<Tax> 的所有子元素也支持 <Fee>,语法相同。

示例

每个媒体资源的税费限额为 300 项。请参阅“删除税费”示例,了解如何从房源中移除税费和其他费用。

基本消息

基本 TaxFeeInfo 消息:

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <Property>
    <ID>Property_1</ID>
    <Taxes>
      <Tax>
        <Type>percent</Type>
        <Basis>room</Basis>
        <Period>stay</Period>
        <Amount>10.00</Amount>
      </Tax>
    </Taxes>
    <Fees>
      <Fee>
        <Type>amount</Type>
        <Basis>person</Basis>
        <Period>night</Period>
        <Currency>USD</Currency>
        <Amount>5.00</Amount>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>

删除税费

删除指定酒店的所有房源级税费和其他费用:

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-06-16T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <Property action="overlay"/>
    <ID>Property_1</ID>
  </Property>
</TaxFeeInfo>

分级税

印度商品及服务税分级税率,根据每晚价格应用。税率区间如下:

  • 如果每晚房价小于或等于 1,000,则不收取税费。
  • 如果每晚房价高于 1000 且低于或等于 7500,则税率为 12%。
  • 如果每晚房价高于 7,500,则需缴纳 18% 的税费。
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <Property>
    <ID>Property_1</ID>
    <Taxes>
      <Tax>
        <Type>percent</Type>
        <Basis>room</Basis>
        <Period>night</Period>
        <Brackets base_amount="0">
          <Bracket starts_at="1000.01" amount="12"/>
          <Bracket starts_at="7500.01" amount="18"/>
        </Brackets>
      </Tax>
    </Taxes>
  </Property>
</TaxFeeInfo>

基于存在时间的税费

根据入住者的年龄收取税费:

  • 成人入住者的税费为 20 美元。
  • 11-17 周岁的儿童需缴纳 10 美元的税费。
  • 0-10 岁的儿童需缴纳 5 美元的税费。
<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-05-18T16:20:00-04:00"
            id="12345678"
            partner="partner_key">
  <Property>
    <ID>Property_1</ID>
    <Taxes>
      <Tax>
        <Type>amount</Type>
        <Basis>person</Basis>
        <Period>night</Period>
        <AgeBrackets>
          <AdultCharge amount="20"/>
          <ChildAgeBrackets>
            <ChildAgeBracket max_age="10" amount="5"/>
            <ChildAgeBracket max_age="17" amount="10"/>
          </ChildAgeBrackets>
        </AgeBrackets>
      </Tax>
    </Taxes>
  </Property>
</TaxFeeInfo>

重叠的住宿日期范围

如果定义了多个相互重叠的住宿日期范围,则给定的住宿日期只需满足其中一个范围即可,而不必满足所有范围。住宿日期范围必须以单个开始日期和结束日期范围的形式指定。

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2025-03-12T10:59:49+01:00"
            id="12345678"
            partner="partner_key">
  <Property action="overlay">
    <ID>987654</ID>
      <Taxes>
        <Tax>
          <Type>amount</Type>
          <Basis>person</Basis>
          <Period>night</Period>
          <RoomTypes>
            <RoomType id="RoomID_1"/>
            <RoomType id="RoomID_2"/>
          </RoomTypes>
          <StayDates application="any">
            <DateRange start="2025-06-16"/>
          </StayDates>
          <Currency>USD</Currency>
          <Amount>50</Amount>
        </Tax>
      </Taxes>
      <Fees>
        <Fee>
          <Type>amount</Type>
          <Basis>room</Basis>
          <Period>stay</Period>
          <StayDates application="any">
            <DateRange start="2025-03-12" end="2025-03-18"/>
          </StayDates>
          <Currency>USD</Currency>
          <Amount>200</Amount>
        </Fee>
        <Fee>
          <Type>amount</Type>
          <Basis>room</Basis>
          <Period>stay</Period>
          <StayDates application="any">
            <DateRange start="2025-03-19"/>
          </StayDates>
          <Currency>USD</Currency>
          <Amount>300</Amount>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>

具有排名专属性的多种税费

以下示例包含多个具有 exclusive="true" 和不同等级的税费。请考虑以下应应用于费率的税费:

  • 排名为 1 的 5% 住宿税 exclusive="true"
  • 排名为 1 的 10 美元客房服务税。
  • 50 美元的清洁费(等级 2 exclusive="true")。
  • 设施费为 2%,排名为 3。

根据 <Rank>,税费和其他费用的应用时间顺序如下:

  1. 系统会先应用 exclusive="true" 且排名为 1 的住宿税。
  2. 排名为 1 的客房服务税不会应用,因为之前的住宿税是不含税的。
  3. 接下来,系统会应用 exclusive="true" 且排名为 2 的清洁费。
  4. 等级 3 的设施服务费在等级 2 的清洁费之后收取。

<?xml version="1.0" encoding="UTF-8"?>
<TaxFeeInfo timestamp="2024-02-29T12:00:00Z"
            id="tax-fee-id"
            partner="partner_key">
  <Property action="overlay">
    <ID>765432</ID>
    <Taxes>
      <Tax>
        <Type>percent</Type>
        <Amount>5</Amount>
        <Period>stay</Period>
        <Basis>room</Basis>
        <Rank exclusive="true">1</Rank>
      </Tax>
      <Tax>
        <Type>amount</Type>
        <Amount>10</Amount>
        <Period>night</Period>
        <Basis>room</Basis>
        <Currency>USD</Currency>
        <Rank>1</Rank>
      </Tax>
    </Taxes>
    <Fees>
      <Fee>
        <Type>amount</Type>
        <Amount>50</Amount>
        <Period>night</Period>
        <Basis>room</Basis>
        <Currency>USD</Currency>
        <Rank exclusive="true">2</Rank>
      </Fee>
      <Fee>
        <Type>percent</Type>
        <Amount>2</Amount>
        <Period>stay</Period>
        <Basis>room</Basis>
        <Rank>3</Rank>
      </Fee>
    </Fees>
  </Property>
</TaxFeeInfo>

响应

语法

TaxFeeInfoResponse 消息使用以下语法:

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

元素和属性

TaxFeeInfoResponse 消息具有以下元素和属性:

元素 / @Attribute 出现次数 类型 说明
TaxFeeInfoResponse 1 Complex element 根元素,用于指示收到的 TaxFeeInfo 请求消息的成功情况或问题。
TaxFeeInfoResponse / @timestamp 1 DateTime 相应消息的创建日期和时间。
TaxFeeInfoResponse / @id 1 string 关联的 TaxFeeInfo 消息中的唯一标识符。
TaxFeeInfoResponse / @partner 1 string 相应消息的合作伙伴账号。
TaxFeeInfoResponse / Success 0..1 Success 表示 TaxFeeInfo 消息已成功处理,没有出现警告、错误或失败。

每条消息中都包含 <Success><Issues>

TaxFeeInfoResponse / Issues 0..1 Issues 一个容器,用于存放处理 TaxFeeInfo 消息时遇到的一个或多个问题。

每条消息中都包含 <Success><Issues>

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

遇到的问题类型。

有效值为 warningerrorfailure

示例

成功

以下是成功处理 TaxFeeInfo 消息后的响应。

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

问题

以下是因错误而未处理 TaxFeeInfo 消息的响应。

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