This is an auto-generated translation

常见错误响应

我们的 API 服务会共享下列常见错误代码、消息和响应格式。

Rapid 错误处理建议

错误处理逻辑

  • 平台和合作伙伴应确保已建立错误处理逻辑,以处理购物和预订 API 错误。
  • 除非在下面的注释中明确规定,否则每次预订请求都要使用一个独一无二的 affiliate_reference_id
  • 您应该不断审查和更新错误处理逻辑,特别是针对预订请求的错误处理逻辑。
  • 所有 Rapid API 响应都有一个对应的 HTTP 代码,请参阅下面的响应 HTTP 代码列表。

连接超时或通信超时

对于航班 API 预订请求,建议将 API 连接超时设置为 120 秒;对于住宿和其他 API,我们建议设置为 90 秒。但是,您可以决定对购物可用性调用使用较短的连接超时时间。

如果在 120 秒内没有收到响应,Rapid API 将发出 5xx 错误,因为 Rapid API 自身的连接超时设置为 120 秒。

在某些情况下,Rapid API 不支持 HTTP Expect: 100-Continue 过程。使用该进程尝试连接服务器时,您可能会遇到连接问题,尤其是在 cURL、C#/.NET 和其他一些默认遵循该进程的编程语言中。

**注意:**HTTP 504 网关超时并不表示 Rapid 已超时。在这些情况下,要么是基础设施服务发生故障,要么是 Rapid 充当了另一个下游服务的网关,并为该服务设置了超时限制。下游超时将触发 504 错误。如果 504 错误发生在 Booking 调用上,请检查预订是否是使用行程检索(affiliate_reference_id+ 电子邮件)创建的,因为下游问题可能发生在创建预订之前(酒店通信、支付服务器)或之后(Expedia Group 财务管理)。另外,请检查网络连接是否稳定。Traceroute 命令可能有助于识别连接问题。

处理预订和检索 5xx 错误

预订错误(5xx 状态)或超时并不一定意味着预订本身无效。该错误可能是在预订创建后发生的。我们建议您发送一封包含affiliate_reference_id+ 电子邮件的行程检索请求,以查看预订状态。

在 90 秒内返回的任何错误并不代表预订的最终状态。通常情况下,大多数预订会在 13-30 秒内确认,但有些预订可能需要长达 5 分钟才能确认。

您可以实现逻辑,在 90 秒内检查预订状态 3 次。大多数回复会在前 30 秒内得到确认,您可以无需等待完整的 90 秒即可确认回复。如果仍未收到最终回复,您可以稍后 30 分钟内重试检索,然后再联系 Rapid API 呼叫中心代理寻求进一步支持。

使用 Retrieve API 调用 double-confirm 获取预订结果(HTTP 200 或 HTTP 404 响应)。

检索响应返回保留/继续信息

有时,在成功预订住宿后,“行程检索”响应会返回看起来像是针对保留/恢复预订的响应数据。因此,响应中不会包含预期的预订信息(房间、取消罚款等),而只会包含用于保留/恢复情况的令牌。

原因是该预订虽然有效,但仍处于待处理状态。该标记通常会在几分钟内最终清除,因此,应重复发出行程检索申请,直到完成预订。

响应示例:

{
  "itinerary_id": "2667552437552",
  "links": [
    {
      "rel": "retrieve",
      "method": "GET",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    },
    {
      "rel": "resume",
      "method": "PUT",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    },
    {
      "rel": "cancel",
      "method": "DELETE",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    }
  ]
}

多级结构分解错误

当 single-level 错误无法解释所有必要细节时,API 响应可能会将错误分解为多个级别。逐层分析信息有助于澄清和排除错误。

响应示例:

{
    "type": "invalid_input",
    "message": "An invalid request was sent in, please check the nested errors for details.",
    "errors": [
        {
            "type": "duplicate_itinerary",
            "message": "An itinerary already exists with this affiliate reference id.",
            "fields": [
                {
                    "name": "affiliate_reference_id",
                    "type": "body",
                    "value": "XXXXXX"
                }
            ]
        }
    ]
}

HTTP 响应代码

400 - 错误请求

在您的请求存在格式错误或包含不正确的值时返回。

