料金不一致または他の料金変更のエラー

  1. お客様が予約する前に施設で料金変更が行われることや、または通貨換算が更新されたために、部屋料金を応答で返した時点での情報と一致しないことがあります。料金がデータベースと一致しないときは、料金不一致エラーが返されます。
  2. 「公開」料金変更が実際には行われていないのに、料金変更または不一致のメッセージを受け取った場合は、予約で送信されるすべての値が正確かどうかを確認します。 rateKey、roomTypeCode、rateCode または total のデータ/値が間違ったまま送信されると、予約時に料金の不一致が生じます。これらの各エレメント値が、部屋情報レスポンスからお客様が選択した内容と一致していなければなりません。
  3. ロケールと通貨が customerIpAddress の位置情報と一致していない場合にも、料金不一致エラーが発生することがあります。この稀なケースでは、リクエストの customerIpAddress を省略して予約を再送信することでエラーを処理します。そのようにして予約が正常に処理されるなら、送信された値の位置情報マッチングが不正確であったことが料金不一致の原因であったといえます。追加料金の値はこれらの項目に基づいて地理的に算定されるため、それらの項目が正確にマッチングしていない場合は、追加料金値がその割り当てのデータベース料金と一致しなくなる可能性があります。

バージョン 3 マイナー リビジョン 9 以上を使用している場合に返されるメッセージの例 :

XML レスポンスの例

<ns2:HotelRoomReservationResponse xmlns:ns2 = "http://v3.hotel.wsapi.ean.com/">
   <EanWsError>
      <itineraryId>XXXXXX</itineraryId>
  <handling>RECOVERABLE</handling>
      <category>PRICE_MISMATCH</category>
      <exceptionConditionId>1673</exceptionConditionId>
      <ErrorAttributes>
         <errorAttributesMap>
            <entry>
               <key>RATE_CHANGE</key>
               <value>121.89</value>
            </entry>
            <entry>
               <key>RATE_KEY</key>
               <value>4fc6fd3b-03b4-49e2-96cf-22b1aa4ad89b</value>
            </entry>
         </errorAttributesMap>
      </ErrorAttributes>
<presentationMessage>予約前の予約料金最終確認が失敗しました。(リクエストした料金:120.89(USD)) (新しい料金:121.89(USD))。新しい料金でもう一度試してください。</presentationMessage>
      <verboseMessage>
予約前に予約料金最終確認が失敗しました。QuoteKey:4fc6fd3b-03b4-49e2-96cf-22b1aa4ad89b
RatePlan:status = Available
         roomTypeId = 19304
         ratePlanId = 200245232
....  [一般的なリクエスト データは省略します] ...
予約前の予約料金最終確認が失敗しました。(リクエストした料金:120.89(USD)) (新しい料金:121.89(USD))。新しい料金でもう一度試してください。
      </verboseMessage>
      <ServerInfo
         serverTime = "13:52:51.848-0500"
         timestamp = "1318963971"
         instance = "167"/>
   </EanWsError>
   <customerSessionId>0AB81CA7-9955-D913-3162-AA666D9074FD</customerSessionId>
</ns2:HotelRoomReservationResponse>

JSON レスポンスの例

{
    "HotelRoomReservationResponse" : {
        "EanWsError" : {
            "itineraryId" : XXXXX,
            "handling" : "RECOVERABLE",
            "category" : "PRICE_MISMATCH",
            "exceptionConditionId" : 1673,
            "ErrorAttributes" : {
                "errorAttributesMap" : {
                    "entry" : [{
                        "key" : "RATE_CHANGE",
                        "value" : 151.8
                    },
                    {
                        "key" : "RATE_KEY",
                        "value" : "d18ce59c-82ba-4dbd-8f9a-5b04ec2283bd"
                    }]
                }
            },
            "presentationMessage" : "予約前の予約料金最終確認が失敗しました。
(リクエストした料金:141.8(USD)) (新しい料金:151.8(USD))。新しい料金でもう一度試してください。",
            "verboseMessage" : "予約前に予約料金最終確認が失敗しました               QuoteKey:d18ce59c-82ba-4dbd-8f9a-5b04ec2283bd \nRatePlan:status =                Available\nroomTypeId = 8282\nratePlanId = 8282\nrateRuleId = 200584001\nratePlanType =
Expedia CollectStandard\nratePlanName = デラックス ルーム (ダブルベッド 2 台)
....  [一般的なリクエスト データは省略します] ...
予約前の予約料金最終確認が失敗しました。(リクエストした料金:141.8(USD)) (新   しい料金:151.8(USD))。
新しい料金でもう一度試してください。",
            "ServerInfo" : {
                "@serverTime" : "17:06:46.659-0500",
                "@timestamp" : "1320358006",
                "@instance" : "42"
            }
        },
        "customerSessionId" : "0ABAA856-E9C5-4913-36B2-5C0F37906376"
    }
}

