1. 一般要求

1.1 联盟伙伴不得宣称自己是酒店供应商

您在任何地方(集成、相关网站、营销资料等)的业务说明中,都不能声称或暗示自己是任何 EAN 酒店的供应商。
其中包括暗示酒店专营权(例如“我们独有的酒店系列”)或价格专享权(例如“全网最低价”)。
您的品牌与 EAN 酒店的关系必须明确保持为 EAN 酒店营销商,而非供应商。



1.2 禁止使用 Expedia 或 EAN 名称或徽标

禁止出于任何目的将 Expedia 或者 EAN 的名称或徽标用于联盟伙伴网站。任何例外情况均必须经过 Expedia 法律部门及相关部门的批准,并将批准证明附加在联盟伙伴发布记录中。

示例


1.3 联盟伙伴在预订中提供实际旅客的姓名

提交 EAN 订单时,必须始终随附进行预订的实际旅客的姓名。也就是说,在预订请求主体中,每个 Room 对象的 firstName 值和 lastName 值均必须与入住预订客房的住客的名字和姓氏一致。

代码示例
REST
……
&room1=2
&room1FirstName={actual traveller's name}
&room1LastName={actual traveller's name}
&room1BedTypeId=23
&room1SmokingPreference=NS
……
XML
……
<RoomGroup>
<Room>
<numberOfAdults>2</numberOfAdults>
<firstName>{actual traveller's name}</firstName>
<lastName>{actual traveller's name}</lastName>

<bedTypeId>23</bedTypeId>
<smokingPreference>NS</smokingPreference>
</Room>
</RoomGroup> ……
示例


1.4 在联盟伙伴条款和条件中显示 EAN 预订条款和条件的 URL 链接

您必须在您网站的条款和条件文本中提供指向 EAN 条款和条件的链接。将以下链接放置在显眼的位置,例如您网站的条款和条件页面的顶部:http://developer.ean.com/terms/en/

示例


1.5 不得更改从 API 返回的定价或预订条件

您不得修改任何与价格或预订相关,且说明入住费用、酒店及其设施等方面的事实情况的值。其中还包括不得省略或含糊说明此类数据的任意部分。

允许进行不影响所含语言意思的更改,例如将“游泳池”改为“泳池”、将“无线网络”改为“WiFi”。"

请勿试图提供回复中未包含的其他信息。对于因联盟伙伴对 API 数据的不当修改或添加造成的纠纷,EAN 概不负责。

示例
本示例展示了显示计入预订总价的联盟伙伴费用的错误方式和正确方式。


1.6 清晰显示客户支持号码,包括通过指向在线客户服务工具的链接

清晰显示 EAN 的支持号码或您自己的支持号码(如果您不使用 EAN 的客户支持中心)。此外,您还必须提供指向在线客户服务工具的链接,以便客户检索和查看他们的预订。

示例
客户服务号码和自助服务工具显示在顶部菜单/标题区域


1.7 合理使用和显示相关信用卡规定

请求、处理以及存储客户信用卡数据时,联盟伙伴必须遵守 PCI(付款卡行业)的规定。这些规定的完整版在 PCI 安全标准官方网站上提供。

为了帮助您了解对集成最关键的 PCI 规则,EAN 为合作伙伴提供了有针对性的指南:developer.ean.com/docs/credit-card

遵循上述指南,即可确保:

  • 所有预订请求都需要 CSV
  • 在显示和存储方面符合卡号截断要求
  • 在与预订相关的所有页面上使用 SSL ()
  • 符合品牌均势要求



1.8 为适用的合作伙伴提供 PCI 合规性证据

如果 EAN 是记录在案的商家,则必须提供合规性证明 (AOC) 等 PCI 合规性证据。

EAN 联盟伙伴必须使用 PCI 安全标准委员会的自我评估问卷文件“SAQ D - Merchants”生成适当的 AOC。

您可以在 PCI 安全标准官方文档库中查看 SAQ 说明和准则,并找到“SAQ D - Merchants”文件,也可以将“SAQ D - Merchants”文件直接下载为 PDFWord 文档。

2. 搜索页面

2.1 联盟伙伴允许在预订中包含儿童时,提供适当的消息并要求输入儿童年龄

如果您的集成允许儿童住客,则必须支持所有 Expedia Collect 酒店指定儿童住客人数及其年龄(独立于成人住客)。此信息通过 numberOfChildrenchildAges 元素提供(请参见下面的代码示例)。

客户指定儿童住客时,API 回复可能包括年龄限制和/或加人或者婴儿床费用,这可能影响预订的费用或资格。在预订过程中和退房前,必须向客户明确说明这些项目。

各个酒店会界定儿童的年龄范围。通常情况下,年龄不超过 17 岁的个人被视为儿童。某些酒店不接待未满 18 岁的住客。

代码示例
REST
list? 
apiKey=#####
&cid=#####
&sig=####################
&customerIpAddress=#####
&customerUserAgent=######
&customerSessionId=#####
&minorRev=##
&locale=en_US
&currencyCode=USD
&city=Seattle
&stateProvinceCode=WA
&countryCode=US
&arrivalDate=09/04/2015
&departureDate=09/05/2015
&room1=1,3,6

XML
 
<HotelListRequest>
    <city>Seattle</city>
    <stateProvinceCode>WA</stateProvinceCode>
    <countryCode>US</countryCode>
    <arrivalDate>08/01/2015</arrivalDate>
    <departureDate>08/03/2015</departureDate>
    <RoomGroup>
      <Room>
        <numberOfAdults>2</numberOfAdults>
        <numberOfChildren>2</numberOfChildren>
        <childAges>3,6</childAges>
      </Room>
    </RoomGroup>
</HotelListRequest>
示例


3. 酒店列表结果页面

3.1 如果显示明细,提供清晰的费用明细

在酒店列表结果页面中,可以选择是否提供费用明细。 如果您选择提供此类明细,必须按照 SurchargesHotelFees 数组返回的数据清晰、完整地提供各项费用明细。

请务必单独显示 HotelFees 数组返回的费用,因为这些是酒店(而非 EAN 或当地政府)在住客入住或退房时收取的费用。

包括适用于所选日期的每人每晚房价,或所有入住夜晚总房价(不含税额),如右图所示。 最终明细应包括入住夜晚房价(总房价或每晚房价)、SurchargeHotelFee 金额以及应付总额。

代码示例
这些代码块包括此要求涉及的费用数组。下面是从完整的酒店列表回复中节选的相关代码。
REST
  ……
  
"Surcharges": {
      "@size": "1",
      "Surcharge": {
  		"@type": "TaxAndServiceFee",
		"@amount": "64.65"
	    }}    },
"nonRefundable": false,
	"HotelFees":
	 {"@size": "1","HotelFee":
	  {    "@description": "MandatoryTax",
	      "@amount": "57.11"}
	      },
	      "rateType": "MerchantStandard",
	      "currentAllotment": 1}
      ……
      
XML
  ……
  <NightlyRate baseRate="545.82" rate="545.82" promo="false" />
  </NightlyRatesPerRoom>
  <Surcharges size="1">
  <Surcharge type="TaxAndServiceFee" amount="64.65" />
  </Surcharges></ChargeableRateInfo>
  <nonRefundable>false</nonRefundable>
  <HotelFees size="1">
  <HotelFee description="MandatoryTax" amount="57.11" />
  </HotelFees>
  <rateType>MerchantStandard</rateType>
  <currentAllotment>1</currentAllotment>
  </RateInfo>
  ……
  

4. 可订酒店/空房

4.1 以单行项目明确显示税费

对于所有税收参考和/或给出价格明细的情况(如 Expedia Collect 酒店的可订空房、预订表和确认结果),TaxAndServiceFee 的返回值必须单独显示。

根据法律要求,涉及到任何“税费”总计时,您的网站应针对所有 Expedia Collect 预留房提供以下确切文本。根据酒店供应位置(而非客户位置)显示内容。

  • 欧洲:“应缴税款”
  • 所有其他地区:“应缴税款和服务费”
示例(欧洲)


4.2 单独报告销售税额和酒店入住税额(如果适用)

Surcharges 数组返回 salesTaxhotelOccupancyTax 后,在您的费用明细中单独显示这些项目。这些项目详细说明了由当地政府或所在州收取的税额,必须按照当地法律予以显示。

收取酒店入住税的州包括但不限于纽约州、宾夕法尼亚州、德克萨斯州和马萨诸塞州。



4.3 每间客房均提供床型说明

对于供应情况回复,如果 BedTypes 数组未返回值或仅返回一个值,则显示每间客房的 rateDescriptionroomTypeDescription 值 - 这些值通常返回相同数据。

如果 BedTypes 数组返回多个选项,则向客户提供这些选项,以便他们选择自己喜欢的选项。使用 bedTypeId 参数在您的预订请求中返回客户选择的 BedType ID。

代码示例
单床型示例 XML

<rateCode>205109735</rateCode>
<roomTypeCode>201048862</roomTypeCode>
<rateDescription>Deluxe Room, 2 Single Beds</rateDescription>
<roomTypeDescription>Deluxe Room, 2 Single Beds</roomTypeDescription>

<supplierType>E</supplierType>
<propertyId>18813</propertyId>
<BedTypes size="1">
<BedType id="43">
<description>2 single beds</description>
</BedType>

</BedTypes>

多床型示例 XML
请注意,房价/房型说明不包含床型说明。
<rateCode>204975819</rateCode>
<roomTypeCode>201019993</roomTypeCode>
<rateDescription>Executive Room</rateDescription>
<roomTypeDescription>Executive Room</roomTypeDescription>

<supplierType>E</supplierType>
<propertyId>18813</propertyId>
<BedTypes size="2">
<BedType id="14">
<description>1 king bed</description>
</BedType>
<BedType id="43">
<description>2 single beds</description>
</BedType>

</BedTypes>
单床型示例 REST
"rateCode": 484072,
"roomTypeCode": 198058,
"rateDescription": "Deluxe Room, 1 King Bed",
"roomTypeDescription": "Deluxe Room, 1 King Bed",

"supplierType": "E",
"propertyId": 5900,
"BedTypes": {
"@size": "1",
"BedType": {
"@id": "14",
"description": "1 king bed"

}
},
多床型示例 REST
"rateCode": 206423129,
"roomTypeCode": 426739,
"rateDescription": "Family Apartment sleeps 6",
"roomTypeDescription": "Family Apartment sleeps 6",

"supplierType": "E",
"propertyId": 914263,
"BedTypes": {
"@size": "2",
"BedType": [
{
"@id": "69",
"description": "1 double and 1 sofa bed"
}, {
"@id": "70",
"description": "2 twin and 1 sofa bed"

}
]
},


4.4 显示入住说明

在可订空房回复中返回时,必须显示每间客房的 checkInInstructions 的内容。这些说明可能包含重要的信息,例如,入住时收取的费用或非营业时间访问说明。请始终使用可订空房回复中的值,酒店信息或静态数据库入住说明值可能不是最新值。

代码示例
REST
{ "HotelRoomAvailabilityResponse": {
     "@size": "3",
     "customerSessionId": "0ABAAAAE-48DC-3914-D0B2-A769E3903921",
     "hotelId": 127092,
     "arrivalDate": "09/03/2015",
     "departureDate": "09/04/2015",
     "hotelName": "The Edgewater - A Noble House Hotel",
     "hotelAddress": "Pier 67, 2411 Alaskan Way",
     "hotelCity": "Seattle",
     "hotelStateProvince": "WA",
     "hotelCountry": "US",
     "numberOfRoomsRequested": 1,
     "checkInInstructions": "<p><b>Know Before You Go</b> <br /><ul> 
<li>Children 18 years old and younger stay free when occupying the parent or guardian's room,
 using existing bedding. </li> </ul></p><p><b>Fees</b> <br /><p>The following fees and deposits
 are charged by the property at time of service, check-in, or check-out. </p> <ul> 
<li>Breakfast fee: USD 22 per person (approximately)</li> <li>Fee for in-room wireless 
Internet: USD 9.95 (for 24 hours, rates may vary)</li> 
<li>Fee for wireless Internet in public areas: USD 9.95 (for 24 hours, rates may vary)</li> 
<li>Valet parking fee: USD 38 per night (in/out privileges)</li> 
<li>Late check-out fee: USD 125</li> 
<li>Rollaway bed fee: USD 20 per night</li>
<li>Facilities fee: USD 12.00 per accommodation, per night</li> </ul> 
<p>The above list may not be comprehensive. Fees and deposits may not include tax and 
are subject to change. </p></p>",
"HotelRoomResponse": [……
……
 


XML
<ns2:HotelRoomAvailabilityResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/" size="5">
 <customerSessionId>0ABAAA4D-082E-AA91-4D02-B8BAE1397B78</customerSessionId>
 <hotelId>127092</hotelId>
 <arrivalDate>09/03/2015</arrivalDate>
 <departureDate>09/04/2015</departureDate>
 <hotelName>The Edgewater - A Noble House Hotel</hotelName>
 <hotelAddress>Pier 67, 2411 Alaskan Way</hotelAddress>
 <hotelCity>Seattle</hotelCity>
 <hotelStateProvince>WA</hotelStateProvince>
 <hotelCountry>US</hotelCountry>
 <numberOfRoomsRequested>1</numberOfRoomsRequested>
 <checkInInstructions><p><b>Know Before You Go</b> <br /><ul> <li>Children 18 years old and
 younger stay free when occupying the parent or guardian's room, using existing bedding. </li>
 </ul></p><p><b>Fees</b> <br /><p>The following fees and deposits are charged by the property 
at time of service, check-in, or check-out. </p> <ul> <li>Breakfast fee: USD 22 per person 
(approximately)</li> <li>Fee for in-room wireless Internet: USD 9.95 (for 24 hours, 
rates may vary)</li> <li>Fee for wireless Internet in public areas: USD 9.95 (for 24 hours,
 rates may vary)</li> <li>Valet parking fee: USD 38 per night (in/out privileges)</li> 
<li>Late check-out fee: USD 125</li> <li>Rollaway bed fee: USD 20 per night</li>
<li>Facilities fee: USD 12.00 per accommodation, per night</li> </ul> 
<p>The above list may not be comprehensive. Fees and deposits may not include tax and 
are subject to change. </p></p></checkInInstructions> <HotelRoomResponse>


4.5 明确显示不可退款政策

不可退款的可订空房由 nonRefundable=true 指示。该值始终优先于任何其他政策数据。在任何情况下,酒店均不退还这些预订的费用。

在选择酒店或客房期间返回 nonRefundable=true 时,明确标记适用的客房,不管在何处提供各个可订空房 - 如完整的客房选择页面、列表结果页面上的部分选择等。

对于可退款的可订空房,请参阅我们的指南了解如何计算 cancelPolicyInfo 数组提供的罚款。

代码示例
REST
nonRefundableCancelPolicyInfoList 数组和 rateType 之间返回。
"CancelPolicyInfoList": {
[array contents omitted for example]
},
"nonRefundable": true,
"rateType": "MerchantStandard",
"promoType": "Standard",
"currentAllotment": 13,
"guaranteeRequired": false,
"depositRequired": true,
XML
nonRefundableCancelPolicyInfoListHotelFees 之间返回。
  …
  </CancelPolicyInfo>
</CancelPolicyInfoList>
<nonRefundable>true</nonRefundable>
<HotelFees size="1">
<HotelFee description="MandatoryTax" amount="56.99" />
</HotelFees> …

5. 预订页面

5.1 为敏感数据提供 SSL 加密技术

发送或传输敏感数据时,您必须使用 SSL 加密。敏感数据包括住客姓名、电话号码或电子邮件、付款卡详细信息以及预订/行程收据和确认页面。

如果客户的浏览器不使用安全连接发送或接收该信息,则表示未正确整合 SSL。


示例
在浏览器中显示的有效 SSL 证书


5.2 必须提供清晰的费用明细

必须为预订页面提供费用明细。明细必须完全、清晰的提供 SurchargeHotelFees 数组返回的各项费用。

请务必单独显示 HotelFees 数组返回的费用,因为这些是酒店(而非 EAN 或当地政府)在住客入住或退房时收取的费用。

包括适用于所选日期的每人每晚房价,或所有入住夜晚总房价(不含税额)。 最终明细应包括入住夜晚房价(总房价或每晚房价)、SurchargeHotelFee 金额以及应付总额。

代码示例
这些代码块包括此要求涉及的费用数组。下面是从完整的酒店列表回复中节选的相关代码。
REST
  ……
  
"Surcharges": {
      "@size": "1",
      "Surcharge": {
  		"@type": "TaxAndServiceFee",
		"@amount": "64.65"
	    }}    },
"nonRefundable": false,
	"HotelFees":
	 {"@size": "1","HotelFee":
	  {    "@description": "MandatoryTax",
	      "@amount": "57.11"}
	      },
	      "rateType": "MerchantStandard",
	      "currentAllotment": 1}
      ……
      
XML
  ……
  <NightlyRate baseRate="545.82" rate="545.82" promo="false" />
  </NightlyRatesPerRoom>
  <Surcharges size="1">
  <Surcharge type="TaxAndServiceFee" amount="64.65" />
  </Surcharges></ChargeableRateInfo>
  <nonRefundable>false</nonRefundable>
  <HotelFees size="1">
  <HotelFee description="MandatoryTax" amount="57.11" />
  </HotelFees>
  <rateType>MerchantStandard</rateType>
  <currentAllotment>1</currentAllotment>
  </RateInfo>
  ……
  
示例


5.3 以单行项目明确显示税费

对于所有税收参考和/或在预订表单上提供价格明细的情况,TaxAndServiceFee 的返回值必须单独显示。

根据法律要求,在价格明细中涉及到任何“税费”总计时,您的网站应针对所有 Expedia Collect 预留房提供以下确切文本。根据酒店供应位置(而非客户位置)显示内容。

  • 欧洲:“应缴税款”
  • 所有其他地区:“应缴税款和服务费”


5.4 明确显示收取的总价

示例



5.5 必须将联盟伙伴服务费或预订费明确区分开

如果您要收取自己的预订费或服务费,则必须向客户明确指明该费用是由您 - 联盟伙伴(而非 EAN)针对单独的服务收取的(即,不是针对安排住宿收取的其他费用)。这些费用不可包含在现有费用细分中。
联盟伙伴预订费或服务费不能与价格绑定,必须单独支付。

示例:
以下客房示例的税款和服务费总计为 27.09 欧元。在不正确的示例中,合作伙伴服务费已计入 EAN 费用总计中。正确的示例单独提供合作伙伴服务费,并且明确说明其来源。



5.6 必须单独报告城市/强制性税额

当返回 MandatoryTax 值时,在您的费用明细中单独返回该值。这些费用由酒店直接收取,不是标准应缴税款的一部分。

示例



5.7 单独报告销售税额和酒店入住税额(如果适用)

Surcharges 数组返回 salesTaxhotelOccupancyTax 后,在您的费用明细中单独显示这些项目。这些项目详细说明了由当地政府或所在州收取的税额,必须按照当地法律(通常仅在美国)予以显示。请注意,这些税额未在测试预订中返回,而是仅会在适用管辖区的有效预订中返回。

收取酒店入住税的美国州包括但不限于纽约州、宾夕法尼亚州、德克萨斯州和马萨诸塞州。



5.8 显示入住说明

在可订空房回复中返回时,必须显示每间客房的 checkInInstructions 的内容。该信息必须显示在预订前页面上,以确保客户在完成预订之前,在入住或特殊访问说明中了解任何潜在费用。

请始终使用可订空房回复中的值,酒店信息或静态数据库入住说明值可能不是最新值。

代码示例
REST
{ "HotelRoomAvailabilityResponse": {
     "@size": "3",
     "customerSessionId": "0ABAAAAE-48DC-3914-D0B2-A769E3903921",
     "hotelId": 127092,
     "arrivalDate": "09/03/2015",
     "departureDate": "09/04/2015",
     "hotelName": "The Edgewater - A Noble House Hotel",
     "hotelAddress": "Pier 67, 2411 Alaskan Way",
     "hotelCity": "Seattle",
     "hotelStateProvince": "WA",
     "hotelCountry": "US",
     "numberOfRoomsRequested": 1,
     "checkInInstructions": "<p><b>Know Before You Go</b> <br /><ul> 
<li>Children 18 years old and younger stay free when occupying the parent or guardian's room,
 using existing bedding. </li> </ul></p><p><b>Fees</b> <br /><p>The following fees and deposits
 are charged by the property at time of service, check-in, or check-out. </p> <ul> 
<li>Breakfast fee: USD 22 per person (approximately)</li> <li>Fee for in-room wireless 
Internet: USD 9.95 (for 24 hours, rates may vary)</li> 
<li>Fee for wireless Internet in public areas: USD 9.95 (for 24 hours, rates may vary)</li> 
<li>Valet parking fee: USD 38 per night (in/out privileges)</li> 
<li>Late check-out fee: USD 125</li> 
<li>Rollaway bed fee: USD 20 per night</li>
<li>Facilities fee: USD 12.00 per accommodation, per night</li> </ul> 
<p>The above list may not be comprehensive. Fees and deposits may not include tax and 
are subject to change. </p></p>",
"HotelRoomResponse": [……
……


XML
<ns2:HotelRoomAvailabilityResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/" size="5">
 <customerSessionId>0ABAAA4D-082E-AA91-4D02-B8BAE1397B78</customerSessionId>
 <hotelId>127092</hotelId>
 <arrivalDate>09/03/2015</arrivalDate>
 <departureDate>09/04/2015</departureDate>
 <hotelName>The Edgewater - A Noble House Hotel</hotelName>
 <hotelAddress>Pier 67, 2411 Alaskan Way</hotelAddress>
 <hotelCity>Seattle</hotelCity>
 <hotelStateProvince>WA</hotelStateProvince>
 <hotelCountry>US</hotelCountry>
 <numberOfRoomsRequested>1</numberOfRoomsRequested>
 <checkInInstructions><p><b>Know Before You Go</b> <br /><ul> <li>Children 18 years old and
 younger stay free when occupying the parent or guardian's room, using existing bedding. </li>
 </ul></p><p><b>Fees</b> <br /><p>The following fees and deposits are charged by the property 
at time of service, check-in, or check-out. </p> <ul> <li>Breakfast fee: USD 22 per person 
(approximately)</li> <li>Fee for in-room wireless Internet: USD 9.95 (for 24 hours, 
rates may vary)</li> <li>Fee for wireless Internet in public areas: USD 9.95 (for 24 hours,
 rates may vary)</li> <li>Valet parking fee: USD 38 per night (in/out privileges)</li> 
<li>Late check-out fee: USD 125</li> <li>Rollaway bed fee: USD 20 per night</li>
<li>Facilities fee: USD 12.00 per accommodation, per night</li> </ul> 
<p>The above list may not be comprehensive. Fees and deposits may not include tax and 
are subject to change. </p></p></checkInInstructions> <HotelRoomResponse>


5.9 联盟伙伴在每个预订请求中提供客户电子邮件地址或受监控的电子邮件邮箱

ReservationInfo 中的 email 元素必须包含客户的电子邮件地址或您的集成所监控的邮箱,以进行确认电子邮件处理。这可确保 EAN 生成的所有电子邮件的目的地始终已知,必须如此以避免出现预订纠纷或进行故障排除。



5.10 预付费预订需指明全额收取付款

Expedia Collect 可订空房的预订页面必须指明系统将针对所提供的信用卡立即收取预订全款。 Expedia Collect 预订确认页面必须指明预订已全额付款。

示例


5.11 如果适用,必须明确指明儿童年龄

如果您的集成允许儿童住客,并且客户在客房选择中指定了儿童住客,您必须在所有 Expedia Collect 酒店的预订页面中明确确认儿童住客的人数及其年龄。该信息通过客房供应情况回复中的 numberOfChildrenchildAges 元素提供。

客户指定儿童住客时,API 回复可能包括年龄限制和/或加人或者婴儿床费用,这可能影响预订的费用或资格。在付款前,必须向客户明确说明这些项目。

各个酒店会界定儿童的年龄范围。通常情况下,年龄不超过 17 岁的个人被视为儿童。某些酒店不接待未满 18 岁的住客。

示例


5.12 明确显示不可退款政策

不可退款的可订空房由 nonRefundable=true 指示。该值始终优先于任何其他政策数据。在客房选择页面上明确指明这些客房不可退款,并且在最终预订页面上重申不可退款政策。在任何情况下,酒店均不退还这些预订的费用。

对于可退款的可订空房,请参阅我们的指南了解如何计算 cancelPolicyInfo 数组提供的罚款。



5.13 明确显示取消政策

允许客户在您的最终预订页面上确认购买前,您必须针对所选客房提供取消政策以及要求客户接受该政策。
如果客户不同意客房的特定取消政策,则不允许客户进行预订。

取消政策必须始终通过 cancelPolicyInfo 数组从实时 API 回复中获取。

在客户接受您自己的条款和条件时,可以包含该协议,例如“[选中该复选框/继续进行预订/等],即表示您确认已阅读并接受我们的条款和条件,以及适用于您所选客房的取消政策。”

示例

5.14 在每个预订请求中包含电话号码

预订必须包含客户的真实联系电话号码。在预订请求的 homePhone 字段中包含此号码。通知客户,该号码用于在入住前需要解决他们的预订问题时与他们联系。

示例



6. 确认页面

6.1 明确显示收取的总价

示例

7. 确认电子邮件/凭单

7.1 如果您使用自己的电子邮件,需提供清晰的费用明细

如果不使用 EAN 的自动客户确认电子邮件/凭单,则您发送给客户的电子邮件/凭单必须提供费用明细。


7.2 以单行项目明确显示税费

对于所有税收参考和/或给出价格明细的情况(如 Expedia Collect 酒店的可订空房、预订表和确认结果),TaxAndServiceFee 的返回值必须单独显示。

根据法律要求,涉及到任何“税费”总计时,您的网站应针对所有 Expedia Collect 预留房提供以下确切文本。根据酒店供应位置(而非客户位置)显示内容。

  • 欧洲:“应缴税款”
  • 所有其他地区:“应缴税款和服务费”


7.3 必须将联盟伙伴服务费或预订费明确区分开

如果您要收取自己的预订费或服务费,则必须向客户明确指明该费用是由您 - 联盟伙伴(而非 EAN)针对单独的服务收取的(即,不是针对安排住宿收取的其他费用)。这些费用不可包含在现有费用细分中。
联盟伙伴预订费或服务费不能与价格绑定,必须单独支付。

示例:
以下客房示例的税款和服务费总计为 27.09 欧元。在不正确的示例中,合作伙伴服务费已计入 EAN 费用总计中。正确的示例单独提供合作伙伴服务费,并且明确说明其来源。



7.4 必须单独报告城市/强制性税额

如果先前为要预订的酒店返回了 MandatoryTax 值,则在预订前价格明细中单独返回该值。这些费用由酒店直接收取,不是标准应缴税款的一部分。

示例



7.5 指明 Travelscape LLC 或 Vacationspot, SL 是供应商

您必须根据酒店的销售网站按如下所示明确指明酒店供应商是 Travelscape LLCVacationspot, SL

  • Vacationspot: 适合所有法国和比利时的销售网站。例如,法国:Mytravel.fr;或比利时:Mytravel.be
  • Travelscape: 适合其他所有销售网站。


7.6 每间客房均提供床型说明

在您的确认电子邮件/凭单中确认客户选择的床型。对于供应情况回复,如果 BedTypes 数组未返回值或仅返回一个值,则显示每间客房的 rateDescriptionroomTypeDescription 值 - 这些值通常返回相同数据。

如果 BedTypes 数组返回多个选项,则在酒店的客房选择页面中确认客户选择的选项。使用 bedTypeId 参数在您的预订请求中返回客户选择的 BedType ID。

代码示例
单床型示例 XML

<rateCode>205109735</rateCode>
<roomTypeCode>201048862</roomTypeCode>
<rateDescription>Deluxe Room, 2 Single Beds</rateDescription>
<roomTypeDescription>Deluxe Room, 2 Single Beds</roomTypeDescription>

<supplierType>E</supplierType>
<propertyId>18813</propertyId>
<BedTypes size="1">
<BedType id="43">
<description>2 single beds</description>
</BedType>

</BedTypes>

多床型示例 XML
请注意,房价/房型说明不包含床型说明。
<rateCode>204975819</rateCode>
<roomTypeCode>201019993</roomTypeCode>
<rateDescription>Executive Room</rateDescription>
<roomTypeDescription>Executive Room</roomTypeDescription>

<supplierType>E</supplierType>
<propertyId>18813</propertyId>
<BedTypes size="2">
<BedType id="14">
<description>1 king bed</description>
</BedType>
<BedType id="43">
<description>2 single beds</description>
</BedType>

</BedTypes>
单床型示例 REST
"rateCode": 484072,
"roomTypeCode": 198058,
"rateDescription": "Deluxe Room, 1 King Bed",
"roomTypeDescription": "Deluxe Room, 1 King Bed",

"supplierType": "E",
"propertyId": 5900,
"BedTypes": {
"@size": "1",
"BedType": {
"@id": "14",
"description": "1 king bed"

}
},
多床型示例 REST
"rateCode": 206423129,
"roomTypeCode": 426739,
"rateDescription": "Family Apartment sleeps 6",
"roomTypeDescription": "Family Apartment sleeps 6",

"supplierType": "E",
"propertyId": 914263,
"BedTypes": {
"@size": "2",
"BedType": [
{
"@id": "69",
"description": "1 double and 1 sofa bed"
}, {
"@id": "70",
"description": "2 twin and 1 sofa bed"

}
]
},


7.7 显示入住说明

在可订空房回复中返回时,必须显示每间客房的 checkInInstructions 的内容。该信息必须显示在预订前页面上,以确保客户在完成预订之前,在入住或特殊访问说明中了解任何潜在费用。

请始终使用可订空房回复中的值,酒店信息或静态数据库入住说明值可能不是最新值。

代码示例
REST
{ "HotelRoomAvailabilityResponse": {
     "@size": "3",
     "customerSessionId": "0ABAAAAE-48DC-3914-D0B2-A769E3903921",
     "hotelId": 127092,
     "arrivalDate": "09/03/2015",
     "departureDate": "09/04/2015",
     "hotelName": "The Edgewater - A Noble House Hotel",
     "hotelAddress": "Pier 67, 2411 Alaskan Way",
     "hotelCity": "Seattle",
     "hotelStateProvince": "WA",
     "hotelCountry": "US",
     "numberOfRoomsRequested": 1,
     "checkInInstructions": "<p><b>Know Before You Go</b> <br /><ul> 
<li>Children 18 years old and younger stay free when occupying the parent or guardian's room,
 using existing bedding. </li> </ul></p><p><b>Fees</b> <br /><p>The following fees and deposits
 are charged by the property at time of service, check-in, or check-out. </p> <ul> 
<li>Breakfast fee: USD 22 per person (approximately)</li> <li>Fee for in-room wireless 
Internet: USD 9.95 (for 24 hours, rates may vary)</li> 
<li>Fee for wireless Internet in public areas: USD 9.95 (for 24 hours, rates may vary)</li> 
<li>Valet parking fee: USD 38 per night (in/out privileges)</li> 
<li>Late check-out fee: USD 125</li> 
<li>Rollaway bed fee: USD 20 per night</li>
<li>Facilities fee: USD 12.00 per accommodation, per night</li> </ul> 
<p>The above list may not be comprehensive. Fees and deposits may not include tax and 
are subject to change. </p></p>",
"HotelRoomResponse": [……
……

XML
<ns2:HotelRoomAvailabilityResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/" size="5">
 <customerSessionId>0ABAAA4D-082E-AA91-4D02-B8BAE1397B78</customerSessionId>
 <hotelId>127092</hotelId>
 <arrivalDate>09/03/2015</arrivalDate>
 <departureDate>09/04/2015</departureDate>
 <hotelName>The Edgewater - A Noble House Hotel</hotelName>
 <hotelAddress>Pier 67, 2411 Alaskan Way</hotelAddress>
 <hotelCity>Seattle</hotelCity>
 <hotelStateProvince>WA</hotelStateProvince>
 <hotelCountry>US</hotelCountry>
 <numberOfRoomsRequested>1</numberOfRoomsRequested>
 <checkInInstructions><p><b>Know Before You Go</b> <br /><ul> <li>Children 18 years old and
 younger stay free when occupying the parent or guardian's room, using existing bedding. </li>
 </ul></p><p><b>Fees</b> <br /><p>The following fees and deposits are charged by the property 
at time of service, check-in, or check-out. </p> <ul> <li>Breakfast fee: USD 22 per person 
(approximately)</li> <li>Fee for in-room wireless Internet: USD 9.95 (for 24 hours, 
rates may vary)</li> <li>Fee for wireless Internet in public areas: USD 9.95 (for 24 hours,
 rates may vary)</li> <li>Valet parking fee: USD 38 per night (in/out privileges)</li> 
<li>Late check-out fee: USD 125</li> <li>Rollaway bed fee: USD 20 per night</li>
<li>Facilities fee: USD 12.00 per accommodation, per night</li> </ul> 
<p>The above list may not be comprehensive. Fees and deposits may not include tax and 
are subject to change. </p></p></checkInInstructions> <HotelRoomResponse>


7.8 正确显示行程 ID 和确认编号

如果您的集成直接将 EAN 的 itineraryIdconfirmationNumbers 提供给客户,则必须在即时预订后确认页面中明确显示这些编号。

如果您不使用 EAN 的自动客户确认电子邮件/凭单,则必须提供证明以指明您的客服在需要 EAN 客户支持的帮助时,有权访问原始 EAN 行程 ID 和确认编号。

代码示例
REST
customerSessionId: "0ABAAA80-6022-F319-1492-8BACB0B09974",
    itineraryId: 177592654,
    confirmationNumbers: 1234,
    processedWithConfirmation: true,
    supplierType: "E",
    reservationStatusCode: "CF",
    existingItinerary: false,

XML
<ns2:HotelRoomReservationResponse xmlns:ns2="http://v3.hotel.wsapi.ean.com/">
<customerSessionId>0ABAAA8A-B59C-1291-4982-BDA2A8793A49</customerSessionId>
<itineraryId>177598724</itineraryId>
<confirmationNumbers>1234</confirmationNumbers>

<processedWithConfirmation>true</processedWithConfirmation>
<supplierType>E</supplierType>
<reservationStatusCode>CF</reservationStatusCode>
<existingItinerary>false</existingItinerary>

8. 技术和防止欺诈要求

8.1 联盟伙伴在每个预订请求中提供唯一的联盟伙伴确认 ID

对于每个预订请求,您必须使用 affiliateConfirmationId 元素,以便:

  1. 自行进行跟踪
  2. 避免多个表单提交产生重复的预订/重复的费用
  3. 预订超时或由于上游超时返回空白结果时,在 EAN 系统中查找行程。


8.2 已实施相关逻辑来处理待定状态和错误状态

请参阅待定供应商流程页面以及我们的错误处理部分中的详细信息,以帮助您的实施满足这一要求。

对于返回 PS 状态的预订,必须进行监控,直到它们变为永久确认 (CF)、错误 (ER) 状态或持续 3 天,达到任一条件即可。大多数预订会在几个小时到一天的时间内解决。



8.3 联盟伙伴在每个预订请求中提供客户 IP 地址

在所有 API 调用中都必须传递客户的设备 IP 地址,以便确定销售网站。

该要求可确保在 EAN 的系统中设置正确的 POS,从而根据客户的位置为其提供相关内容和最合适的房价。

传递静态、虚假或服务器的 IP 将导致价格不匹配错误和返回不正确的内容。



8.4 联盟伙伴在每个请求中提供会话 ID

从客户的第一个酒店列表搜索开始,您就必须customerSessionId 用于每个客户,或者将初始列表回复中返回的值用于预订路径的其余部分,以确保返回的内容在所有 API 调用中保持一致,并且您的客户从开始购买到完成预订都获得始终如一的体验。

此值可大大简化 EAN 对合作伙伴请求中所含问题的内部调试流程,因为其将各个客户的请求路径明确地关联在一起。



8.5 联盟伙伴在每个请求中提供客户的用户代理字符串

如果您有资格享受移动优惠,则必须在所有 API 调用中传递用户代理数据,以确定客户设备类型并确保客户获得与其使用的设备相关的房价。