代码 400 错误请求表示请求预订标头存在问题。错误响应将在预订请求标头中包含实际的无效错误数组字段。标头由多个数组和 sub-arrays 组成,例如房间和付款。数组整体为正文。因此,body.email 将表示标头正文的电子邮件参数。

注意: 对于住宿 API,预订标头房间数组必须与 Availability 调用中请求的房间数相同。

当请求参数过大时,会返回标有“Tomcat Exception Report”的 400 Bad Request 错误,这种情况最常见于住宿内容和获取房态 API。为避免出现此错误,请减少住宿数量或删除请求中不必要的参数。

响应示例:

不支持的语言:

{
  "type": "invalid_input",
  "message": "An invalid request was sent in, please check the nested errors for details.",
  "errors": [
    {
      "type": "language.not_supported",
      "message": "Language is not supported. Supported languages are: [de-DE, en-US, es-ES, es-MX, fr-FR, id-ID, it-IT, ja-JP, ko-KR, pt-BR, zh-CN]",
      "fields": [
        {
          "name": "language",
          "type": "querystring",
          "value": "xx-XX"
        }
      ]
    },
    {
      "type": "filter.mismatch",
      "message": "Existing booking is expedia_collect, this cannot be changed",
      "fields": [
        {
          "name": "filter",
          "type": "querystring",
          "value": "property_collect"
        }
      ]
    }
  ]
}

缺少版本值:

{
  "type": "version.required",
  "message": "You have not specified a version, the supported versions are: [1, 2]",
  "fields": [
    {
      "name": "version",
      "type": "path",
      "value": "missing"
    }
  ]
}

无效的版本值:

{
  "type": "version.unsupported",
  "message": "You have requested a version that is not supported, supported versions are: [1, 2]",
  "fields": [
    {
      "name": "version",
      "type": "path",
      "value": "3"
    }
  ]
}

401 - 未授权

返回 HTTP 授权标头缺失或无法解析时的错误信息。对任何 Rapid Lodging API 的每个请求都必须包含您的 API 密钥 + 共享密钥 + UNIX 时间戳(以秒为单位)的连接后的 未加盐的 SHA-512 哈希。有关完整的详细信息,请参考我们的签名授权页面。

示例:住宿 API 401 未授权响应:

{
  "type": "request_unauthenticated",
  "message": "Data required to authenticate your request is missing. Ensure that your request follows the guidelines in our documentation.",
  "fields": [
     {
       "name": "apikey",
       "type": "header",
       "value": "jaj3982k239dka328e"
     },
     {
       "name": "signature",
       "type": "header",
       "value": "129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b"
     },
     {
       "name": "timestamp",
       "type": "header",
       "value": 198284729
     },
     {
       "name": "servertimestamp",
       "type": "server",
       "value": 198284729
     }
  ]
}

对于 Rapid Flight API 调用,您必须在请求标头中包含有效的 EGToken 主体 JSON Web 令牌 (JWT)

Authorization: EGToken principal-JWT={encodedJwt}

主 JWT 是通过 OAuth 2.0 客户端凭证和令牌交换获得的;有关详细信息,请参阅OAuth 2.0 身份验证快速航班预订 API使用指南。

403 - 禁止

在您的 HTTP 授权标头有效,却无法访问请求的资源时返回。

403 禁止响应示例:

{
  "type": "request_unauthorized",
  "message": "Your request could not be authorized."
}

404 - 未找到

找不到请求的 API 资源时返回。请对照我们记录的示例来检查您的请求 URL。

住宿地理 API 和内容 API 也使用 404 响应来指示何时无法找到请求的地理文件或 content-specific 文件或资源。 有关完整的示例,请参考其相应的文档页面。

行程检索后的代码 404 表示未找到预订。如果检索是由于预订错误而进行的,则表示预订并未创建。但是,您需要确保行程检索 API 请求参数有效,因此请确保检索 affiliate_reference_id、电子邮件和/或行程编号正确。此外,如果检索 API 调用与预订调用之间的时间间隔不足 90 秒,我们建议您再次尝试检索。

响应示例:

{
    "type": "resource.not_found",
    "message": "The requested resource could not be found."
}

409 - 价格不匹配

许多供应商采用动态定价,也称为“time-based 定价”。这意味着,定价会根据供需算法而变化。Expedia Group 每秒多次接收更新的速率,这意味着速率会频繁变化。

