2016-12-04 2 views
0

Я получаю следующее сообщение об ошибкеSaber - отель наличие API - Ошибка

<faultcode>soap-env:Client.InvalidSecurityToken</faultcode><faultstring>Invalid or Expired binary security token: null</faultstring><detail><StackTrace>com.sabre.universalservices.base.security.AuthenticationException: errors.session.USG_INVALID_SECURITY_TOKEN</StackTrace></detail></soap-env:Fault></soap-env:Body></soap-env:Envelope> 

Ниже мой запрос на отели наличие API.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header> 
     <eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" SOAP-ENV:mustUnderstand="0"> 
      <eb:From> 
       <eb:PartyId eb:type="urn:x12.org:IO5:01">client</eb:PartyId> 
      </eb:From> 
      <eb:To> 
       <eb:PartyId eb:type="urn:x12.org:IO5:01">ws</eb:PartyId> 
      </eb:To> 
      <eb:CPAId>'.$pcc.'</eb:CPAId> 
      <eb:ConversationId>YourConversationId</eb:ConversationId> 
      <eb:Service eb:type="sabreXML"></eb:Service> 
      <eb:Action>OTA_HotelAvailLLSRQ</eb:Action> 
     </eb:MessageHeader> 
     <Security xmlns:ns6="http://schemas.xmlsoap.org/ws/2002/12/secext" SOAP-ENV:mustUnderstand="0"> 
      <BinarySecurityToken>'.$sabreKey.'</BinarySecurityToken> 
     </Security> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <eb:OTA_HotelAvailRQ xmlns:eb="http://webservices.sabre.com/sabreXML/2003/07" TimeStamp="2011-01-26T12:30:00-06:00" Version="1.10.1"> 
      <eb:POS> 
       <eb:Source PseudoCityCode="'.$pcc.'" /></eb:POS> 
      <eb:AvailRequestSegments> 
       <eb:AvailRequestSegment> 
        <eb:StayDateRange Start="12-10" End="12-15" /> 
        <eb:RoomStayCandidates> 
         <eb:RoomStayCandidate> 
          <eb:GuestCounts> 
           <eb:GuestCount Count="1" /></eb:GuestCounts> 
         </eb:RoomStayCandidate> 
        </eb:RoomStayCandidates> 
        <eb:HotelSearchCriteria xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="eb:HotelSearchCriteria_type0"> 
         <eb:Criterion> 
          <eb:HotelRef HotelCityCode="DFW" /></eb:Criterion> 
        </eb:HotelSearchCriteria> 
       </eb:AvailRequestSegment> 
      </eb:AvailRequestSegments> 
     </eb:OTA_HotelAvailRQ> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

Это то, что я сделал, прежде чем обращаться в API доступности отеля. Я получил свой wsse: BinarySecurityToken из SessionCreateRQ хранит переменную, содержащую токен.

<BinarySecurityToken>'.$sabreKey.'</BinarySecurityToken>                    

Почему я получаю это сообщение об ошибке, мои учетные данные верны. BTW У меня есть производственные учетные данные.

Спасибо Я с нетерпением ждет некоторой помощи

ответ

0

Если вы уверены, что маркер безопасности является правильным, вы могли бы работать на неверной среду. Например, если вы создали сеанс на PROD, но отправили следующий запрос в CERT, эта ошибка будет возвращена.

Убедитесь, что оба запроса отправляются на одну и ту же конечную точку. Если проблема не устранена, обратитесь в службу поддержки.

+0

Спасибо за ответ. Бруно. Оба запроса отправляются на одну и ту же конечную точку. Я понял, в чем проблема, не так ли. Я отправлю решение через пару минут, так как я уверен, что мое решение поможет многим людям, которые столкнутся с одной и той же проблемой в будущем. –

0

Проблема решена. Вот какова была проблема с документацией Sabre, которая, как сказано, включает следующие теги в запросе.

<eb:Security xmlns:ns6="http://schemas.xmlsoap.org/ws/2002/12/secext" SOAP-ENV:mustUnderstand="0"> 
     <eb:BinarySecurityToken>'.$sabreKey.'</eb:BinarySecurityToken> 
    </eb:Security> 

Но это привело к ошибке.

Итак, я попытался удалить пространство имен eb и мои теги, где следующее.

<Security xmlns:ns6="http://schemas.xmlsoap.org/ws/2002/12/secext" SOAP-ENV:mustUnderstand="0"> 
     <BinarySecurityToken>'.$sabreKey.'</BinarySecurityToken> 
    </Security> 

Если вы посмотрите на запрос xml в моих результатах. Вы поймете, что это не сработало. Затем я попытался снова изменить теги и заставить его работать.

Теги, которые я использую сейчас, где нет в документации, которую я читал. Это то, что меня смутило. Используя следующие теги, я получил запрос на работу.

<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext"> 
<wsse:BinarySecurityToken valueType="String"  EncodingType="wsse:Base64Binary">'.$sabreKey.'</wsse:BinarySecurityToken> 
</wsse:Security> 

Я уверен, что это поможет многим людям, поскольку документация была испорчена, когда дело дошло до этого конкретного тега.

Смежные вопросы