请勿依赖异常消息的文本匹配来确定具体做法。

  1. 确定异常的性质(处理、类别、消息)
  2. 确定未因您请求中的错误出现异常
    • 检查格式正确的示例请求,确保您正确提交了所有项目和值。
    • 调试工作表可帮助您将请求与格式正确的请求进行比较。使用 XML 沙盒生成完全相同的请求,复制 XML 请求字符串并将其与您自己的请求逐项比较。
  3. 根据返回的处理和类别以及用户的以前操作确定具体做法。
    • 用户需要选择其他酒店吗?
    • 用户需要更正他们的输入数据吗?
    • 告知用户在返回 handling=AGENT_ATTENTION 时,代理将与他们联系来跟进预订请求。

由于供应商错误消息更改不会发出通知,也不是由这些系统发布,因此,完整的消息列表未知。

  • 请在错误发生时记录并收集错误消息,以便创建自己的错误数据库。
  • 通过在自己的系统中收集处理、类别以及消息元素,您可以最终处理所有发生的错误,其中包括供应商资源返回的任何新消息。

通用回复元素

元素 类型 说明
customerSessionId (字符串) 返回该值的目的是跟踪用户会话活动,以便编写统计信息、用户行为及流量。在发出的每个请求中包含该值以记录各个用户会话。
EanWsError (EanWsError 对象) 根异常节点

EanWsError

元素 类型 说明
itineraryId (长整型) 与 EAN 行程相关联的 ID。该值在所有与客户服务代理就预订问题进行的通信中都必不可少。行程 ID 仅在预订请求中返回。预订请求出现数据验证错误时不会返回 itineraryID。如果返回 1,则始终将其作为参考编号返回给客户端。否则,表示该错误尚未达到生成参考 itineraryID 的程度。
  • 如果返回 -1,则表示尚未创建行程记录且不存在请求记录。
  • 如果返回行程 ID,则应在与客户服务就任何预订问题进行的所有通信中使用该 ID。
  • 预订请求失败时,如果系统中可记录该事件,则会返回行程。
  • 在某些情况下(例如信用卡验证失败),可以在任意跟进请求中包含行程 ID 以更正失败的预订,这会将失败行程改为成功行程。这可以防止同一客户端出现一系列失败的行程。在发送的预订请求中包含 itineraryID 时请保持谨慎,以免错误的覆盖成功的预订。
  • 如果还返回 handling=AGENT_ATTENTION,则会标记该错误以便代理进行跟进。否则,handling=UNKNOWN 或 handling=UNRECOVERABLE 表示必须重新提交新的预订请求。
  • 返回的类别指示是否可以重新尝试同一预订(报价键失败)或是否必须选择一家新酒店(例如:售完)。
  • 如果重新提交同一请求,请刷新客房数据,并向用户显示所有更改的房价以供重新选择。然后在重新提交的预订中发送更新后的客房数据。
exceptionConditionId (整型) 仅供内部参考
presentationMessage (字符串) 显示返回的错误消息
verboseMessage (字符串) 更具体的详细错误消息
handling (errorHandling 对象) 表示异常严重程度及可能的处理方法的值
category (errorCategory 对象) 表示异常性质或发生原因的值
ErrorAttributes
(ErrorAttributes 对象) 附加错误数据。通常该元素将返回数据用于安全码信用卡处理或更正多个位置错误。
ServerInfo (ServerInfo 对象)

(minRev 7 及更高版本)

属性:

  • serverTime = 当前可读的格式化时间
  • timestamp = 当前时间(按秒计)
    • 如果您在使用签名验证时收到验证错误,请使用该值创建 sig 参数来重新发送请求。由于时区差异,有些联盟伙伴无法在生成 sig 值时准确匹配时间。创建 sig 值并采用该方法验证时,使用该值可使时间与我们的服务器同步。
  • instance = 内部服务器实例
示例: <ServerInfo serverTime="19:11:13.082-0500" timestamp="1311725473" instance="48" />

errorHandling