值得注意的是,这通常是供应商的选择,而不是 Expedia Group 的选择。此外,由于价格和可用性存在多层缓存,因此任何预订都可能存在多层延迟。

价格错配(PMM)是一种预期情况,其发生的原因有很多,包括系统性能下降或系统未能反映更新后的价格。您应该监控这些事件的发生频率,如果发生频率突然增加或达到阈值,请联系支持部门。

如果多个结果同时出现 PMM,则应检查是否存在快速降解的可能性。

如果长时间内对相同的结果返回 PMM,则可能是由于供应商错误加载了费率。您可以联系技术支持进行查询。

要从 PMM 中恢复,请再次调用价格检查(住宿 API)或航班详情(航班 API)以获取新的预订 URL 令牌。之后即可在预订调用中使用相同的 affiliate_reference_id

响应示例:

{
  "type": "price_mismatch",
  "message": "Payment amount did not match current price, please check price and try again.",
  "fields": [
    {
      "name": "payments.amount",
      "type": "body",
      "value": "100.00"
    },
    {
      "name": "price.amount",
      "type": "body",
      "value": "120.00"
    }
  ]
}

410 - 售完或订满

返回所跟踪的 Rapid API 链接已过期或所请求的库存不再可用的情况。

许多供应商与 Expedia Group 有直接、同步的实时通信链路。

同步通信预订是指根据我们管理的供应商数据,对购物可用性和价格进行查询(住宿 API)或航班详情(航班 API)调用。当预订所选库存不足时,就会出现此错误。

这可能只是暂时的,重试一次或许就能找到库存。等待 90 秒,然后使用与预订一起发送的同一个 affiliate_reference_id,通过检索请求检查预订的状态。如果没有找到预订信息,旅客可能需要选择其他方案。

如果与供应商的连接出现故障,也可能出现售罄错误消息。在这种情况下,我们无法得知真实的供应情况。

响应示例:

链接过期:

{
  "type": "link.expired",
  "message": "The link you followed has expired. Please request a new link."
}

订满:

"type": "rooms_unavailable",
"message": "One or more requested rooms are unavailable."

426 - 需要升级

返回请求是否未使用传输层安全协议 (TLS),TLS 是一种取代安全套接字层协议 (SSL) 的加密协议。

响应示例:

{
  "type": "upgrade_required",
  "message": "This service requires the use of TLS."
}

429 - 速率限制错误

当请求计数超过速率限制时,将返回 429 状态代码。每个请求可能会受到两种不同的速率限制的制约:当集成以超过限制的速度发送请求时的速率限制,以及当 Expedia Group 服务器遇到负载超限时的速率限制。

当您发出 Expedia Group API 请求时,接收服务器会检查请求计数是否在限制范围内。如果请求计数在限制范围内,该请求会通过,并且客户端的计数会增加。如果客户端请求计数超过限制,则服务器会返回包含 HTTP 429(请求过多)状态代码的响应。

服务器可以选择性地包括 Rate-Limit-Day-ResetRate-Limit-Minute-Reset 标头。这表示在发送下一个请求之前您应等待的时间。它们是下一次发生滚动时的时间戳,单位是微秒(不是毫秒)。

例如,当转换为日期/时间时,数值“15489792000000”的结果是 Friday, February 1, 2019 12:00:00 AM(UTC)。

**注意:**如果您收到请求过多的错误,请至少等待 5 分钟,然后再尝试更正的请求。更频繁的重试会引起因缓存时间而产生的重复故障。

响应示例:

HTTP/1.1 429 Too Many Requests
Connection →keep-alive
Content-Length →106
Date →Fri, 01 Feb 2019 06:20:51 GMT
Rate-Limit-Day-Remaining →18
Rate-Limit-Day-Reset →1548979200000
Rate-Limit-Minute-Remaining →0
Rate-Limit-Minute-Reset →1549002000000
Rate-Limit-Reduction-Status →inactive
Server →EAN
Transaction-Id →003224d2-1407-42fe-8bf8-6d74226e7f00

500 - 内部服务器错误

