I am trying to generate PNR. For this purpose I used “EnhancedAirBookRQ” for Air Book “OTA_AirBookRQ” and “OTA_AirPriceRQ” for Price.
The work flow is given below.
(1) I used “BargainFinderMaxRQ” for search
(2) Then I used “EnhancedAirBookRQ” for Air book and Price Iternary.
(3) Then I used “PassengerDetailsRQ” to input passenger details
(4) Last I want to end transaction.
I tried so many things but did not able to finish it successfully. What necessary fields I am missing in “EnhancedAirBookRQ” to book and price and how to continue to “PassengerDetailsRQ”.
//Request “EnhancedAirBookRQ”
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header>
<m:MessageHeader xmlns:m="http://www.ebxml.org/namespaces/messageHeader">
<m:From>
<m:PartyId type="urn:x12.org:IO5:01">malikexpress.com</m:PartyId>
</m:From>
<m:To>
<m:PartyId type="urn:x12.org:IO5:01">http://webservices.sabre.com/sabreXML/2011/10</m:PartyId>
</m:To>
<m:CPAId>XF08</m:CPAId>
<m:ConversationId>SWS-Test-Tool-CID</m:ConversationId>
<m:Service m:type="OTA">Air Shopping Service</m:Service>
<m:Action>EnhancedAirBookRQ</m:Action>
<m:MessageData>
<m:MessageId>mid:20001209-136453-2333@clientofsabre.com</m:MessageId>
<m:Timestamp>2016-02-08T06:10:06Z</m:Timestamp>
<m:TimeToLive>2016-02-08T06:10:06Z</m:TimeToLive>
</m:MessageData>
<m:DuplicateElimination />
<m:Description>Passenger Details</m:Description>
</m: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\/ACPCRTD!ICESMSLB\/CRT.LB!-3439407437566183902!431259!0</wsse:BinarySecurityToken>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<EnhancedAirBookRQ xmlns="http://services.sabre.com/sp/eab/v3_2" version="3.2.0" IgnoreOnError="false" HaltOnError="false">
<OTA_AirBookRQ>
<HaltOnStatus Code="UC" />
<HaltOnStatus Code="LL" />
<HaltOnStatus Code="UL" />
<HaltOnStatus Code="UN" />
<HaltOnStatus Code="NO" />
<HaltOnStatus Code="HL" />
<OriginDestinationInformation>
<FlightSegment DepartureDateTime="2016-06-06T01:40:00" ArrivalDateTime="2016-06-07T06:00:00" FlightNumber="7731" NumberInParty="1" ResBookDesigCode="Y" Status="NN">
<DestinationLocation LocationCode="TPE" />
<MarketingAirline Code="DL" FlightNumber="3" />
<OperatingAirline Code="Dl" />
<OriginLocation LocationCode="SFO" />
</FlightSegment>
</OriginDestinationInformation>
</OTA_AirBookRQ>
<OTA_AirPriceRQ>
<PriceComparison AmountSpecified="787.00" />
<PriceRequestInformation FutureTicket="true" Retain="true">
<OptionalQualifiers></OptionalQualifiers>
</PriceRequestInformation>
</OTA_AirPriceRQ>
<PostProcessing IgnoreAfter="false">
<RedisplayReservation WaitInterval="2000" />
</PostProcessing>
<PreProcessing IgnoreBefore="true" />
</EnhancedAirBookRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
//Response “EnhancedAirBookRS”
<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" eb:version="1.0" soap-env:mustUnderstand="1">
<eb:From>
<eb:PartyId eb:type="URI">http://webservices.sabre.com/sabreXML/2011/10</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">malikexpress.com</eb:PartyId>
</eb:To>
<eb:CPAId>DF08</eb:CPAId>
<eb:ConversationId>SWS-Test-Tool-CID</eb:ConversationId>
<eb:Service eb:type="OTA">Air Shopping Service</eb:Service>
<eb:Action>EnhancedAirBookRS</eb:Action>
<eb:MessageData>
<eb:MessageId>566216237794571760</eb:MessageId>
<eb:Timestamp>2016-02-08T06:36:22</eb:Timestamp>
<eb:RefToMessageId>mid:20001209-136453-2333@clientofsabre.com</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\/ACPCRTD!ICESMSLB\/CRT.LB!-3439407437566183902!431259!0</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<EnhancedAirBookRS xmlns="http://services.sabre.com/sp/eab/v3_2">
<ns2:ApplicationResults xmlns:ns2="http://services.sabre.com/STL_Payload/v02_01" status="Complete">
<ns2:Success timeStamp="2016-02-08T00:36:22.412-06:00" />
<ns2:Warning type="BusinessLogic" timeStamp="2016-02-08T00:36:20.139-06:00">
<ns2:SystemSpecificResults>
<ns2:Message code="WARN.SWS.HOST.ERROR_IN_RESPONSE">CODE - UC SEG STATUS NOT ALLOWED</ns2:Message>
<ns2:Message code="0003">CODE - UC SEG STATUS NOT ALLOWED</ns2:Message>
</ns2:SystemSpecificResults>
</ns2:Warning>
</ns2:ApplicationResults>
<OTA_AirBookRS>
<OriginDestinationOption>
<FlightSegment ArrivalDateTime="06-07T06:00" DepartureDateTime="06-06T01:40" FlightNumber="7731" NumberInParty="001" ResBookDesigCode="Y" Status="NN" eTicket="true">
<DestinationLocation LocationCode="TPE" />
<MarketingAirline Code="DL" FlightNumber="7731" />
<OriginLocation LocationCode="SFO" />
</FlightSegment>
</OriginDestinationOption>
</OTA_AirBookRS>
<TravelItineraryReadRS>
<TravelItinerary>
<CustomerInfo />
<ItineraryInfo>
<ReservationItems>
<Item RPH="1">
<FlightSegment AirMilesFlown="6469" ArrivalDateTime="06-07T06:00" DayOfWeekInd="1" DepartureDateTime="2016-06-06T01:40" ElapsedTime="13.20" FlightNumber="7731" NumberInParty="01" ResBookDesigCode="Y" SegmentNumber="0001" SmokingAllowed="false" SpecialMeal="false" Status="UC" StopQuantity="00" eTicket="false">
<DestinationLocation LocationCode="TPE" Terminal="TERMINAL 2" TerminalCode="2" />
<Equipment AirEquipType="77W" />
<MarketingAirline Code="DL" FlightNumber="7731" />
<Meal Code="B" />
<OperatingAirline Code="CI" CompanyShortName="CHINA AIRLINES" />
<OriginLocation LocationCode="SFO" Terminal="INTERNATIONAL TERMINAL" TerminalCode="I" />
<SupplierRef ID="DCDL" />
<Text>OPERATED BY CHINA AIRLINES</Text>
<UpdatedArrivalTime>06-07T06:00</UpdatedArrivalTime>
<UpdatedDepartureTime>06-06T01:40</UpdatedDepartureTime>
</FlightSegment>
</Item>
</ReservationItems>
</ItineraryInfo>
<ItineraryRef AirExtras="false" InhibitCode="U" PartitionID="AA" PrimeHostID="1B">
<Header>CURRENTLY DISPLAYING A PNR OWNED BY THE SABRE PRIME HOST</Header>
<Header>RULES AND FUNCTIONALITY FOR THAT PRIME HOST WILL APPLY</Header>
<Source PseudoCityCode="XF08" />
</ItineraryRef>
</TravelItinerary>
</TravelItineraryReadRS>
</EnhancedAirBookRS>
</soap-env:Body>
</soap-env:Envelope>
UC status means seats are UN-CONFIRMED. UC flight segment flights are not allowed to be booked.
You can EndTransaction in PostProcessing element itself in PassengerDetailsRQ which will return you PNR in response ItineraryRef element with ID attribute.
Please Note: TravelItineraryAddInfoRQ + TravelItineraryReadRQ + EndTransaction can be summarized in single step by calling PassengerDetailsRQ
It would be good to know what is the error you get in the EndTransaction, plus, you have an EndTransaction in the PassengerDetails (inside the PostProcessing element).
There are 5 basic things that you will need to have in any PNR:
Phone number
Received From
Itinerary
Name
Ticketing Time Limit
I recommend you to check on this FormatFinder link in order to learn more about PNRs, like the information above.
Anyway, it might be unrelated, but in the EnhancedAirBook response provided I see that the pricing failed because the booked itinerary was not confirmed. You can see the Status="UC", which means Unable to Confirm. (For more on UCs or different status I recommend you to check with webservices support directly.)
Sometimes even though you properly create the PNR creating response you might get this issue.
That because by the time you creating pnr request, there might not be a available flight for your requesting cabin type. Even though atleast one flight sector has unavailability Sabre does not allow to create pnr
Using following Sabre commands you can check availability of flight segments
More details about commands: http://www.emquest.ae/downloads/STM/Quick%20Reference%20English.pdf