元素 说明
UNKNOWN 无法成功创建预订且失败原因未知。
RECOVERABLE 通常表示用户错误,例如无法通过验证的错误条目。要恢复,只需要求用户根据消息中的描述更正字段的输入错误即可。这也可能表示可通过使用更新的值重新提交预订来恢复的错误。
UNRECOVERABLE 出现的错误无法由用户或客户服务代理进行更正。要下达此预订,用户必须返回并重新开始或刷新搜索。该错误会伴随无效请求问题、不可用数据或供应商问题一起出现。
AGENT_ATTENTION

我们能够记录行程,但是由于错误性质或预订尝试:

  • 代理必须跟进以手动完成预订
  • 验证已标记为欺诈的某个预订
  • 回复用户,指明出现了错误并询问他们是否仍坚持发送预订请求。在很多情况下,系统会指引用户返回网站以重新尝试在线预订。

errorCategory

元素 说明
UNKNOWN 未知处理故障
EXCEPTION 无法识别的错误
CREDITCARD 信用卡处理错误
DATA_VALIDATION 用户输入错误
AUTHENTICATION 未经授权的访问,无法验证访问权限
UNABLE_TO_PROCESS_REQUEST 无法处理请求
INVALID_PROPERTY_ID 酒店 ID 无效或酒店 ID 未激活
RESULT_NULL 无结果
PROCESS_FAIL 处理故障
SOLD_OUT 售完
RESTRICTED_CHECKIN 日期或夜数不符合限制的入住规则
ONEROOM  
SUPPLIER_COMMUNICATION 供应商通信故障,供应商连接问题
DATA_PARSE_RESULT 数据解析问题
CORPORATE_RATE 需要公司 ID 才能提供房价
RES_NOT_FOUND 未找到预订
RES_CANCELLED 预订已取消
HRN_QUOTE_KEY_FAILURE 房价键出错,通过刷新搜索获得新房价键
HRN_QUOTE_KEY_INVALID 房价键无效,通过刷新搜索获得新房价键
SYS_OFFLINE 供应商系统脱机或停机
SUPPLIER_INITITIALIZATION 无法连接到供应商
SUPPLIER_ROUTER_EXCEPTION 无法连接到供应商
EJB_CREATE_EXCEPTION 预订异常
FINDER_EXCEPTION 供应商异常
BML_FAIL 供应商异常
PRICE_MISMATCH 房价变动,通过刷新搜索或者选择新客房或酒店获得新房价
CSV_FAIL 信用卡安全码错误
PAYER_AUTH_REQUIRED 按照预订请求和测试预订程序中所述,对信用卡进行 VBV/3DS 安全码处理
PAYER_AUTH_FAILED 安全码错误或安全码处理故障
ITINERARY_ALREADY_BOOKED 已在系统中找到现有行程

ErrorAttributes

元素 类型
entry (entry 对象)
entry
key (errorAttributesMap 对象)
value (字符串)

errorAttributesMap

元素 说明
CC_TRANSACTIONSTATUS  
TRANSACTIONSTATUSMSG  
PA_TRANSACTIONSTATUS VBV/3DS 详细信息
XID VBV/3DS 详细信息
ACS_URL  
VBV/3DS 详细信息
PA_REQ VBV/3DS 详细信息
AUTH_CODE VBV/3DS 详细信息
PAS_TRANSACTION_ID VBV/3DS 详细信息
SUPPLIER_ERROR_CODE  

XML 异常示例

<ns2:HotelRoomAvailabilityResponse size="0">
  <EanWsError>
    <itineraryId>-1</itineraryId>
    <handling>RECOVERABLE</handling>
    <category>DATA_VALIDATION</category>
    <exceptionConditionId>-1</exceptionConditionId>
    <presentationMessage>TravelNow.com cannot service this request.</presentationMessage>
    <verboseMessage>Data in this request could not be validated: Specified arrival date is prior to today's date.</verboseMessage>
    <ServerInfo serverTime="19:11:13.082-0500" timestamp="1311725473" instance="48" />
  </EanWsError>
  <customerSessionId>0ABAA825-0BE2-8912-CF12-59D0D9032F8</customerSessionId>
</ns2:HotelRoomAvailabilityResponse>