返回 Rapid API 或上游系统中的错误。如果给出了具体操作,请按照消息字段中的说明进行操作,否则,只需再次尝试使用相同的 affiliate_reference_id 发出请求。

Rapid API 检测到问题时会返回 HTTP 500,但无法更具体地说明具体问题是什么。所有合作伙伴在使用 Rapid API 时都会不时收到 500 错误代码响应。

使用不支持的销售网站(如叙利亚)也可能会发生 HTTP 500 错误。

如果您在除创建预订或取消预订以外的 API 响应中收到错误,并且没有已知的降级,则请稍后重试您的请求。响应可能会包含一个 Retry-After 标头,指明再次尝试前的最短延迟时间(以秒为单位)。

如果您在创建预订时收到 API 响应中的错误:

  • 等待 90 秒,然后使用与预订一起发送的同一个 affiliate_reference_id,通过检索请求检查预订的状态。
  • 如果找不到预订或持续收到 500 错误,请稍后再试预订。

如果您在取消预订时收到 API 响应错误:

  • 等待 90 秒,然后使用已知的 itinerary_id,通过行程检索请求检查预订的状态。
  • 如果预订未能取消或您持续收到 500 错误,请稍后重试取消请求。

响应示例:

{
  "type": "unknown_internal_error",
  "message": "An internal server error has occurred."
}
{
  "type": "internal_error",
  "message": "An internal server error has occurred. Please discard any previously received results in this pagination and restart the pagination from the beginning."
}

503 - Service unavailable

HTTP 503 错误通常是暂时的,表示 Rapid API 或下游服务当前无法处理请求。造成这种情况的原因有很多,从暂时过载到与供应商的连接中断都有可能。

如果您在“创建预订”或“取消预订”以外的 API 响应中收到错误,并且没有已知的性能下降,请稍后重试您的请求。响应可能会包含一个 Retry-After 标头,指明再次尝试前的最短延迟时间(以秒为单位)。

如果您在创建预订时收到 API 响应中的错误:

  • 您之前通过价格查询(住宿 API)或航班详情(航班 API)获取的预订链接会在短时间内过期。如果您在首次尝试后收到 HTTP 503 错误,则该链接可能已失效。请获取新链接并再次尝试进行预订。
  • 如果您在第二次尝试时收到 503,请等待 90 秒,然后使用与预订一起发送的同一个 affiliate_reference_id,通过检索请求检查预订的状态。
  • 如果未找到预订或持续收到 503 错误,请稍后重试预订。

如果您在取消预订时收到 API 响应错误:

  • 等待 90 秒,然后使用已知的 itinerary_id,通过行程检索请求检查预订的状态。
  • 如果预订未能取消或您持续收到 503 错误,请稍后重试取消请求。

响应示例:

{
  "type": "service_unavailable",
  "message": "This service is currently unavailable."
}

504 - 网关超时

HTTP 504 错误通常不是来自 Rapid API,而是来自云或边缘基础设施,表明网络基础设施中的某个项目(例如负载均衡器)在事务处理期间发生故障。这通常是一种暂时性的事件。

注意: 超时可能发生在行程创建之前或之后,因此请务必检查行程是否已创建。

HTTP 504(和 502)错误响应采用 HTML 格式,而不是 Rapid API 的 JSON 类型/消息对象对。这进一步表明这些错误并非由 Rapid API 生成。

响应示例:

<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>

房价错误响应的限值标准

为了确定您自己的阈值,您应该测量以下响应代码的每日发生率:409、410、500、503 和 504。如果超过阈值,请联系 Rapid API 支持。

Expedia Group 没有设定阈值,因为它们会根据贵组织的市场以及其他因素而变化。了解市场对于确定某些错误反应发生的原因至关重要。我们的指导意见是,预计每天或每周将有 5-6% 的预订电话因代码 50x 错误而失败。

随着时间的推移,你应该能够计算出自己的阈值。不要只关注每日突然增加的情况——即使阈值设定为每天 5 次,例如,在 5 分钟内连续出现两次 500 错误,也可能是需要向 Rapid API 支持部门咨询的原因。

日志

