问题
When I try to create PNR with child and or infant passengers I get this error, however when it is Adult only it works fine. I've read their documentation I don't know what I did wrong. Please help.
Payload :
<PassengerDetailsRQ version="3.2.0" HaltOnError="true" IgnoreOnError="false" xmlns="http://services.sabre.com/sp/pd/v3_2">
<PostProcessing IgnoreAfter="false" RedisplayReservation="true" >
<EndTransactionRQ>
<EndTransaction Ind="true" ></EndTransaction>
<Source ReceivedFrom="TEST" ></Source>
</EndTransactionRQ>
</PostProcessing>
<PriceQuoteInfo>
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="1" ></Link>
<Link NameNumber="3.1" Record="1" ></Link>
</PriceQuoteInfo>
<SpecialReqDetails>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="M" NameNumber="3.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ>
<AgencyInfo>
<Address>
<AddressLine>address here</AddressLine>
<CityName>city here</CityName>
<CountryCode>PH</CountryCode>
<PostalCode>postal code here</PostalCode>
<StreetNmbr>street number here</StreetNmbr>
</Address>
<Ticketing TicketType="7T-" ></Ticketing>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber Phone="817-555-1212" PhoneUseType="A" ></ContactNumber>
</ContactNumbers>
<Email Address="test.email@someemail.com" ShortText="ABC123" Type="CC" ></Email>
<PersonName Infant="false" NameNumber="1.1" PassengerType="ADT" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="2.1" PassengerType="ADT" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="3.1" NameReference="C10" PassengerType="CNN" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
Response :
<?xml version='1.0' encoding='UTF-8'?>
<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'>webservices.sabre.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type='URI'>XXXXXXXXXXXXXXXXXXX</eb:PartyId>
</eb:To>
<eb:CPAId>XXXX</eb:CPAId>
<eb:ConversationId>XXXXXXXXXXXXXX</eb:ConversationId>
<eb:Service>PassengerDetailsRQ</eb:Service>
<eb:Action>PassengerDetailsRS</eb:Action>
<eb:MessageData>
<eb:MessageId>250361059799101760</eb:MessageId>
<eb:Timestamp>2016-07-18T01:39:41</eb:Timestamp>
<eb:RefToMessageId>XXXXXXXXXXXXXXXXXXXXXX</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'>XXXXXXXXXXXXX</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<PassengerDetailsRS xmlns='http://services.sabre.com/sp/pd/v3_2'>
<ApplicationResults xmlns='http://services.sabre.com/STL_Payload/v02_01' status='NotProcessed'>
<Error type='BusinessLogic' timeStamp='2016-07-17T20:39:41.169-05:00'>
<SystemSpecificResults>
<Message code='ERR.SWS.HOST.ERROR_IN_RESPONSE'>CHILD DETAILS REQUIRED IN SSR - ENTER 3CHLD/...</Message>
</SystemSpecificResults>
</Error>
</ApplicationResults>
</PassengerDetailsRS>
</soap-env:Body>
</soap-env:Envelope>
Payload with infant :
<PassengerDetailsRQ version="3.2.0" HaltOnError="true" IgnoreOnError="false" xmlns="http://services.sabre.com/sp/pd/v3_2">
<PostProcessing IgnoreAfter="false" RedisplayReservation="true" >
<EndTransactionRQ>
<EndTransaction Ind="true" ></EndTransaction>
<Source ReceivedFrom="TEST" ></Source>
</EndTransactionRQ>
</PostProcessing>
<PriceQuoteInfo>
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="1" ></Link>
<Link NameNumber="3.1" Record="2" ></Link>
<Link NameNumber="4.1" Record="3" ></Link>
</PriceQuoteInfo>
<SpecialReqDetails>
<AddRemarkRQ>
<RemarkInfo>
<Remark Code="H" SegmentNumber="A" Type="General" >
<Text>TEXT</Text>
</Remark>
</RemarkInfo>
</AddRemarkRQ>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="M" NameNumber="3.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2016-01-01" Gender="MI" NameNumber="4.1" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<Service SegmentNumber="A" SSR_Code="CHLD" >
<PersonName NameNumber="3.1" ></PersonName>
<Text>01MAR06</Text>
</Service>
<Service SegmentNumber="A" SSR_Code="INFT" >
<PersonName NameNumber="1.1" ></PersonName>
<Text>DOE/INFANT/01JAN16</Text>
</Service>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ>
<AgencyInfo>
<Address>
<AddressLine>address here</AddressLine>
<CityName>city here</CityName>
<CountryCode>PH</CountryCode>
<PostalCode>postal code here</PostalCode>
<StreetNmbr>street number here</StreetNmbr>
</Address>
<Ticketing TicketType="7TAW" ></Ticketing>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber Phone="817-555-1212" PhoneUseType="A" ></ContactNumber>
</ContactNumbers>
<Email Address="test.email@someemail.com" ShortText="ABC123" Type="CC" ></Email>
<PersonName Infant="false" NameNumber="1.1" NameReference="A36" PassengerType="ADT" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="2.1" NameReference="A36" PassengerType="ADT" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="false" NameNumber="3.1" NameReference="C10" PassengerType="CNN" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="true" NameNumber="4.1" NameReference="I6" PassengerType="INF" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
Result with infant :
<PassengerDetailsRS xmlns='http://services.sabre.com/sp/pd/v3_2'>
<ApplicationResults xmlns='http://services.sabre.com/STL_Payload/v02_01' status='NotProcessed'>
<Error type='BusinessLogic' timeStamp='2016-07-20T10:53:30.328-05:00'>
<SystemSpecificResults>
<Message code='ERR.SWS.HOST.ERROR_IN_RESPONSE'>CANNOT ASSOC TO INFANT NAME</Message>
</SystemSpecificResults>
</Error>
</ApplicationResults>
</PassengerDetailsRS>
EnhancedAirBookRQ : http://pastebin.com/uZtbApR1
回答1:
I will add some information that will helpful
1) When child present (CNN)
add SecureFlight segment
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2007-05-01" Gender="F" NameNumber="2.1" >
<GivenName>CHILD</GivenName>
<Surname>TESTBOOKING</Surname>
</PersonName>
</SecureFlight>
`Add a SSR for child
<Service SSR_Code="CHLD">
<PersonName NameNumber="2.1"/>
<Text>01MAY07</Text>
</Service>
For SSR we need child DOB as shown in the exapmle
2) When INF( infant without seat/lap infant) present
add SecureFlight segment. Make sure in this case as NameNumber use a ADT name number since infant is a lap infant
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2017-01-20" Gender="M" NameNumber="1.1" >
<GivenName>INF</GivenName>
<Surname>TESTBOOKING</Surname>
</PersonName>
</SecureFlight>
`Add a SSR for child
<Service SSR_Code="INFT">
<PersonName NameNumber="1.1"/>
<Text>TESTBOOKING/INF/20JAN17</Text>
</Service>
For SSR we also need ADT NameNumber and for text it should be in this format LASTNAME/FIRSTNAME/DATEOFBIRTH as in exapmle
3) When INS( infant with seat) present
add SecureFlight segment. Here we don't need adult NameNumber. but When create Customer Passenger use as Infant="false"
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2017-01-20" Gender="M" NameNumber="3.1" >
<GivenName>INS</GivenName>
<Surname>TESTBOOKING</Surname>
</PersonName>
</SecureFlight>
`Add a SSR for child
<Service SSR_Code="INFT">
<PersonName NameNumber="3.1"/>
<Text>TESTBOOKING/INS/20JAN17/OS</Text>
</Service>
For SSR we also need ADT NameNumber and for text it should be in this format LASTNAME/FIRSTNAME/DATEOFBIRTH/OS as in exapmle.
回答2:
You need to change de PQ
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="1" ></Link>
<Link NameNumber="3.1" Record="2" ></Link>
You put Record="1" in all cases, but you have a child, so your NameNumber 3.1 needs to be associated to Record="2". If you dont do that you will have adt fare for all your passengers.
Edit:
Record="2" is not always for children but also could be for infant, for example if you have 1 ADT + 1 CNN (children) + 1 INF then you need this:
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="2" ></Link>
<Link NameNumber="3.1" Record="3" ></Link>
Where NameNumber 2.1 and Record 2 are the child passenger, and NameNumber=3 and record 3 are the infant passenger, BUT if you have 1 ADT + 1 INF, then you need:
<Link NameNumber="1.1" Record="1" ></Link>
<Link NameNumber="2.1" Record="2" ></Link>
And now the record 2 and namenumber 2.1 are for infant passenger.
PassengerDetailsRQ:
<soapenv:Body>
<PassengerDetailsRQ version="3.2.0" HaltOnError="true" IgnoreOnError="true">
<PostProcessing IgnoreAfter="false" RedisplayReservation="true">
<EndTransactionRQ>
<EndTransaction Ind="true"/>
<Source ReceivedFrom="TEST"/>
</EndTransactionRQ>
</PostProcessing>
<PriceQuoteInfo>
<Link NameNumber="1.1" Record="1"/>
<Link NameNumber="2.1" Record="2"/>
<Link NameNumber="3.1" Record="3"/>
</PriceQuoteInfo>
<SpecialReqDetails>
<AddRemarkRQ>
<RemarkInfo>
<Remark Code="H" SegmentNumber="1" Type="General">
<Text>TEXT</Text>
</Remark>
</RemarkInfo>
</AddRemarkRQ>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="MI" NameNumber="3.1" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<Service SSR_Code="INFT">
<PersonName NameNumber="1.1" />
<Text>DOE/INFANT/10OCT15</Text>
</Service>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
<TravelItineraryAddInfoRQ>
<AgencyInfo>
<Address>
<AddressLine>address here</AddressLine>
<CityName>city here</CityName>
<CountryCode>PH</CountryCode>
<PostalCode>postal code here</PostalCode>
<StreetNmbr>street number here</StreetNmbr>
</Address>
<Ticketing TicketType="7T-" ></Ticketing>
</AgencyInfo>
<CustomerInfo>
<ContactNumbers>
<ContactNumber Phone="817-555-1212" PhoneUseType="A" ></ContactNumber>
<ContactNumber Phone="817-555-1212" PhoneUseType="H" ></ContactNumber>
</ContactNumbers>
<Email Address="test.email@someemail.com" NameNumber="1.1" />
<PersonName NameNumber="1.1" PassengerType="ADT" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName NameNumber="2.1" PassengerType="CNN" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
<PersonName Infant="true" NameNumber="3.1" PassengerType="INF" >
<GivenName>INFANT</GivenName>
<Surname>DOE</Surname>
</PersonName>
</CustomerInfo>
</TravelItineraryAddInfoRQ>
</PassengerDetailsRQ>
</soapenv:Body>
回答3:
You can add the special service 'CHLD' right after your last SecureFlight element (date of birth format should be DDMMMYY).
<SpecialReqDetails>
<SpecialServiceRQ>
<SpecialServiceInfo>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-01-01" Gender="M" NameNumber="1.1" >
<GivenName>JOHN</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="1980-03-01" Gender="F" NameNumber="2.1" >
<GivenName>JANE</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<SecureFlight SegmentNumber="A" >
<PersonName DateOfBirth="2006-03-01" Gender="M" NameNumber="3.1" >
<GivenName>CHILD</GivenName>
<Surname>DOE</Surname>
</PersonName>
</SecureFlight>
<Service SSR_Code="CHLD">
<PersonName NameNumber="3.1"/>
<Text>20DEC80</Text>
</Service>
</SpecialServiceInfo>
</SpecialServiceRQ>
</SpecialReqDetails>
来源:https://stackoverflow.com/questions/38427599/sabre-how-to-create-pnr-with-child-and-or-infant-as-passenger