同伴者の料金

<OTA_HotelRateAmountNotifRQ> を通じて送信される料金は以下のとおりです。 元の料金に加えて、大人と子供を考慮した料金に変更 できます。ExtraGuestCharges メッセージにより、 追加ゲストの料金の計算方法と、 料金が適用される客室、料金プラン、宿泊日を指定します。

容量の要件

ExtraGuestCharges メッセージから計算された料金は、次の条件をすべて満たしている場合にのみ有効です。 容量要件が満たされていますTransaction(宿泊施設データ)をご覧ください。 をご覧ください。

リクエスト

構文

ExtraGuestCharges メッセージには次の構文が使用されます。

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges partner="partner_account_name"
                   id="message_ID"
                   timestamp="timestamp">
  <HotelExtraGuestCharges hotel_id="HotelID" action="[overlay]">
    <ExtraGuestCharge>
      <RatePlans>
        <RatePlan id="PackageID_1"/>
        <RatePlan id="PackageID_2"/>
      </RatePlans>
      <RoomTypes>
        <RoomType id="RoomID_1"/>
        <RoomType id="RoomID_2"/>
      </RoomTypes>
      <StayDates>
        <DateRange start="YYYY-MM-DD" end="YYYY-MM-DD"
                   days_of_week="MTWHFSU_or_subset"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="float"/>
        <ChildAgeBrackets>
        <!-- The following are different ways child charges can be specified.
        Use the option that matches your system. -->
          <ChildAgeBracket max_age="integer" amount="float"
                           exclude_from_capacity="[true|false]"/>
          <ChildAgeBracket max_age="integer" percentage="float"
                           exclude_from_capacity="[true|false]"
                           counts_as_base_occupant="[never|preferred|always]"/>
          <ChildAgeBracket max_age="integer" discount_amount="float"
                           exclude_from_capacity="[true|false]"
                           counts_as_base_occupant="[never|preferred|always]"/>
        </ChildAgeBrackets>
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

元素と属性

ExtraGuestCharges メッセージには次の要素が含まれます。 属性:

要素 / @Attribute 発生回数 タイプ 説明
ExtraGuestCharges 1 Complex element このメッセージのルート要素。
ExtraGuestCharges / @partner 1 string このメッセージのパートナー アカウント。この文字列値は、トレーニング データの Partner key の値が掲載されている <ph type="x-smartling-placeholder"></ph> Hotel Center の [アカウント設定] ページ

注: Google 検索にフィードを提供するバックエンドがある場合、 複数のアカウントがある場合は、この値は ID と一致する必要があります <RequestorID> で指定された属性値 <OTA_HotelRateAmountNotifRQ> の要素と 同じメッセージ <OTA_HotelAvailNotifRQ> 件 あります。

ExtraGuestCharges / @id 1 string このリクエスト メッセージの一意の識別子。この値は レスポンス メッセージで識別されます。使用できる文字は a-z です。 A-Z0-9_(アンダースコア)、 -(ダッシュ)。
ExtraGuestCharges / @timestamp 1 DateTime このメッセージの作成日時。
ExtraGuestCharges / HotelExtraGuestCharges 0..n HotelExtraGuestCharges 単一プロパティの料金のコンテナ。
ExtraGuestCharges / HotelExtraGuestCharges / @hotel_id 1 string 宿泊施設の一意の識別子。この値は、 を使用して指定したホテル ID <listing> 要素内の <id> ホテルリスト フィードで表示できます。ホテル ID は Hotel Center にも表示されます。
ExtraGuestCharges / HotelExtraGuestCharges / @action 0..1 enum 更新の適用方法を指定します。overlay のみ デフォルトはオーバーレイですこの商品に関する過去の請求は 更新が適用される前にプロパティがクリアされます。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge 0..99 ExtraGuestCharge

プロパティに対する 1 つの料金セット。これには、 請求の仕組みと請求方法に関する制限 年齢やゲストカテゴリで計算されます