如果 Rapid API 支持团队要求提供请求/响应日志,请尝试提供以下内容:

  • API 响应标头中的 Transaction-Id 值。这对深入调查至关重要。
  • API 请求和响应日志。请求日志应包括所使用的完整端点 URL。响应日志应该包括返回的 HTTP 代码、完整的响应数据和返回的任何标头。
  • 参数为 point_of_sale 的房态 API 请求以及房态响应。这将允许支持人员识别正在使用的 Rapid API 帐户和配置文件。
  • 每个预订请求的预订 API 请求头和授权头(包含 API 密钥、签名和时间戳)。
  • 请求日志中的预订请求 URL 和令牌。
  • 无论预订调用是成功还是失败,行程检索均在预订 API 调用后发出。

请包括完整的 JSON 请求和响应。JSON 字符串必须是 double-quoted,因此无需在 double-quote 字符前添加反斜杠转义字符。

正确的 Json 代码错误的 Json 代码
json "id": "208646250", "status": "available",json\"id\": \"208646250\", \"status\": \"available\",

只有当需要双引号成为字符串的一部分时,才需要在双引号前面使用反斜杠转义字符。

响应示例:

"spokenwords": "He said "hello world""

注意: 请勿将日志转换为 PDF 格式。Expedia Group 支持有时会将日志数据复制/粘贴到内部工具中,而 PDF 格式会在数据中添加不必要的行字符。

附录

|

HTTP 错误响应

此列表包含已知的购物、预订、取消和其他常见错误。type 的值可能会变更,恕不另行通知。

