Files
mipu-open/docs/03-02_shopping-select.md
杨柳杰 b450b512a2 init: mipu-open 对外开放项目统一管理仓库
- 添加 mipu-api 作为 git submodule (Claude Code Skill)
- 迁移 API 文档源文件到 docs/ 目录统一维护
- 添加 Gitea Actions 工作流:tag推送自动打包docs并发布Release
- Skill 运行时自动从 mipu-open Release 下载最新文档

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 12:16:08 +08:00

8.1 KiB
Raw Blame History

shopping/select - 验价/确定航班

确定航班shopping/selectAPI 说明文档

用户使用场景

本接口目的是: 验价可满足8秒内响应>95%成功率。 进一步获取免费行李/退改规则信息对于无法再shopping/search获取的航司场景

错误场景(不应该使用本接口的场景)

如航司在点选行程后占位,本接口需谨慎使用,防止航司侧异常。

性能指标

  • 响应速度95%的请求<8秒。
  • 请求频率QPS根据你的商务合同确定
  • 接口成功率:>95%

请求说明

请求地址 https://${endpoint}/shopping/select
请求方法 POST
注意事项 Header必须带压缩请求。

请求参数

Header

参数名称 类型 是否必选 示例值 说明
Content-Type String application/json 固定值,指定请求体格式为 JSON
Accept-Encoding String gzip, deflate, br 必须要填写,否则服务器会拒绝。
client-key String xxxxx 联系我们获取生产环境key
client-secret String xxxxx 联系我们获取生产环境secret

请求体

{
  "sessionId": "66d807b0-abbc-4b57-aeff-bbf4fc29fb75",
  "journeyType": "OW",
  "origin": "MIL",
  "destination": "CAG",
  "departureDate": "20251118",
  "adults": 1,
  "children": 0,
  "infants": 0,
  "agent": "u2web", 
  "proxy": "myproxy-us",
  "outboundFareFamily": "promo",
  "inboundFareFamily": "",
  "outboundSegments": [
    {
      "carrier": "SL",
      "originAirport": "PHS",
      "destinationAirport": "DMK",
      "flightNumber": "SL557",
      "departureDate": "20251119"
    }
  ],
  "inboundSegments": [
  ]
}
参数名称 类型 是否必选 示例值(默认值) 说明
sessionId String 66d807b0-abbc-4b57-aeff-bbf4fc29fb75 目的是为了复用前一步的shopping/search的session提升速度&成功率。如带入session请务必保障1. 出发到达/旅行日期/人数与前一步保持一致。
journeyType String "OW" 行程为单程还是往返程OW单程OneWayRT往返RoundTrip
origin String "CJJ" 出发地为IATA 3字码兼容城市或者机场3字码
destination String "SHA" 到达地为IATA3字码兼容城市或者机场3字码
departureDate String 20240326 出发日期,格式为 YYYYMMDD(如 2024 年 5 月 1 日为 20240501
returnDate String 20240423仅 RT 必填) 返程日期,格式同 departureDate仅当 journeyType=RT 时必传OW 时可传空
adults Integer 2 成人,乘机人数量
children Integer 1 儿童,乘机人数量
infants Integer 0 婴儿,乘机人数量
outboundSegments Array 去程航段信息,详见 FlightSegmentRequest
inboundSegments Array 返程航段信息往返行程为必须,详见 FlightSegmentRequest
outboundFareFamily String 去程FareFamily的名字
inboundFareFamily String 回程FareFamily的名字仅往返程有值
agent String "u2web" 你自行定义的执行器编码Agent Code
proxy String 本次获取航司数据采用的代理方式。如果需要指定代理国家请在代理用户后面加上国家二字码。如myproxy-USUS代表美国
acceptCacheMinutes Integer 5 默认值5**如无特殊情况,本参数不建议设置或调整。**为了避免频繁请求航司设置的缓存用户可以指定缓存时长不填写为5。
async Boolean false 是否启用 Webhook 异步模式。
- false: 同步模式,等待完整结果返回
- true: 异步模式,立即返回 202结果通过 Webhook 回调

