You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Amadeus API获取特定航班全舱位座位图数据

问题解决:Amadeus Flight Offer Search 无法返回多舱位数据导致座位图API仅获取经济舱

首先看你代码里的核心问题:
你的originDestinations数组里只有一个id为"1"的行程,但在cabinRestrictions里给BUSINESS舱设置了originDestinationIds: ["2"],这个id不存在,所以这个舱位限制不会生效,自然搜不到商务舱的数据。

修正后的Flight Offer Search请求参数

把两个舱位限制的originDestinationIds都改成["1"]:

$data = [
    "currencyCode" => "USD",
    "originDestinations" => [
        [
            "id" => "1",
            "originLocationCode" => $originLocationCode,
            "destinationLocationCode" => $destinationLocationCode,
            "departureDateTimeRange" => [
                "date" => $departureDate,
                "time" => date('H:i:s', strtotime($departureTime)),
            ]
        ],
    ],
    "travelers" => [
        [
            "id" => "1",
            "travelerType" => "ADULT",
        ],
    ],
    "sources" => [
        "GDS",
    ],
    "searchCriteria" => [
        "flightFilters" => [
            "connectionRestriction" => [
                "maxNumberOfConnections" => 1,
            ],
            "cabinRestrictions" => [
                [
                    "cabin" => "ECONOMY",
                    "originDestinationIds" => ["1"],
                ],
                [
                    "cabin" => "BUSINESS",
                    "originDestinationIds" => ["1"],
                ],
                // 如需头等舱/超级经济舱,添加对应条目,注意枚举值正确性
                [
                    "cabin" => "FIRST",
                    "originDestinationIds" => ["1"],
                ],
                [
                    "cabin" => "PREMIUM_ECONOMY",
                    "originDestinationIds" => ["1"],
                ]
            ],
        ],
    ],
];

额外检查项

  1. 确认Flight Offer Search返回结果包含多舱位offer
    调用Flight Offer Search后,检查返回的data数组里的每个flightOffers条目,查看travelerPricings[0].fareDetailsBySegment[0].cabin字段是否包含不同舱位值。如果搜索结果本身只有经济舱,说明对应航线/日期无其他舱位可用库存,或GDS源未提供该舱位数据。

  2. 座位图API调用需传递所有目标舱位的flightOfferId
    每个flightOffer对应一个舱位,调用Seatmap API时,要把所有需要获取座位图的flightOfferId都传入请求体的flightOffers数组,示例:

    {
      "flightOffers": [
        { "flightOfferId": "offer-id-for-economy" },
        { "flightOfferId": "offer-id-for-business" }
      ]
    }
    
  3. 验证舱位枚举值正确性
    Amadeus API的舱位枚举值需严格匹配官方定义:

    • 经济舱:ECONOMY
    • 超级经济舱:PREMIUM_ECONOMY(注意不是你写的Business_Economy)
    • 商务舱:BUSINESS
    • 头等舱:FIRST

内容的提问来源于stack exchange,提问作者barkii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:52:54