APIHTTP 代码错误类型值原因建议采取的行动
整体401访问问题业务/技术沟通不适用
整体403访问问题业务/技术沟通不适用
整体426API 版本太旧业务/技术沟通不适用
整体429流量控制业务/技术沟通不适用
预订400affiliate_confirmation_id.invalid_exceeds_char_limitaffiliate_reference_id 的格式不正确。调整请求的内容。
预订400book.hold_and_resume.not_allowed访问问题视情况而定
预订400payments.affiliate_collect.not_allowed访问问题视情况而定
预订400payments.declined交易失败查看嵌套的错误,了解详细信息。
预订400payments.rejected交易失败查看嵌套的错误,了解详细信息。
预订400payments.invalid交易失败查看嵌套的错误,了解详细信息。
预订400payments.fraud_detected涉嫌欺诈阻止用户进行更多预订。需要进一步调查。
预订400body.required请求内容不正确。调整请求的内容。
预订400body_required请求内容不正确。调整请求的内容。
预订400address.city.invalid请求内容不正确。调整请求的内容。
预订400address.country_code.invalid请求内容不正确。调整请求的内容。
预订400address.line_1.invalid请求内容不正确。调整请求的内容。
预订400address.postal_code.required请求内容不正确。调整请求的内容。
预订400address.required请求内容不正确。调整请求的内容。
预订400address.state.invalid请求内容不正确。调整请求的内容。
预订400billing_contact.required请求内容不正确。调整请求的内容。
预订400customer_ip.required请求内容不正确。调整请求的内容。
预订400email.invalid请求内容不正确。调整请求的内容。
预订400email.required请求内容不正确。调整请求的内容。
预订400family_name.invalid请求内容不正确。调整请求的内容。
预订400family_name.required请求内容不正确。调整请求的内容。
预订400given_name.invalid请求内容不正确。调整请求的内容。
预订400given_name.required请求内容不正确。调整请求的内容。
预订400invalid_input请求内容不正确。调整请求的内容。
预订400json.invalid_format请求内容不正确。调整请求的内容。
预订400json_format请求内容不正确。调整请求的内容。
预订400link.invalid请求内容不正确。调整请求的内容。
预订400payments.affiliate_collect.missing_information请求内容不正确。调整请求的内容。
预订400payments.credit_card.type.invalid请求内容不正确。调整请求的内容。
预订400payments.credit_card.type.required请求内容不正确。调整请求的内容。
预订400payments.multiple_payments请求内容不正确。调整请求的内容。
预订400payments.required请求内容不正确。调整请求的内容。
预订400payments.type.not_supported请求内容不正确。调整请求的内容。
预订400phone.invalid请求内容不正确。调整请求的内容。
预订400phone.required请求内容不正确。调整请求的内容。
预订400rooms.required请求内容不正确。调整请求的内容。
预订400rooms.size.invalid请求内容不正确。调整请求的内容。
预订400test.content_invalid请求内容不正确。调整请求的内容。
预订400不适用未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订400rooms.invalid_size选购客房的数量与预订中的数量不符。调整请求的内容。
预订400payments.credit_card.number.required缺少银行卡号。完善银行卡信息的本地验证。
预订400payments.credit_card.number.invalid银行卡号无效。完善银行卡信息的本地验证。
预订400payments.credit_card.security_code.required缺少银行卡验证码。完善银行卡信息的本地验证。
预订400payments.credit_card.security_code.invalid无效的银行卡验证码。完善银行卡信息的本地验证。
预订400payments.credit_card.security_code.not_matched无效的银行卡验证码。完善银行卡信息的本地验证。
预订400payments.credit_card.expired银行卡已过期。完善银行卡信息的本地验证。
预订400payments.credit_card.expiration_month.required缺少银行卡有效期。完善银行卡信息的本地验证。
预订400payments.credit_card.expiration_year.required缺少银行卡有效期。完善银行卡信息的本地验证。
预订400payments.credit_card.expiration_year.length_invalid无效的银行卡有效期。完善银行卡信息的本地验证。
预订400payments.insufficient_funds银行卡余额不足。要求用户确认信息并再次尝试。
预订400duplicate_itinerary重复的预订尝试。等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订409price_mismatch在处理预订前检测到的价格调整。等待 90 秒,在向用户建议新的价格或另一间客房/酒店之前,使用 affiliate_reference_id 检查是否存在潜在的重复预订。
预订410rooms_unavailable在处理预订前检测到的订满。等待 90 秒,在建议用户选择另一间客房/酒店之前,使用 affiliate_reference_id 检查是否存在潜在的重复预订。
预订415不适用未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订415不适用未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订500create.system_failure未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订500payment_registration.system_failure未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订500pricing_system.failure未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订500unknown_internal_error未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订500不适用未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订503create.no_response未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订503service_unavailable未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
预订504不适用未知的异常情况等待 90 秒,并使用 affiliate_reference_id 检查预订更新。
取消400cancel.post_checkout在退房日期后取消。停止退房日期后的在线取消,并联系客户运营团队。
取消400customer_ip.required请求内容不正确。使用 affiliate_reference_id 检查预订更新,联系客户运营团队并进行必要的进一步调查。
取消400invalid_input请求内容不正确。使用 affiliate_reference_id 检查预订更新,联系客户运营团队并进行必要的进一步调查。
取消400room_id.invalid请求内容不正确。使用 affiliate_reference_id 检查预订更新,联系客户运营团队并进行必要的进一步调查。
取消400test.content_invalid请求内容不正确。使用 affiliate_reference_id 检查预订更新,联系客户运营团队并进行必要的进一步调查。
取消400room_already_cancelled取消一个已取消的订单。使用 affiliate_reference_id 检查预订更新,联系客户运营团队并进行必要的进一步调查。
取消400cancel.post_checkin在入住日期后取消。停止入住日期后的在线取消,并联系客户运营团队。
取消404resource_not_found未知的异常情况等待 90 秒,使用 affiliate_reference_id 检查预订更新,联系客户运营团队并进行必要的进一步调查。
取消500cancel.system_failure未知的异常情况等待 90 秒,使用 affiliate_reference_id 检查预订更新,然后再重试,联系客户运营团队并进行必要的进一步调查。
取消500unknown_internal_error未知的异常情况重试并联系客户运营团队。
取消501itinerary_level_cancel_not_supported请求内容不正确。等待 90 秒,使用 affiliate_reference_id 检查预订更新,联系客户运营团队并进行必要的进一步调查。
取消503cancel.system_failure未知的异常情况等待 90 秒,使用 affiliate_reference_id 检查预订更新,然后再重试,联系客户运营团队并进行必要的进一步调查。
取消503service_unavailable未知的异常情况等待 90 秒,使用 affiliate_reference_id 检查预订更新,然后再重试,联系客户运营团队并进行必要的进一步调查。
价格检查200availability.not_found订满建议旅客更换房型或酒店。
价格检查200不适用未知的异常情况重试
价格检查400customer_session_id.required请求内容不正确。调整请求的内容。
价格检查400invalid_input请求内容不正确。调整请求的内容。
价格检查400link.invalid请求内容不正确。调整请求的内容。
价格检查400test.content_invalid请求内容不正确。调整请求的内容。
价格检查409availability.not_found订满建议旅客更换房型或酒店。
价格检查409不适用未知的异常情况重试
价格检查410invalid_input请求内容不正确。调整请求的内容。
价格检查410availability.not_found订满建议旅客更换房型或酒店。
价格检查410不适用未知的异常情况重试
价格检查410checkin.invalid_date_too_far_out尽早预订,以便在未来 500 天内入住。完善对用户输入的本地确认。
价格检查500availability.not_found订满建议旅客更换房型或酒店。
价格检查500unknown_internal_error未知的异常情况重试
价格检查500不适用未知的异常情况重试
价格检查503availability.not_found订满建议旅客更换房型或酒店。
价格检查503service_unavailable未知的异常情况重试
价格检查503不适用未知的异常情况重试
选购200availability.not_found订满或无效的酒店代码。建议旅客更换房型或酒店。
选购400property_id.above_maximum一个请求最多可以包含 250 个住宿编号。调整请求的内容。
选购400currency.not_supported货币代码不受支持。视情况而定
选购400departure.invalid_departure_before_arrival退房日期早于入住日期。完善对用户输入的本地确认。
选购400number_of_adults.invalid_above_maximum每间客房最多可容纳 15 名成人。完善对用户输入的本地确认。
选购400number_of_adults.invalid_below_minimum每间客房最多可容纳 15 名成人。完善对用户输入的本地确认。
选购400number_of_occupancies.invalid_above_maximum每间客房最多可容纳 15 名成人。完善对用户输入的本地确认。
选购400checkin.invalid_date_format请求内容不正确。完善对用户输入的本地确认。
选购400checkin.required请求内容不正确。调整请求的内容。
选购400checkout.invalid_date_format请求内容不正确。调整请求的内容。
选购400checkout.required请求内容不正确。调整请求的内容。
选购400child_age.invalid_age_format请求内容不正确。调整请求的内容。
选购400child_age.invalid_outside_accepted_range请求内容不正确。调整请求的内容。
选购400country_code.above_maximum请求内容不正确。调整请求的内容。
选购400country_code.invalid请求内容不正确。调整请求的内容。
选购400country_code.required请求内容不正确。调整请求的内容。
选购400currency.required请求内容不正确。调整请求的内容。
选购400customer-ip.invalid请求内容不正确。调整请求的内容。
选购400filter.invalid请求内容不正确。调整请求的内容。
选购400include.invalid请求内容不正确。调整请求的内容。
选购400invalid_input请求内容不正确。调整请求的内容。
选购400language.above_maximum请求内容不正确。调整请求的内容。
选购400language.not_supported请求内容不正确。调整请求的内容。
选购400language.required请求内容不正确。调整请求的内容。
选购400link.invalid请求内容不正确。调整请求的内容。
选购400occupancy.required请求内容不正确。调整请求的内容。
选购400platform_name.invalid请求内容不正确。调整请求的内容。
选购400property_id.required请求内容不正确。调整请求的内容。
选购400rate_option.invalid请求内容不正确。调整请求的内容。
选购400rate_plan_count.above_maximum请求内容不正确。调整请求的内容。
选购400rate_plan_count.invalid请求内容不正确。调整请求的内容。
选购400rate_plan_count.required请求内容不正确。调整请求的内容。
选购400sales_channel.above_maximum请求内容不正确。调整请求的内容。
选购400sales_channel.invalid请求内容不正确。调整请求的内容。
选购400sales_channel.required请求内容不正确。调整请求的内容。
选购400sales_environment.above_maximum请求内容不正确。调整请求的内容。
选购400sales_environment.invalid请求内容不正确。调整请求的内容。
选购400sales_environment.required请求内容不正确。调整请求的内容。
选购400sort_type.above_maximum请求内容不正确。调整请求的内容。
选购400sort_type.invalid请求内容不正确。调整请求的内容。
选购400sort_type.required请求内容不正确。调整请求的内容。
选购400test.content_invalid请求内容不正确。调整请求的内容。
选购400arrival.invalid_date_in_the_past入住日期完善对用户输入的本地确认。
选购400checkin.invalid_date_in_the_past入住日期完善对用户输入的本地确认。
选购400checkout.above_maximum入住时间超过 28 天。完善对用户输入的本地确认。
选购400checkout.invalid_length_of_stay_too_long入住时间超过 28 天。完善对用户输入的本地确认。
选购400checkout.invalid_length_of_stay_too_short入住时间超过 28 天。完善对用户输入的本地确认。
选购400departure.invalid_length_of_stay_too_long入住时间超过 28 天。完善对用户输入的本地确认。
选购400departure.invalid_length_of_stay_too_short入住时间超过 28 天。完善对用户输入的本地确认。
选购400checkout.invalid_checkout_before_checkin退房日期早于入住日期。完善对用户输入的本地确认。
选购400property_id.invalid无效的住宿编号调整请求的内容。
选购400arrival.invalid_date_too_far_out尽早预订,以便在未来 500 天内入住。完善对用户输入的本地确认。
选购400checkin.invalid_date_too_far_out尽早预订,以便在未来 500 天内入住。完善对用户输入的本地确认。
选购403filter.conflict请求内容不正确。调整请求的内容。
选购403request_forbidden请求内容不正确。调整请求的内容。
选购404availability.not_found订满或无效的酒店代码。建议旅客更换房型或酒店。
选购500invalid_input请求内容不正确。调整请求的内容。
选购500unknown_internal_error未知的异常情况重试
选购500checkin.invalid_date_too_far_out尽早预订,以便在未来 500 天内入住。完善对用户输入的本地确认。
选购503availability.not_found订满或无效的酒店代码。建议旅客更换房型或酒店。
选购503service_unavailable未知的异常情况重试