ExtraGuestChargeHotelExtraGuestCharges は一意の日付のセットに適用する必要があります 学びます2 つの ExtraGuestCharge 要素が同じ参照である場合、 場合、メッセージ全体が拒否されます。

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets 1 AgeBrackets 年齢または年齢別の料金を計算するための年齢層のコンテナ あります。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge 0..1 AdultCharge 追加の大人 1 名分の料金のコンテナ。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / AdultCharge / @amount 0..1 float 定額を指定する正の小数値 大人 1 人分の料金が請求されます。この請求には、 1 泊あたりの料金に指定されている値を使用します。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets 0..1 ChildAgeBrackets 子供の追加料金のコンテナ。これらの年齢層が 0 ~ 17 歳の年齢層がカバーされています
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket 1..99 ChildAgeBracket 特定の年齢層の子供に適用される料金。これらの max_age の値が低い順に並べてください max_age。請求額は、 amountpercentage、または discount_amount。これらの属性のいずれか 1 つのみを <ChildAgeBracket> ごとに指定されます。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @max_age 1 integer <ChildAgeBracket> が適用される場合があります。最低年齢はゼロです 他に <ChildAgeBracket> が指定されていない場合 おすすめします。それ以外の場合は、前の角かっこよりも 1 つ大きい 年齢の上限。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @exclude_from_capacity 1 boolean この年齢層の子どもが対象に含まれるかどうかを示すブール値 部屋の定員と子供の定員にカウントされます。これらの 容量は で設定できます。 Transaction(Property Data) を返します。例: 一定の年齢未満の乳児 子容量にカウントする必要がない場合もあります。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @amount 0..1 float 一定の金額を指定する負でない 10 進数 追加請求された金額ですこの請求には、 1 泊の料金に指定されている通貨と同じ通貨を使用する必要があります。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @percentage 0..1 float

インプレッションの割合(%)を示す 1 ~ 99 の小数値 1 人目の追加の子供に請求する必要がある大人料金です。 角かっこで囲みます。この請求には、 1 泊の料金で設定できます。

詳しくは、counts_as_base_occupant の説明をご覧ください 大人の料金の計算方法について見てみましょう。

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @discount_amount 0..1 float

一律の割引を指定する正の小数値 追加の子供に対する大人料金の割引額。 この料金には、1 泊あたりの料金と同じ通貨が使用されます 料金。

一般に、この階層に含まれるお子様の料金は次のように計算されます。 単位価格から定額を差し引きます単価は、 (counts_as_base_occupant で詳述) 指定します。

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / AgeBrackets / ChildAgeBrackets / ChildAgeBracket / @counts_as_base_occupant 0..1 string

percentage または discount_amount が 指定する場合は、counts_as_base_occupant を 指定することもできます。この値は、子孫が NumberOfGuest に含めることもできます。 適用する割合: <BaseByGuestAmount> 料金や割引が含まれます。

ここでの目的は、「単価」をここから実際の 料金を計算できます。

unit price = rate / occupancy

