Sabre ticketing confirmation via Web services - sabre

While trying to issue tickets for PNR with stored negotiated fare we get following message in return:
<AirTicketRS 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" Version="2.2.0">
<stl:ApplicationResults status="NotProcessed">
<stl:Error type="BusinessLogic" timeStamp="2017-01-16T23:50:16-06:00">
<stl:SystemSpecificResults>
<stl:HostCommand LNIATA="E2A2BC">W¥PQ1¥ETR¥FCA¥ASU¥DOB</stl:HostCommand>
<stl:Message>UNABLE TO TICKET STORED FARE - NEGOTIATED FARE STORED</stl:Message>
<stl:Message>CONTINUE TO TICKET? ENTER Y OR N<.></stl:Message>
<stl:ShortText>ERR.SWS.HOST.ERROR_IN_RESPONSE</stl:ShortText>
</stl:SystemSpecificResults>
</stl:Error>
</stl:ApplicationResults>
</AirTicketRS>
Use SabreCommandLLSRQ with Y does not help - Sabre insists on Y or N.
Any ideas on how can we send a confirmation Y back for process to go on?
Thanks,
McSeem

The original problem was with "Allow Ticket CAT 35 IT/BT PQ Fare" PCC setting.
Turning this ON allows autoconfirmation while ticketing.
Command set for terminal user:
SI9«
A123.A9999A07.B..9A11 NOT SIGNED OUT <- response
W/C35IT‡ON«
TICKET CAT 35 IT/BT PQ FARE ALLOWED <- response

This is what is called 'mask handling'. You'll need to send the request as if you were working on a native Sabre mask.
It should look something like the following:
<HostCommand><![CDATA[CO<Y>]]></HostCommand>
The Host command needs to be enclosed in a CDATA block in order for the service to not consider the "<" and ">" as part of the XML.
Hope this helps!

If you want to generate a mask response, try this:
<HostCommand>CO<Y></HostCommand>
...and be sure your XML construction software does not automatically convert those embedded codes before and after the "Y" into angled brackets.
The CO is the action code that tells native Sabre that this is a mask response to the mask prompt UNABLE TO TICKET STORED FARE - NEGOTIATED FARE STORED...

Related

Error response with Sabre SOAP API - StructureFareRulesRQ

When trying to perform a StructureFareRulesRQ using Sabre SOAP API i keep getting the below response. Is this because the airline doesn't support structured fare rules or something else? thank you
<StructureFareRulesRS xmlns="http://webservices.sabre.com/sabreXML/2003/07" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" Version="1.0.4">
<Errors>
<Error ErrorCode="005106" ErrorMessage="FORMAT FARE BASIS NOT AVAILABLE"/>
</Errors>
</StructureFareRulesRS>
This is mostly related to the way the service is built. Remember that fare components o not necessarily reflect segments, and check the directionality of the fare. If you are using BFM, the service will return fare directionality and the actual cities you have to use. Sometimes fares are loaded as full in ATPCO, not only by segments, so that means that the city pair you will have to use in your request will be what you can see in FareComponentBeginAirport and FareComponentEndAirport in BFM's response. I would advise to check with the helpdesk, as you can send them your full payloads and they can check in your PCC as well.

GetReservation returning Viewership is restricted for the PNR

I'm currently using the sabre web service TravelItineraryReadLLSRQ (version 2.2.0) and I can successfully retrieve all on the PNR data. Now I'm trying to implement GetReservation but I'm getting the error below.
Not finding any further detail from the dev sabre portal - has anybody seen this and know what the 'fix' is?
"Viewership is restricted for the PNR, caused by [Viewership is restricted for the PNR (Unsupported security check), code: 700102, severity: MODERATE]"
<GetReservationRS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Errors xmlns="http://webservices.sabre.com/pnrbuilder/v1_18">
<Error>
<Code>700102</Code>
<Message>Viewership is restricted for the PNR, caused by [Viewership is restricted for the PNR (Unsupported security check), code: 700102, severity: MODERATE]</Message>
<Severity>MODERATE</Severity>
</Error>
</Errors>
</GetReservationRS>
You may want to try using "Stateful" since "Stateless" is only intended for airline customers. You can use Stateful together with a locator or without it, makes no difference.
You may also may want to be aware that the service can be called with the Full, Default and Simple View Names. Only Simple will return more updated data which you can obtain by using the required subject areas in the payload. Full and Default will ignore the subject areas you use.

Sabre API *A OR *IM command equivalent