处理预订的伪代码

这是使用创建预订 API 和检索预订 API 的步骤中的预订流程示例。它包含有关处理预订和跟进异常情况的建议。

function create_booking(affiliate_reference_id){
  ### make API request to create booking ###
  book_resp = rapid_book_req(affiliate_reference_id, timeout = 90seconds, hold = false)
  ### Retrieve is always required to confirm final status of bookings, to avoid duplicate requests for the last inventory ###
  retrieve_booking(book_resp.retrieve_link, affiliate_reference_id, book_resp.status_code, book_resp.req_timestamp) }

function retrieve_booking(retrieve_link, affiliate_reference_id, book_resp_status_code, rapid_book_req_time) {
  ### display the pending booking message to customers ###
  booking_final_status = "pending"
  ### always use Retrieve link when it returned in booking response ###
   if (retrieve_link == null) {
       retrieve_link = "/rapid_path?XXXXXX&affiliate_reference_id=" + affiliate_reference_id }
       ### confirm the final status of bookings ###
      while (booking_final_status not in ("booked", “canceled”, "manualFollowup", "failed")) 
        ### make API request to retrieve booking ###
      retrieve_resp = retrieve_resquest(retrieve_link) 
      ### a complete Retrieve returns room level Expedia confirmation ID ###
      if (retrieve_resp.rooms.[].confirmation_id is not null) {
          booking_final_status = retrieve_resp.rooms.[].status }
      ### retry Retrieve to monitor booking updates if 90 seconds have not elapsed yet OR system error returned ###
      elseif (currentTime - rapid_book_req_time <= 90seconds) or (retrieve_resp.status_code not in (404, 200)) {
          continue }
      ### retry Retrieve for incomplete booking result or make manual follow-ups after 11 minutes ### 
      elseif (book_resp_status_code in (200, 201, 202, 204)) or (retrieve_resp.itinerary_id is not null) {
          if (currentTime - rapid_book_req_time <= 11minutes) {
            continue } else { booking_final_status = "manualFollowup" } 
      ### retry booking request with the same affiliate reference id value to cover the booking ###
      elseif (booking_retries <= 2) {
          create_booking(affiliate_reference_id) } 
      ### the booking is failed only when the above actions have all been taken ###
      else {
booking_final_status = "failed" }}}

预订错误用户界面示例

例如,某个预订尚未快速解决。

未迅速解决的预订

已确认预订示例

经确认的预订

预订失败示例

预订失败

您觉得这个页面有用吗?
我们该如何改进这些内容?
感谢您帮助我们改进!