> For the complete documentation index, see [llms.txt](https://resources.atriptech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://resources.atriptech.com/api-wen-dang/product-guides/booking/booking-overview/identifiers.md).

# 标识符

{% hint style="info" %}
💬 **需要帮助？** 如果遇到问题，请在帮助中心咨询 Eva，快速获取诊断建议。

<a href="https://www.atriptech.com/" class="button primary" data-icon="comments">咨询 Eva</a>
{% endhint %}

当您需要在正确阶段保留正确的 Atlas API 标识符时，使用此页面。

当您需要以下内容时从这里开始：

* 了解每个 API 返回哪个标识符
* 了解每个标识符的有效期
* 了解下游 API 接下来使用哪个标识符
* 避免使用过期的标识符重试

### 常见问题

#### 在 `search.do` 后应保留哪个标识符？

保留 `routingIdentifier`。

在标准搜索流程中，将其用于 `verify.do`。

#### 在 `verify.do` 后应保留哪个标识符？

保留 `sessionId`。

在标准预订流程中，将其用于 `order.do` 和 `seatAvailability.do`。

#### 在 `getOffers.do` 后应保留哪个标识符？

保留 `OfferId`。

在获取报价流程中，将其用于 `order.do`。

在该流程中，将同一 `OfferId` 用于 `seatAvailability.do`。

#### 在 `getOfferPrice.do` 后应保留哪个标识符？

保留 `OfferId`。

在履约流程中，将其用于 `order.do`。

在该流程中，将同一 `OfferId` 用于附加服务查询。

在 `order.do` 后，保留 `orderNo` 作为主要操作标识符。

将 `orderNo` 用于支付、订单查询和出票跟进。

#### 每个标识符的有效期是多久？

`routingIdentifier` 在 `search.do` 后最长有效 6 小时。

`sessionId` 在 `verify.do` 后最长有效 2 小时。

`OfferId` 应视为短期的预订上下文。

当预订关键输入发生变化或预订延迟时，刷新它。

来自 `getOfferPrice.do` 的 `OfferId` 也是短期的。

立即使用它，因为履约流程是为快速支付和出票而设计的。

### 主要标识符

#### `routingIdentifier`

**它是什么**

由 `search.do` 返回的航线令牌。

**用途**

用于 `verify.do`。

**有效期**

搜索后最长 6 小时。

**不用于**

不用于 `order.do`。

**典型失败**

`202` 通常表示 `routingIdentifier` 已过期。

#### `sessionId`

**它是什么**

由 `verify.do` 返回的验证上下文。

**用途**

在标准流程中用于 `order.do`。

在标准流程中用于 `seatAvailability.do`。

**有效期**

验证后最长 2 小时。

**不用于**

超时后不再重用。

不在无关的预订间使用。

**典型失败**

`301` 通常表示 `sessionId` 已过期。

#### `OfferId`

**它是什么**

由 `getOffers.do` 返回的报价令牌。

**用途**

在获取报价流程中用于 `order.do`。

在获取报价流程中用于 `seatAvailability.do`。

**有效期**

视为短期，当预订上下文发生变化时刷新。

**不用于**

不要假设它在长时间延迟或行程变更后仍然有效。

**典型失败**

如果订单创建因运价或库存变化而失败，刷新报价并从最新的 `OfferId` 重新构建。

#### 来自 `getOfferPrice.do` 的 `OfferId`

**它是什么**

由 `getOfferPrice.do` 返回的短期报价上下文。

**用途**

在履约流程中用于 `order.do`。

在需要时，在 `order.do` 前用于附加服务查询。

然后切换到 `orderNo` 用于支付和跟进。

**有效期**

视为即时使用的上下文。

不要为延迟的预订决策保留它。

**不用于**

不要将其视为长期有效的搜索标识符。

在履约窗口已过时不要重用。

#### `orderNo`

**它是什么**

订单创建后返回的 Atlas 订单标识符。

**用途**

用于 `pay.do`、订单查询、支付跟进和预订后流程。

**有效期**

在整个订单生命周期中保留。

**不用于**

不要将其用作搜索或验证标识符的替代。

#### `retryAfter`

**它是什么**

与 `HTTP 429 Too Many Requests` 一起返回的等待时间。

**用途**

用于决定重试前等待多长时间。

**有效期**

适用于当前速率限制事件。

**不用于**

不要忽略它并立即重试。

### 下一个使用哪个标识符？

#### 标准搜索流程

1. `search.do` 返回 `routingIdentifier`
2. `verify.do` 返回 `sessionId`
3. `order.do` 返回 `orderNo`
4. `queryOrderDetails.do` 返回航司 PNR 和机票数据

#### 获取报价流程

1. `getOffers.do` 返回 `OfferId`
2. `order.do` 返回 `orderNo`
3. `queryOrderDetails.do` 返回航司 PNR 和机票数据

#### 履约流程

1. `getOfferPrice.do` 返回 `OfferId`
2. `order.do` 返回 `orderNo`
3. `pay.do` 使用 `orderNo`
4. `queryOrderDetails.do` 返回航司 PNR 和机票数据

### 新鲜标识符规则

在以下条件适用时，从流程中较早步骤开始：

* `202` — 再次运行 `search.do` 并获取新的 `routingIdentifier`
* `301` — 再次运行 `verify.do` 并获取新的 `sessionId`
* `308` 或获取报价后的库存漂移 — 再次运行 `getOffers.do` 并获取新的 `OfferId`

### 最佳实践

将返回的标识符与以下信息一起存储：

* 请求时间
* 行程摘要
* 旅客组合
* 当前流程类型
* 当您的集成跟踪时，履约流程标记

这使得过期和重试决策更容易。

### 相关页面

* [预订概述](/api-wen-dang/product-guides/booking/booking-overview.md)
* [搜索](/api-wen-dang/product-guides/booking/booking-step-guides/search.md)
* [获取报价](/api-wen-dang/product-guides/booking/booking-step-guides/get-offer.md)
* [履约 API](/api-wen-dang/product-guides/booking/booking-step-guides/get-offer-price.md)
* [获取报价 vs 履约 API](/api-wen-dang/product-guides/booking/booking-overview/booking-decisions/get-offer-vs-get-offer-price.md)
* [验证](/api-wen-dang/product-guides/booking/booking-step-guides/verify.md)
* [创建订单](/api-wen-dang/product-guides/booking/booking-step-guides/create-order.md)
* [获取报价价格](/api-wen-dang/api-reference/booking-apis/get-offer-price.md)
* [错误代码](/api-wen-dang/support-and-reference/troubleshooting-and-support/errors-handing.md)