PNR not created on DELTA carrier, need assistance
I'm receiving this warning on PassengerDetailsRQ
DIRECT CONNECT MESSAGES RECEIVED - ENTER *A OR *IM
All pricing is extracted ok and Segment status is HK but PNR is not generated((
Could you please tell me what will be Sabre API equivalent for *A OR *IM commands and how to fight this issue.
Assuming you are using XML services you may try to run SabreCommandLLSRQ which is responsible for running commands. Exact command instruction is put in <HostCommand> node. Example for IM command below (header section is empty for verbosity)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- Header content -->
</soap:Header>
<soap:Body>
<SabreCommandLLSRQ xmlns="http://webservices.sabre.com/sabreXML/2003/07" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" TimeStamp="2014-03-04T14:00:00" Version="1.8.1">
<Request Output="SCREEN" CDATA="true">
<HostCommand>IM</HostCommand>
</Request>
</SabreCommandLLSRQ>
</soap:Body>
</soap:Envelope>
As mentioned you can use the SabreCommandLLSRQ to run exact host commands specified in the error message but the equivalent web service command for *A would be TravelItineraryReadRQ with a FULL subject area (and no UniqueID specified).
After retrieving the PNR again you can simply EndTransactionLLSRQ again.

Error During PingFederate Agentless Sequence

Some of our users are encountering the following error page during the sequence of redirects after authenticating at their IdP.
"Unexpected exception occurred in Response Handling: null"
Partner: ...
Target: ...
This is what I believe is the corresponding info from the the server log.
2015-07-16 07:48:53,458 DEBUG [com.pingidentity.jgroups.MuxInvocationHandler] invocation of saveState on InterReqStateMgmtMapImpl state map size:215 attributes map size4 w/args: [ZkyN3LwNSjurZyfIewu1Kgjbgl7HrB, State(1437050933419){
inMsgCtx=null
outMsgCtx=OutMessageContext
XML: <samlp:AuthnRequest Version="2.0" ID="E6_0yldGrt0iqNKfUpArog6DG8G" IssueInstant="2015-07-16T12:48:53.419Z" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">#issuer%</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true"/>
</samlp:AuthnRequest>
entityId: <Id> (IDP)
Binding: urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
relayState: ZkyN3LwNSjurZyfIewu1Kgjbgl7HrB
Endpoint: <endpoint>
SignaturePolicy: DO_NOT_SIGN
parameters=null}] returned null
Is there an obvious place to look for more details? This happens for around 10% of our users and seems to follow them from device to device.
I figured out what the issue was. We are using account linking using the SAML Subject from the IdP. It turned out that a number of accounts at the IdP didn't have the LDAP attribute mapped to the NameID populated. So we were receiving SAML assertions without any data in the Subject.
Understanding where to look is the key. The audit.log file shows a general "failure". Then you look up corresponding activity details in the server.log file. Then you examine the corresponding SAML assertion in the log to determine what the problem was. The difficult part is noticing omissions in the data. That's harder for the eye/brain to catch imho.
It would be useful if we had an option for directing users to a custom page rather than a Ping-specific error page when this occurs.

Payment Gateway Integration error solving

I have a windows application that requires Payment Gateway Integration.
All these stuff i have done.
The process includes the following...
-Creating Xml Request header
-Encoding it as Url
-send the url encoded data to a Rest API with link being provided in the documentation.
-The test server performs the transaction and sends response back to the application.
What I have done to achieve these functionality...
1) I have used 'HttpWebRequest' class to create request to the URL : I am not going to share it since it security and confidential.
2) I have generated xml header and send it as url encoded.
3) The Server is even responses back to the application. but with Status not success
I am going to post the request formate and response formate.
<?xml version="1.0" encoding="UTF-8"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment">
<merchant-account-id>!#-merchant-account-id-#!</merchant-account-id>
<request-id>!#-request-id-#!</request-id>
<transaction-type>purchase</transaction-type>
<requested-amount currency="AUD">!#-requested-amount-#!</requested-amount>
<account-holder>
<first-name>!#-first-name-#!</first-name>
<last-name>!#-last-name-#!</last-name>
<email>!#-email-#!</email>
<phone>!#-phone-#!</phone>
<address>
<street1>!#-street1-#!</street1>
<street2>!#-street2-#!</street2>
<city>!#-city-#!</city>
<state>!#-state-#!</state>
<country>!#-country-#!</country>
<postal-code>!#-postal-code-#!</postal-code>
</address>
</account-holder>
<card>
<account-number>!#-account-number-#!</account-number>
<expiration-month>!#-expiration-month-#!</expiration-month>
<expiration-year>!#-expiration-year-#!</expiration-year>
<card-type>!#-card-type-#!</card-type>
<card-security-code>!#-card-security-code-#!</card-security-code>
</card>
<notifications>
<notification url="!#-notification-url-#!" transaction-state="failed" />
<notification url="!#-notification-mail-#!" />
</notifications>
<custom-fields>
<custom-field field-name="order no" field-value="!#-order no-#!" />
</custom-fields>
<ip-address>!#-ip-address-#!</ip-address>
</payment>
The following is the response coming back from the server.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<payment xmlns="http://www.elastic-payments.com/schema/payment" self="http://sandbox-engine.thesolution.com/engine/rest/merchants/null/payments/null">
<merchant-account-id ref="http://sandbox-engine.thesolution.com/engine/rest/config/merchants/null"/>
<transaction-state>failed</transaction-state>
<completion-time-stamp>2012-11-28T08:19:31.024Z</completion-time-stamp>
<statuses>
<status code="400.1018" description="The same Request Id for the Merchant Account is being tried a second time. Please use another Request Id. " severity="error"/>
<status code="400.1009" description="The Transaction Type is invalid. Please check your input and try again." severity="error"/>
</statuses>
<requested-amount/>
<api-id>elastic-api</api-id>
</payment>
I have cross checked twice with the request header,Each time i do have unique Request id which is 'hiren-'+GUID+DATETIMEWITHTIME
I even have cross checked with the documentation of the gateway for the transaction-type and it's valid but even then it's giving the same error.
To encode url i have used the following code
string sendString = "param=" + HttpUtility.UrlEncode(xmlData);
I'm thinking that the above code may be having the error but it's giving reply back...
so need help to solve the problem.
Please don't ask for the document file but you can ask for extra information.

Resources