0

我对 sabre 上的 OTA_AirBook 的肥皂请求有问题,我可以使用 SessionRequestRQ 来获取二进制安全码。

这是我的要求

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Header>
    <eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:version="2.0">
      <eb:From>
        <eb:PartyId type="urn:x12.org:IO5:01">webservices.sabre.com</eb:PartyId>
      </eb:From>
      <eb:To>
        <eb:PartyId type="urn:x12.org:IO5:01">DEFAULT</eb:PartyId>
      </eb:To>
      <eb:CPAId>XXXX</eb:CPAId>
      <eb:ConversationId>possetrips-1438312976</eb:ConversationId>
      <eb:Service eb:type="OTA">OTA_AirBookLLSRQ</eb:Service>
      <eb:Action>OTA_AirBookLLSRQ</eb:Action>
      <eb:MessageData>
        <eb:MessageId>mid:20150731-105346@DEFAULT</eb:MessageId>
        <eb:Timestamp>2015-07-31T03:54:00</eb:Timestamp>
      </eb:MessageData>
    </eb:MessageHeader>
    <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/12/utility">
      <wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">Shared/IDL:IceSess\\/SessMgr:1\\.0.IDL/Common/!ICESMS\\/ACPCRTC!ICESMSLB\\/CRT.LB!-3507395987210104192!32122!0</wsse:BinarySecurityToken>
    </wsse:Security>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_AirBookRQ Version="2.0.0" xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <OriginDestinationInformation>
        <FlightSegment DepartureDateTime="2015-08-10T06:00:00" FlightNumber="1887" NumberInParty="1" Status="NN" ResBookDesigCode="W">
          <DestinationLocation LocationCode="JFK"/>
          <MarketingAirline Code="B6" FlightNumber="1184"/>
          <OriginLocation LocationCode="MCO"/>
        </FlightSegment>
      </OriginDestinationInformation>
    </OTA_AirBookRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

这个请求的响应是

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header>
    <eb:MessageHeader eb:version="1.0" soap-env:mustUnderstand="1" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader">
      <eb:From>
        <eb:PartyId eb:type="URI">DEFAULT</eb:PartyId>
      </eb:From>
      <eb:To>
        <eb:PartyId eb:type="URI">webservices.sabre.com</eb:PartyId>
      </eb:To>
      <eb:CPAId>XXXX</eb:CPAId>
      <eb:ConversationId>possetrips-1438312976</eb:ConversationId>
      <eb:Service eb:type="OTA">OTA_AirBookLLSRQ</eb:Service>
      <eb:Action>OTA_AirBookLLSRS</eb:Action>
      <eb:MessageData>
        <eb:MessageId>c1b7737a-e817-4c33-b418-f4b8a605f2cd@176</eb:MessageId>
        <eb:Timestamp>2015-07-31T03:54:41</eb:Timestamp>
        <eb:RefToMessageId>mid:20150731-105346@DEFAULT</eb:RefToMessageId>
      </eb:MessageData>
    </eb:MessageHeader>
    <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
      <wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/ACPCRTC!ICESMSLB\/CRT.LB!-3507395987210104192!32122!0</wsse:BinarySecurityToken>
    </wsse:Security>
  </soap-env:Header>
  <soap-env:Body>
    <OTA_AirBookRS Version="2.0.0" xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stl="http://services.sabre.com/STL/v01">
      <stl:ApplicationResults status="NotProcessed">
        <stl:Error type="BusinessLogic" timeStamp="2015-07-30T22:54:41-05:00">
          <stl:SystemSpecificResults>
            <stl:Message code="0100">INVALID BOARD POINT</stl:Message>
            <stl:ShortText>ERR.SWS.HOST.ERROR_IN_RESPONSE</stl:ShortText>
          </stl:SystemSpecificResults>
        </stl:Error>
      </stl:ApplicationResults>
    </OTA_AirBookRS>
  </soap-env:Body>
</soap-env:Envelope>

我的请求做错了吗?或者我错过了一些配置?

我使用https://sws3-crt.cert.sabre.com作为端点

4

5 回答 5

0

尝试在“ DepartureDateTime ”之后的FlightSegment中添加“ ArrivalDateTime ”,这可能对您有用。

于 2016-09-01T10:44:48.003 回答
0

我希望您也必须运行 OTA_AIRPrice 服务。因为在 OTA 中,在运行预订服务之前必须为行程定价。

最好运行enhancedairbook服务,它结合了机票价格和机票预订。这也将节省您访问 Web 服务的成本。

于 2015-10-20T11:30:05.880 回答
0

我今天在使用运营航空公司和营销航空公司不同的航段调用增强型航空预订时遇到了这个错误。我花了一段时间才弄清楚发生了什么。

我的问题是,在讨价还价的最大响应中,我总是从 OperatingAirline 元素中提取航班号。但是,您传递到增强型航空预订的航班号需要是 FlightSegment 元素中的属性中的 FlightNumber。

于 2019-09-12T16:46:36.123 回答
0

当登机点无效,或者没有为多次停靠的航班指示登机点时,会发生此响应。您的请求似乎还有多个不同的航班号。是否有不同的营销和运营航班号。检查...

于 2015-08-01T22:51:44.660 回答
0

我会在此处删除航班号以避免不明确的登机点:

MarketingAirline Code="B6" FlightNumber="1184"
于 2015-09-09T23:49:42.190 回答