この属性の値は never のいずれかにする必要があります。 preferred または always

  • never を指定した場合、子は その料金に含まれる

    大人 2 人と子供 2 人(2 + 2)の料金を計算する場合は、 子供は大人 2 人分の料金なので 含めないでください。

  • preferred を指定した場合、子は 少なくとも宿泊人数に含める必要があります。

    大人 2 人と子供 1 人(2+1)の料金を計算する場合は、 大人 3 人分の料金を使用することをおすすめしますが、 大人 2 人分の料金を使用します。

  • always を指定した場合、子は 常に料金の宿泊人数に含まれます。

    大人 2 人と子供 2 人(2 + 2)の料金を計算する場合は、 子供は大人 4 人分の料金なので、 含まれます。

ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes 0..1 RoomTypes 料金が適用される客室タイプのリストのコンテナ。 料金は <RoomType> ごとに適用されます あります。<RoomTypes> が指定されていない場合、 料金は、指定された宿泊施設内のすべての部屋に適用されます。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType 1..n RoomType 客室タイプを指定します。客室タイプは 次の要素内の <RoomData> 要素: トランザクション (宿泊施設データ)というメッセージで、 <RoomID> 値。(<RoomID> InvTypeCode 属性でも参照されます。 OTA_HotelRateAmountNotifRQ メッセージ。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RoomTypes / RoomType / @id 1 string インベントリの一意の識別子(客室タイプ)。この値は Transaction(宿泊施設データ)メッセージの <RoomID> へ。 入力可能な最大文字数は 50 文字です。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans 0..1 RatePlans 料金が適用される料金プランのリストのコンテナ。 <RatePlans> が指定されていない場合、 すべての料金プランに適用されます
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan 1..n RatePlan 料金プランを指定します。料金プランは、次の組み合わせによって定義されます。 トランザクションで定義したとおりに、パッケージ、料金、空室状況を (宿泊施設データ)、OTA_HotelRateAmountNotifRQ、OTA_HotelAvailNotifRQ PackageID で識別されます。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / RatePlans / RatePlan / @id 1 string 料金プランの一意の識別子。この値は <PackageData> の PackageID 値 Transaction(宿泊施設データ)メッセージと RatePlanCode 属性: 両方で <StatusApplicationControl> <OTA_HotelRateAmountNotifRQ><OTA_HotelAvailNotifRQ> 件のメッセージ。 入力可能な最大文字数は 50 文字です。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates 0..1 StayDates 1 つまたは複数の期間のコンテナです。 料金が発生します。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange 1..99 DateRange プロモーションが適用される日付を指定する期間。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @start 0..1 Date 開始日(プロパティのタイムゾーンに基づく、次の日付を含む) 期間を選択します。この日付は、 end 日。start が指定されていない場合、日付 開始日に関して実質的に無制限です。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @end 0..1 Date 終了日を含む(プロパティのタイムゾーンに基づく)終了日 期間。この日付は、start 以降の日付にする必要があります できます。end が指定されていない場合、日付 終了日に関して実質的に無制限です。
ExtraGuestCharges / HotelExtraGuestCharges / ExtraGuestCharge / StayDates / DateRange / @days_of_week 0..1 string

日付範囲内の曜日です。回答が「いいえ」の場合 すべての日付を指定できます。各 日付を指定します。例: 「MTWHF」指定 指定することもできます。

有効な文字は次のとおりです。

  • M(月曜日)
  • T(火曜日)
  • W(水曜日)
  • H(木曜日)
  • F(金曜日)
  • S(土曜日)
  • U(日曜日)

任意の文字の組み合わせが有効です。

大人料金

大人 1 人目の追加料金は、定額でのみ提示できます。「 次の例は、adult を指定する ExtraGuestCharges メッセージを示しています。 charge:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <StayDates />
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

対応する料金は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="ABC">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
            <BaseByGuestAmt AmountAfterTax="120.00"
                            CurrencyCode="USD"
                            NumberOfGuests="3"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>

ユーザーが Google で大人 4 人を検索した場合、合計料金は次のようになります。 170 = 120 + 50 となります。

120 は NumberOfGuests="3" と 50 の <BaseByGuestAmt> レートから取得されます AdultCharge amount="50" に由来します。

子供料金

子供の料金は 17 歳までの年齢層で示され、 定額、パーセンテージ、または割引で表現されます。

次の例は、次を指定する ExtraGuestCharges メッセージを示しています。 子供料金:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <AgeBrackets>
        <ChildAgeBrackets>
          <ChildAgeBracket max_age="3" percentage="10"
                           counts_as_base_occupant="never" />
          <ChildAgeBracket max_age="10" percentage="30"
                           counts_as_base_occupant="preferred"/>
          <ChildAgeBracket max_age="17" discount_amount="10"
                           counts_as_base_occupant="always" />
        </ChildAgeBrackets>
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

対応する料金は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"
                            EchoToken="12345678"
                            TimeStamp="2020-05-19T20:50:37-05:00"
                            Version="3.0">
  <RateAmountMessages HotelCode="ABC">
    <RateAmountMessage>
      <StatusApplicationControl Start="2020-05-18"
                                End="2020-05-23"
                                InvTypeCode="RoomID_1"
                                RatePlanCode="PackageID_1"/>
      <Rates>
        <Rate>
          <BaseByGuestAmts>
            <BaseByGuestAmt AmountAfterTax="100.00"
                            CurrencyCode="USD"
                            NumberOfGuests="1"/>
            <BaseByGuestAmt AmountAfterTax="110.00"
                            CurrencyCode="USD"
                            NumberOfGuests="2"/>
          </BaseByGuestAmts>
        </Rate>
      </Rates>
    </RateAmountMessage>
  </RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
```

  1.  Suppose you want the total price for 2 adults and 1 child of 2 years
      of age.

      Children aged 0-3 are never included in the rate's occupancy,
      so here you should take the double occupancy rate and divide by 2 to
      get the unit price. Then, multiply by the percentage rate and sum
      with the rate to get the total price.

      `unit price ` = 110 / 2 = 55

      `total price` = 110 + 55 * 0.1 = 115.5

  1.  Suppose you want the total price for 1 adult and 2 children, both of 5
      years of age.

      Children aged 4-10 are preferably included in the rate's
      occupancy. you should start by looking for a 3 adult rate since both
      children are preferably included in the rate's occupancy. Since
      that doesn't exist you should fall back to the 2 adult rate and then,
      take this rate and divide by two to get the unit price. Finally,
      multiply by the percentage rate and sum with the scaled rate to
      get the total price.

      `unit price` = 110 / 2 = 55

      `total price` = 55 + 55 * 0.3 + 55 * 0.3 = 88

  1.  Suppose you want the total price for 1 adult and 1 child of 17
      years of age.

      Children aged 11-17 are always included in the rate's occupancy, so,
      in this case, take the double occupancy rate and divide by 2 to get
      the unit price. Then, deduct it by the discount amount and sum with
      the scaled rate to get the total price.

      `unit price` = 110 / 2 = 55

      `total price` = 55 + (55 - 10) = 100

料金制限

すべての種類の制限は省略可能で、任意の組み合わせが可能です。 分析できます

次の例は、次を指定する ExtraGuestCharges メッセージを示しています。 制限:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
        <RoomType id="king" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
        <RatePlan id="hot-breakfast" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-14"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

上記のメッセージでは、すべての商品は大人が請求対象であることが示されています 客室タイプがクイーン「キング」料金プラン「無料 Wi-Fi」を使用または 「温かい朝食」開始日: 2020 年 9 月 1 日~ 2020 年 9 月 14 日。

重複する請求

このセクションでは、無効なメッセージの例を紹介します。 同じ日付とプロダクトの組み合わせに対して課金されます。


<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestCharges timestamp="2001-02-03T04:05:06+00:00" id="1">
  <HotelExtraGuestCharges hotel_id="ABC" action="overlay">
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-14"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="50" />
      </AgeBrackets>
    </ExtraGuestCharge>
    <ExtraGuestCharge>
      <RoomTypes>
        <RoomType id="queen" />
        <RoomType id="king" />
      </RoomTypes>
      <RatePlans>
        <RatePlan id="free-wifi" />
        <RatePlan id="hot-breakfast" />
      </RatePlans>
      <StayDates>
        <DateRange start="2020-09-01" end="2020-09-05"/>
      </StayDates>
      <AgeBrackets>
        <AdultCharge amount="20" />
      </AgeBrackets>
    </ExtraGuestCharge>
  </HotelExtraGuestCharges>
</ExtraGuestCharges>

上記のメッセージは無効です。最初の <ExtraGuestCharge> 個が 「queen」がと「free-wifi」9 月 1 日から 14 日までの 追加で大人 50 名。2 つ目の <ExtraGuestCharge> 「queen」のいずれかが「キング」「Free-Wi-Fi」のいずれかでまたは 「温かい朝食」9 月 1 日から 5 日まで:大人 20 名の追加料金が必要です。 「queen」の料金が重複していると「free-wifi」9 月 1 日~ 追加の大人 1 人につき 20 ドルと 50 ドルのどちらを請求するかが問題になっているという問題です。

レスポンス

構文

ExtraGuestChargesResponse メッセージでは、次のものが使用されます。 構文:

<?xml version="1.0" encoding="UTF-8"?>
<ExtraGuestChargesResponse 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>
</ExtraGuestChargesResponse>

元素と属性

ExtraGuestChargesResponse メッセージには次の要素があります。 および属性:

要素 / @Attribute 発生回数 タイプ 説明
ExtraGuestChargesResponse 1 Complex element 受信の成功または問題を示すルート要素 ExtraGuestCharges リクエスト メッセージ。
ExtraGuestChargesResponse / @timestamp 1 DateTime このメッセージの作成日時。
ExtraGuestChargesResponse / @id 1 string 関連付けられた ExtraGuestCharges メッセージからの一意の識別子。
ExtraGuestChargesResponse / @partner 1 string このメッセージのパートナー アカウント。
ExtraGuestChargesResponse / Success 0..1 Success ExtraGuestCharges メッセージが正常に処理されたことを示します。 警告、エラー、失敗が発生することがありません。

<Success> または <Issues> が 表示されます。

ExtraGuestChargesResponse / Issues 0..1 Issues データの処理中に発生した 1 つ以上の問題のコンテナです。 ExtraGuestCharges 件のメッセージ。

<Success> または <Issues> が 表示されます。

ExtraGuestChargesResponse / Issues / Issue 1..n Issue この間に発生した警告、エラー、失敗の説明は、 ExtraGuestCharges メッセージを処理しています。これらの問題の詳細については、 フィード ステータスのエラー メッセージをご覧ください。
ExtraGuestChargesResponse / Issues / Issue / @code 1 integer 問題の識別子。
ExtraGuestChargesResponse / Issues / Issue / @status 1 enum

発生した問題の種類。

有効な値は warningerror、 および failure

成功

以下は、正常に処理された ExtraGuestCharges 件のメッセージ。

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

問題

以下は、処理されていない ExtraGuestCharges メッセージに対するレスポンスです。 表示されます。

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