异步模式说明
1. 系统会同步检查是否有新鲜缓存acceptCacheMinutes如有则立即返回
2. 无缓存时返回 202 Accepted包含 requestId 用于追踪
3. 航司数据返回后,通过预先配置的 Webhook 回调通知

注意:使用异步模式需提前配置 shopping_response 类型的 Webhook
callbackId String - 异步模式下的业务回调标识,用于客户自行匹配业务。建议格式:select_{origin}_{destination}_{departureDate}_{adults}-{children}-{infants}_{flightNumber},最大 50 个字符

返回参数

探索一个返回参数json同shopping/searchhttps://jsonhero.io/j/XmTLWK94Ae5X

参数名称 类型 示例值 说明
itineraries Array - 航线组合列表,包含不同航班拼接的行程方案
baggageList
code Integer 0 系统状态码0 = 成功,非 0 为失败
msg String null 系统消息:成功时为 null失败时返回具体系统提示信息
sessionId String 66d807b0-abbc-4b57-aeff-bbf4fc29fb75 UUID: 与航司通信的session值可以用于加速后续动作如继续获取包裹选座下单。

异步模式响应async=true

async=true 且无可用缓存时,系统立即返回 202 Accepted

参数名称 类型 说明
code Integer 202表示请求已接受正在处理中
msg String "Accepted. Please wait for the webhook callback"
requestId String 请求IDUUID用于追踪和关联 Webhook 回调
status String "PROCESSING"(处理中)

完整结果将通过预先配置的 Webhook 回调返回。

响应实体介绍

响应示例

{
  "code": 0,
  "msg": null,
  "sessionId": "66d807b0-abbc-4b57-aeff-bbf4fc29fb75",
  "itineraries": [
    {
      "outboundSegments": [
        {
          "index": 1,
          "carrier": "SL",
          "flightNumber": "SL557",
          "operatingCarrier": "",
          "operatingFlightnumber": "",
          "originAirport": "PHS",
          "destinationAirport": "DMK",
          "departureTime": "202511190800",
          "arrivalTime": "202511191130",
          "departureTerminal": "",
          "arrivalTerminal": "",
          "stopCities": "",
          "duration": 210,
          "aircraftCode": "320",
          "codeShare": false
        }
      ],
      "inboundSegments": [],
      "fares": [
        {
          "fareBasis": "",
          "rtnFareBasis": "",
          "fareFamily": "promo",
          "rtnFareFamily": "",
          "currency": "USD",
          "adultFare": 80.00,
          "adultTax": 30.00,
          "bookingCode": "Y",
          "availableSeats": 9,
          "flightPolicy": {
            "airlineCode": "SL",
            "fareFamilyType": "promo",
            "freeAncillaryList": [
              { "categoryCode": "CabinBaggageOverheadLocker", "segmentIndex": 1, "paxType": "ADT", "piece": 1, "weight": 7, "size": "" },
              { "categoryCode": "StandardCheckedBaggage", "segmentIndex": 1, "paxType": "ADT", "piece": 0, "weight": 0 }
            ]
          }
        }
      ]
    }
  ],
  "baggageList": []
}

提示itineraries 数组中的每个元素是一个完整的行程方案,详见 Itinerary 实体定义

常见问题

航司不稳定的时候,如何保障成功率>95%

我们支持多个通过proxy入参实现并发请求。

案例1竖线分隔随机挑选

proxy= myproxy-us|myproxy-uk

行为随机从myproxy-us中挑选一个

案例2加号分隔

proxy= myproxy-us+myproxy-uk

行为:启动两个进程对数据源(航司)做并发访问,确保成功率。

案例3组合

proxy= myproxy1-us|myproxy2-au+myproxy1-uk|myproxy2-de

行为随机挑选myproxy1|myproxy2的代理并启动两个进程对数据源做并发访问。

如果航司侧响应大于8秒这个请求会被抛弃吗

不会为了兼容异常场景该接口我们最大等待航司响应的时长为15秒。