SABRE Create PNR接口问题:生成PNR与所选航班不符
SABRE Create PNR API 航班价格不符问题排查与参数补充
问题背景
集成SABRE Create PNR Rest API生产环境冒烟测试时,创建的PNR在SABRE黑屏系统中显示为最高价航班,但我方门户实际选择的是最低价航班。已在请求体中添加Fare Basis Code,问题仍未解决。
当前请求体
{ "CreatePassengerNameRecordRQ": { "version": "2.4.0", "targetCity": "targetCity-here", "TravelItineraryAddInfo": { "AgencyInfo": { "Ticketing": { "TicketType": "7TAW" } }, "CustomerInfo": { "ContactNumbers": { "ContactNumber": [ { "NameNumber": "1", "Phone": "0799888889", "PhoneUseType": "B" } ] }, "PersonName": [ { "NameNumber": "1", "GivenName": "Husni", "PassengerType": "ADT", "Surname": "Zakarya" } ] } }, "AirBook": { "OriginDestinationInformation": { "FlightSegment": [ { "ArrivalDateTime": "2024-03-14T12:55:00", "DepartureDateTime": "2024-03-14T12:55:00", "FlightNumber": "610", "NumberInParty": "1", "ResBookDesigCode": "Y", "Status": "NN", "DestinationLocation": { "LocationCode": "DXB" }, "OriginLocation": { "LocationCode": "AMM" }, "MarketingAirline": { "Code": "RJ", "FlightNumber": "610" } }, { "ArrivalDateTime": "2024-03-21T16:15:00", "DepartureDateTime": "2024-03-21T16:15:00", "FlightNumber": "611", "NumberInParty": "1", "ResBookDesigCode": "Y", "Status": "NN", "DestinationLocation": { "LocationCode": "AMM" }, "OriginLocation": { "LocationCode": "DXB" }, "MarketingAirline": { "Code": "RJ", "FlightNumber": "611" } } ] }, "RedisplayReservation": { "NumAttempts": 10, "WaitInterval": 300 } }, "PostProcessing": { "EndTransaction": { "Source": { "ReceivedFrom": "11111111111111111" } } }, "AirPrice": [ { "PriceRequestInformation": { "Retain": true, "OptionalQualifiers": { "FOP_Qualifiers": { "BasicFOP": { "Type": "CK" } }, "PricingQualifiers": { "PassengerType": [ { "Code": "ADT", "Quantity": "1" } ], "CommandPricing": [ { "FareBasis": { "Code": "QANJOP" } } ] } } } } ], "SpecialReqDetails": { "SpecialService": { "SpecialServiceInfo": { "AdvancePassenger": [ { "Document": { "IssueCountry": "JO", "ExpirationDate": "2026-10-20", "Number": "P106022222", "Type": "P" }, "PersonName": { "GivenName": "Husni", "Surname": "Zakarya", "DateOfBirth": "1975-05-02" } } ] } } } } }
问题分析与参数补充方案
核心问题点
- 舱位代码不匹配:请求中
AirBook.FlightSegment.ResBookDesigCode使用的是Y(全价经济舱),但指定的Fare Basis CodeQANJOP对应Q舱(低价舱位),系统会优先按预订的舱位定价,导致最高价。 - 未锁定低价规则:仅添加Fare Basis Code不足以强制系统使用低价,需补充票价锁定参数。
- 起降时间异常:DepartureDateTime与ArrivalDateTime完全相同,可能导致系统解析异常,影响定价逻辑。
需添加/修改的参数
- 修改舱位代码:将两个FlightSegment的
ResBookDesigCode从Y改为Q,匹配Fare Basis Code对应的低价舱位。 - 添加票价锁定参数:在
AirPrice.PriceRequestInformation.OptionalQualifiers.PricingQualifiers下添加FareQualifiers节点,明确锁定票价规则:
其中"FareQualifiers": { "FareBasis": { "Code": "QANJOP", "ResBookDesigCode": "Q" }, "PricingMethod": "N" }PricingMethod: "N"表示按指定票价计算,避免系统重新定价选择高价。 - 修正起降时间:调整FlightSegment的DepartureDateTime为实际起飞时间,比如去程改为
2024-03-14T10:55:00,保持ArrivalDateTime为2024-03-14T12:55:00,返程同理修正时间差。 - (可选)添加报价ID锁定:如果之前通过SABRE询价接口获取了
PriceQuoteID,可在AirPrice.PriceRequestInformation下添加PriceQuoteInfo节点,确保使用已确认的低价报价:"PriceQuoteInfo": { "PriceQuoteID": "your-price-quote-id" }
修改后的关键部分示例
AirBook修改后片段
"AirBook": { "OriginDestinationInformation": { "FlightSegment": [ { "ArrivalDateTime": "2024-03-14T12:55:00", "DepartureDateTime": "2024-03-14T10:55:00", "FlightNumber": "610", "NumberInParty": "1", "ResBookDesigCode": "Q", "Status": "NN", "DestinationLocation": { "LocationCode": "DXB" }, "OriginLocation": { "LocationCode": "AMM" }, "MarketingAirline": { "Code": "RJ", "FlightNumber": "610" } }, // 返程航班同理修改ResBookDesigCode和时间 ] } }
AirPrice修改后片段
"AirPrice": [ { "PriceRequestInformation": { "Retain": true, "PriceQuoteInfo": { "PriceQuoteID": "your-price-quote-id" }, "OptionalQualifiers": { "FOP_Qualifiers": { "BasicFOP": { "Type": "CK" } }, "PricingQualifiers": { "PassengerType": [ { "Code": "ADT", "Quantity": "1" } ], "CommandPricing": [ { "FareBasis": { "Code": "QANJOP" } } ], "FareQualifiers": { "FareBasis": { "Code": "QANJOP", "ResBookDesigCode": "Q" }, "PricingMethod": "N" } } } } } ]
内容的提问来源于stack exchange,提问作者Omar.M
相关产品推荐
相关产品推荐