弊社システムではエラーは以下のように表示されます :

SUPPLIER : 13
FUNCTION : 3
CATEGORY : 25
HANDLING : 1
SEVERITY : 0
ITIN ID : XXXXX
DB MSG :Expedia 予約サプライヤ料金不一致例外
PRESENTATION MESSAGE:選択した部屋の料金が変更されました。
VERBOSE MESSAGE:3000: 料金が変更されました。
  • handling=RECOVERABLE となっており、正しく処理されていれば「回復する」可能性があることを示しています。
  • 料金変更例外は category=PRICE_MISMATCH であることを示しています。
  • reservationStatusCode=DT となっています。リクエストはすでに削除されており、handling=RECOVERABLE by the affiliate の場合でも、担当者によるフォローアップはなく、お客様にメールは送信されません。

テストのための意図的な料金不一致エラー

料金不一致エラーのレスポンスを強制的に出させるには、予約リクエストの "chargeableRate" 値を変更して送信します。たとえば、部屋レスポンスで返された chargeableRate として使用する値が 150.00 であれば、予約リクエストに他の任意の値 (151.00 など) を指定して送信します。返される例外から、使用するアルゴリズムをテストしてエラー属性を見つけだし、新しい予約リクエストで再送することができます。

これらのエラーで旅程 ID が返されることにも注目してください。この旅程 ID は次の予約リクエストで送信できます。同じ旅程 ID を使用することによって、アフィリエイト統計に記録されるキャンセルされたエラー要求の数は少なくなり、同じ予約リクエストに関して同じお客様が行うすべての試行は同じ旅程に対して行われることになります。

予約リクエストを再送信する場合の旅程 ID の使用については、予約リクエスト にある指示に従ってください。

手順に従ってエラーを処理して予約の失敗を回復する :

  • minorRev=9 以上では、このエラーから回復するために役立つ、新しいマップ エントリー値を返します。また、新しい料金値を組み込むことにより、部屋情報の結果をリフレッシュして現在の料金設定を取得する必要がなくなります。新しい料金値はエラー メッセージから自動的に取得され、予約の再送信の際に使用できます。
  • 新しい料金を表示して、お客様がその新料金を受け入れることができるようにすることで、請求予定の料金に関してお客様との間で問題が生じないようにします。
  • 再送信する予約に新しい rateKey 値を含めます。

バージョン 3 マイナー リビジョン 9 以上を使用していないアプリ用の代替メソッド :

  • 部屋情報の結果をリフレッシュし、選択した部屋の料金を比較します

料金が安くなっている場合 :

  • 安い新料金と rateKey を指定して、予約リクエストを再送信します
  • 予約した安い料金をお客様に確認 / 予約結果で通知します
  • 一部の国際ロケールまたは国々では、自動的に予約を購入する前に、お客様に (前に選択したときより安くなっているとしても) 新料金を通知することが法律により定められている場合があります。該当する国および地域の法的な要求すべてに従ってください。

料金が高くなっている場合 :

  • 料金が変更されたことをお客様に通知します
  • 元の選択内容での新しい部屋料金、および同じ施設の選択可能な他の部屋を表示します
  • お客様が以下から選択できるようにします
  • 新しい料金を受け入れて、予約を進める
  • 新しい部屋を選択して、予約を進める
  • 前に表示したリストから新しいホテルを選択する

新しい予約の選択内容を、先の予約試行の際に一時的に保存したお客様の入力とともに送信します。同じ個人および決済情報を再び入力する必要がないため、お客様にとってこれは便利です。

同じ施設の有効なリクエストで料金不一致または料金変更のエラーが 3 回以上起きる場合は、その施設に問題があるため、新しいホテルを選択する必要があります。