Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Need code taking into account ticketing after search and booking #89

Closed
jadchahine opened this issue Sep 22, 2016 · 70 comments
Closed

Need code taking into account ticketing after search and booking #89

jadchahine opened this issue Sep 22, 2016 · 70 comments

Comments

@jadchahine
Copy link

Hi All,

This lesson is a great one that takes into account low fare search and booking:

https://github.com/Travelport/travelport-uapi-tutorial/blob/master/src/com/travelport/uapi/unit1/Lesson2.java

But I don't found a logic that take into account ticketing, please can you provide us a sample code for ticketing after search and booking (also for hotel booking)

Thanks&Regards

@jadchahine
Copy link
Author

Please help we need this ASAP, thank u and sorry for any inconvenience.

@vivekjyotipramanik
Copy link
Contributor

Hi Jad,

This will be available around the end of next week. Hopefully we will push the code by Next week Wednesday along with the new version 38 code. Thanks.

Thanks & Regards
Vivekjyoti Pramanik

@jadchahine
Copy link
Author

Ok thank you.

@jadchahine
Copy link
Author

jadchahine commented Sep 30, 2016

Please inform us when the final code of ticketing is available.
Thank you.

@vivekjyotipramanik
Copy link
Contributor

Hi Jad,

We have pushed the latest code. Please let me know how it goes. Thanks.

Thanks & Regards
Vivekjyoti Pramanik

@jadchahine
Copy link
Author

Hi VivekJyoti,

Thanks so much for the update, but after updating the code, I got this error upon executing low fare search:

Caused by: java.lang.RuntimeException: You supplied a bad service/port pair (InvocationTarget):null
at com.travelport.tutorial.support.ServiceWrapper.init(ServiceWrapper.java:74)
at com.travelport.tutorial.support.ServiceWrapper.(ServiceWrapper.java:33)
at com.travelport.tutorial.support.WSDLService.(WSDLService.java:63)
... 42 more

@jadchahine
Copy link
Author

Sorry it was the URLPREFIX that I should edit it to match the project path.

@jadchahine
Copy link
Author

One more question please, concerning the ticketing, where it is implemented currently? in lesson2?!

@vivekjyotipramanik
Copy link
Contributor

Hi Jad,

Apologies for the delayed reply. The Ticketing is implemented in Lesson4bad.java in Unit 2. Thanks.

Thanks & Regards
Vivekjyoti Pramanik

@jadchahine
Copy link
Author

jadchahine commented Oct 2, 2016

Hi VivekJyoti,

Thank you, I will test it and integrate in my application to build a complete scenario of the low fare search then return to you if I have any question (it will be similar for the advanced search and hotel I guess)

But now I want to make sure that I am understanding right the travelport api:
I believe that the steps in the flight/hotel scenario are as listed below:

Step 1: Searching, so the api will search all flights based on the user criteria (origin, destination, ...)
Step 2: Booking, so after that the user choose one flight, the api will book this flight for the user based on its price (got from the first step) and based on the passengers information (first name, last name, email ...)
Step 3: Ticketing

Is this right?

Thanks&Regards

@NirandaG
Copy link

NirandaG commented Oct 2, 2016

Hi Jadchahine,
Yes, basic flow should be the one as below.

Low Fare Search
Response with flight options
Prior to booking you need to do the Air Price to ensure the fares are valid for the itinerary
Based on the Air Price response AirCreate
Once the successful booking is created following that the Ticketing fulfillment
(Please note in prior to AirTicket the commission and the form of payment needs to be filled with the booking)

Thank you,
B.Rgds,
Niranda

@AlbinGlobosoft
Copy link

Hello help me please...
I get the error when i run Lesson1.java

Exception in thread "main" java.lang.ExceptionInInitializerError
at com.test.JavaMain.main(JavaMain.java:33)
Caused by: java.lang.RuntimeException: You supplied a bad service/port pair (InvocationTarget):null
at com.travelport.tutorial.support.ServiceWrapper.init(ServiceWrapper.java:74)
at com.travelport.tutorial.support.ServiceWrapper.(ServiceWrapper.java:33)
at com.travelport.tutorial.support.WSDLService.(WSDLService.java:51)
... 1 more

static public String URLPREFIX = "file:///D:/DHD/WebService-Test3/";
static public String SYSTEM_WSDL = "wsdl/system_v8_0/System.wsdl";
static public String AIR_WSDL = "wsdl/air_v18_0/Air.wsdl";
static public String HOTEL_WSDL = "wsdl/hotel_v17_0/Hotel.wsdl";
static public String VEHICLE_WSDL = "wsdl/vehicle_v17_0/Vehicle.wsdl";

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

I believe the version v17 or v18 has been retired long ago. Please use the latest version of uapi schema. Thanks.

https://support.travelport.com/webhelp/uapi/uapi.htm#Getting_Started/Universal_API_Schemas_and_WSDLs.htm%3FTocPath%3D_____18

@AlbinGlobosoft
Copy link

I tried with uAPI_WSDLschema_Release-V19.1.0.53 but i was unable to create client code for AirService
i got the below error when i tried to create Air client code

iam using
Eclipse : Mars.1 Release (4.5.1)
Server : Apache tomcat 8
CXF : Apache CXF -3.3.2
WebAppLibraries : provided picture below

IWAB0399E Error in generating Java from WSDL: java.lang.NullPointerException

IWAB0399E Error in generating Java from WSDL: java.lang.NullPointerException
java.lang.NullPointerException
at org.apache.axis.wsdl.toJava.JavaBeanHelperWriter.getAsFieldName(JavaBeanHelperWriter.java:435)
at org.apache.axis.wsdl.toJava.JavaBeanHelperWriter.writeMetaData(JavaBeanHelperWriter.java:325)
at org.apache.axis.wsdl.toJava.JavaBeanHelperWriter.writeFileBody(JavaBeanHelperWriter.java:183)
at org.apache.axis.wsdl.toJava.JavaWriter.generate(JavaWriter.java:127)
at org.apache.axis.wsdl.toJava.JavaBeanWriter.writeFileBody(JavaBeanWriter.java:257)
at org.apache.axis.wsdl.toJava.JavaWriter.generate(JavaWriter.java:127)
at org.apache.axis.wsdl.toJava.JavaBeanWriter.generate(JavaBeanWriter.java:1405)
at org.apache.axis.wsdl.toJava.JavaTypeWriter.generate(JavaTypeWriter.java:113)
at org.apache.axis.wsdl.toJava.JavaGeneratorFactory$Writers.generate(JavaGeneratorFactory.java:421)
at org.apache.axis.wsdl.gen.Parser.generateTypes(Parser.java:547)
at org.apache.axis.wsdl.gen.Parser.generate(Parser.java:432)
at org.apache.axis.wsdl.gen.Parser.access$000(Parser.java:45)
at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:362)
at java.lang.Thread.run(Unknown Source)

javabuildpath

albin-v19-creating-air-service

@AlbinGlobosoft
Copy link

i solved the issue . it was due to apache axis as Web service runtime. i changed it to CXF
apache-axis

changed from Apache axis to CXF as web service runtime
apache-CXF

@AlbinGlobosoft
Copy link

Please help me sir,

My Test Credential are given below
test-credentils

Do i need to give space After Universal

Arguments

-Djava.util.logging.config.file=logging.properties
-Dtravelport.username=Universal API/uAPI-778445410
-Dtravelport.password=bFTpCf6MjK2JrknJhKNtkwypg
-Dtravelport.gds=1G
-Dtravelport.tagetBranch=P105195

if i leave space it shows error ### :
Error: Could not find or load main class API.uAPI-778445410

if i remove space and run i get error like this :-

Exception in thread "main" java.lang.ExceptionInInitializerError
at test.app.support.test.JavaMain.main(JavaMain.java:34)
Caused by: java.lang.RuntimeException: You supplied a bad service/port pair (InvocationTarget):null
at test.app.support.ServiceWrapper.init(ServiceWrapper.java:74)
at test.app.support.ServiceWrapper.(ServiceWrapper.java:33)
at test.app.support.WSDLService.(WSDLService.java:62)
... 1 more

my URLPREFIX
i tried using
static public String URLPREFIX = "file:///D://NewEclipse//WebService-UAPI-V19/";
static public String URLPREFIX = "file:///D:\NewEclipse\WebService-UAPI-V19\";
static public String URLPREFIX = "file:///D:\NewEclipse\WebService-UAPI-V19/";
static public String URLPREFIX = "file:///D:/NewEclipse/WebService-UAPI-V19/";
static public String URLPREFIX = "file:///D://NewEclipse/WebService-UAPI-V19/";

it shows the error

Exception in thread "main" java.lang.ExceptionInInitializerError
at test.app.support.test.JavaMain.main(JavaMain.java:34)
Caused by: java.lang.RuntimeException: You supplied a bad service/port pair (InvocationTarget):null
at test.app.support.ServiceWrapper.init(ServiceWrapper.java:74)
at test.app.support.ServiceWrapper.(ServiceWrapper.java:33)
at test.app.support.WSDLService.(WSDLService.java:80)
... 1 more

// location of the WSDL files within this repository
static public String SYSTEM_WSDL = "wsdl/system_v32_0/System.wsdl";
static public String AIR_WSDL = "wsdl/air_v48_0/Air.wsdl";
static public String HOTEL_WSDL = "wsdl/hotel_v48_0/Hotel.wsdl";
static public String VEHICLE_WSDL = "wsdl/vehicle_v48_0/Vehicle.wsdl";
static public String UNIVERSAL_WSDL = "wsdl/universal_v48_0/UniversalRecord.wsdl";
static public String UTIL_WSDL = "wsdl/util_v48_0/Util.wsdl";

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Jul 17, 2019

Dont care about the password since i got two test credentials

Universal API User ID: Universal API/uAPI-778445410

Branch Code (TargetBranch) for ProviderName (ProviderCode): Branch Code for Galileo (1G): P105195

URLs: https://emea.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/
========================== ==================
Universal API User ID: Universal API/uAPI-778445410

Branch Code (TargetBranch) for ProviderName (ProviderCode): Branch Code for Galileo (1G): P105195

URLs: https://emea.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/

Only password differes

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

The space should not be there. You probably getting the error, cause it is unable to find the path.
If you give path like "file:///D://NewEclipse//WebService-UAPI-V19/", it will try to find the schema say for Service in the location, "file:///D://NewEclipse//WebService-UAPI-V19/wsdl/system_v32_0/System.wsdl". Please check if the schema is available there. If not, provide correct path. Thanks.

@AlbinGlobosoft
Copy link

Now the error is this:

Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:183)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at com.sun.proxy.$Proxy47.service(Unknown Source)
at test.app.support.test.JavaMain.main(JavaMain.java:34)
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '401: Unauthorized' when communicating with https://emea.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/SystemService
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.doProcessResponseCode(HTTPConduit.java:1618)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1625)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1570)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
... 2 more

Can i directly login into
https://emea.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/
using my credentials ?

if i login with my credential , i get the following error :
IndexOutOfBoundsException.
Could you please verify the above credentials are valid?

@AlbinGlobosoft
Copy link

When i login with my credential , i get the following error in response while inspecting it in network.

{
"errors": {
"error": {
"status": "500",
"code": "Dynamic backend host not specified",
"detail": "Dynamic backend host not specified"
}
}
}

but shows error in console :

Exception in thread "main" javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:183)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at com.sun.proxy.$Proxy47.service(Unknown Source)
at test.app.support.test.JavaMain.main(JavaMain.java:41)
Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '401: Unauthorized' when communicating with https://apac.universal-api.pp.travelport.com/B2BGateway/connect/uAPI/SystemService
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.doProcessResponseCode(HTTPConduit.java:1618)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1625)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1570)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371)
at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:56)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:228)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
... 2 more

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

You are getting this error cause your credentials are locked. We are working on to unlock them and as soon as they are unlocked I will notify you. Thanks.

@AlbinGlobosoft
Copy link

How long will it take?
When i communicate through chat in TRAVELPORT there was nobody to respond. how a beginner can get sort of this problem?

@AlbinGlobosoft
Copy link

Do i need to add any jar files to bin folder in WEB-INF ? The reason why iam asking when i run the application on tomcat server it shows some of the following errors:

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/NewEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebService-UAPI-V19-2/WEB-INF/lib/javax.xml.soap-api-1.4.0.jar!/] for annotations

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/NewEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebService-UAPI-V19-2/WEB-INF/lib/rngom-2.3.2.jar!/] for annotations

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/NewEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebService-UAPI-V19-2/WEB-INF/lib/txw2-2.3.2.jar!/] for annotations

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/NewEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebService-UAPI-V19-2/WEB-INF/lib/istack-commons-runtime-3.0.8.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97)
at org.apache.tomcat.util.bcel.classfile.ConstantPool.(ConstantPool.java:55)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:176)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2011)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1961)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1936)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1897)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1149)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

The account is unlocked. Please use the password which starts with "b" and it should be working fine. Thanks.

@AlbinGlobosoft
Copy link

I got the following error

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Marshalling Error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns2:Payload'. One of '{"http://www.travelport.com/schema/common_v32_0":BillingPointOfSaleInfo}' is expected.
at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:195)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at com.sun.proxy.$Proxy47.service(Unknown Source)
at com.travelport.tutorial.support.test.TestClass.main(TestClass.java:23)
Caused by: javax.xml.bind.MarshalException

  • with linked exception:
    [org.xml.sax.SAXParseException; lineNumber: 0; columnNumber: 0; cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns2:Payload'. One of '{"http://www.travelport.com/schema/common_v32_0":BillingPointOfSaleInfo}' is expected.]
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:301)
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:226)
    at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(Unknown Source)
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:643)
    at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:244)
    at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:237)
    at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:118)
    at org.apache.cxf.wsdl.interceptors.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
    ... 2 more
    Caused by: org.xml.sax.SAXParseException; lineNumber: 0; columnNumber: 0; cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns2:Payload'. One of '{"http://www.travelport.com/schema/common_v32_0":BillingPointOfSaleInfo}' is expected.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.startElement(Unknown Source)
    at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source)
    at com.sun.xml.bind.v2.runtime.output.SAXOutput.endStartTag(SAXOutput.java:98)
    at com.sun.xml.bind.v2.runtime.output.ForkXmlOutput.endStartTag(ForkXmlOutput.java:76)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.leafElement(XMLSerializer.java:295)
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$StringImplImpl.writeLeafElement(RuntimeBuiltinLeafInfoImpl.java:1036)
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$StringImplImpl.writeLeafElement(RuntimeBuiltinLeafInfoImpl.java:1015)
    at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.writeLeafElement(TransducedAccessor.java:218)
    at com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:100)
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:330)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:666)
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:125)
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:100)
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:302)
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:309)
    at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:45)
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:464)
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:298)
    ... 16 more

@AlbinGlobosoft
Copy link

Could you please check these codes? I need only air service.

TravelPortWsdl.zip

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

This error means in the code where you are creating the request, the BillingPointOfSale is missing which is a mandatory element. The code you have shared is missing the file where you are creating the request. Thanks.

@AlbinGlobosoft
Copy link

I used the code from github

https://github.com/Travelport-xx/travelport-uapi-tutorial

But it shows some Marshalling Error . Could you please help me to where i need to make changes?

@AlbinGlobosoft
Copy link

When i tried to create code for Util it show some error:

org.apache.cxf.tools.common.ToolException: Schema Error : Current configuration of the parser doesn't allow a maxOccurs attribute value to be set greater than the value 5,000.

@vivekjyotipramanik
Copy link
Contributor

vivekjyotipramanik commented Jul 23, 2019

Hi AlbinGlobosoft,

The codebase in github is working fine. It is quite impossible to see the actual issue without seeing your complete code. Could you please share the TestClass.java file.

Regarding the util wsdl issue, Could you please try generating the class files using apache axis. The cxf does not support maxoccurs more than 5000. Also, you can try the below. Thanks.

https://stackoverflow.com/questions/16651005/workaround-for-xmlschema-not-supporting-maxoccurs-larger-than-5000

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Jul 26, 2019

I got it . I used command line (cxf 3.2.1)

cmd> wsimport -keep Util.wsdl
parsing WSDL...

[WARNING] Current configuration of the parser doesn't allow a maxOccurs attribute value to be set greater than the value 5,000.

Generating code...
Compiling code...

@AlbinGlobosoft
Copy link

Could you please help me with the above error in lesson2 ?

Thanks.

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

Please try with Wsdl2Java command to cxf rather than using wsimport. Thanks.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Jul 29, 2019

I generated the code using wsimport . it seems no problem.

I mentioned error was :
QF#498 from MEL to SYD at 2019-09-23T05:30:00.000+10:00
QF#401 from SYD to MEL at 2019-10-01T06:00:00.000+10:00
Price:AED2900 [BasePrice AUD1082.30, Taxes AED140]

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unexpected element (uri:"http://www.travelport.com/schema/SessionContext_v1_0", local:"Code"). Expected elements are <{http://www.travelport.com/schema/common_v48_0}CommandHistory>,<{http://www.travelport.com/schema/common_v48_0}Type>,<{http://www.travelport.com/schema/common_v48_0}Description>,<{http://www.travelport.com/schema/common_v48_0}StackTrace>,<{http://www.travelport.com/schema/common_v48_0}Auxdata>,<{http://www.travelport.com/schema/common_v48_0}Service>,<{http://www.travelport.com/schema/common_v48_0}TraceId>,<{http://www.travelport.com/schema/common_v48_0}Code>,<{http://www.travelport.com/schema/common_v48_0}TransactionId>
at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:195)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at com.sun.proxy.$Proxy51.service(Unknown Source)
at test.app.support.test2.Lesson2.bookItinerary(Lesson2.java:440)
at test.app.support.test2.Lesson2.main(Lesson2.java:180)
Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.travelport.com/schema/SessionContext_v1_0", local:"Code"). Expected elements are <{http://www.travelport.com/schema/common_v48_0}CommandHistory>,<{http://www.travelport.com/schema/common_v48_0}Type>,<{http://www.travelport.com/schema/common_v48_0}Description>,<{http://www.travelport.com/schema/common_v48_0}StackTrace>,<{http://www.travelport.com/schema/common_v48_0}Auxdata>,<{http://www.travelport.com/schema/common_v48_0}Service>,<{http://www.travelport.com/schema/common_v48_0}TraceId>,<{http://www.travelport.com/schema/common_v48_0}Code>,<{http://www.travelport.com/schema/common_v48_0}TransactionId>
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:714)

I resolved it . it was due to
airBookReq.setAirPricingSolution(soln);

i had commented it because i was unable to find it setter method
now i changed it to
airBookReq.getAirPricingSolution().add(soln);

Thanks.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Jul 29, 2019

When i run Lesson 2 i got Flight Details and Universal Record Locator
but when the second time i got the following error :

QF#400 from MEL to SYD at 2019-09-27T06:00:00.000+10:00
QF#401 from SYD to MEL at 2019-10-05T06:00:00.000+10:00
-----------

Exception in thread "main" com.travelport.service.air_v48_0.AirFaultMessage: SYSTEM ERROR OCCURRED
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.cxf.interceptor.ClientFaultConverter.processFaultDetail(ClientFaultConverter.java:183)
at org.apache.cxf.interceptor.ClientFaultConverter.handleMessage(ClientFaultConverter.java:83)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:70)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:35)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:826)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1693)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1570)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
at com.sun.proxy.$Proxy50.service(Unknown Source)
at test.app.support.test2.Lesson2.priceItinerary(Lesson2.java:503)
at test.app.support.test2.Lesson2.displayItineraryPrice(Lesson2.java:270)
at test.app.support.test2.Lesson2.main(Lesson2.java:113)

================================================================

More Error Details :- >

at test.app.support.test2.Lesson2.main(Lesson2.java:113) : ->
AirPriceRsp priceRsp = displayItineraryPrice(itin)
at test.app.support.test2.Lesson2.displayItineraryPrice(Lesson2.java:270) - >
AirPriceRsp priceRsp = priceItinerary(itin);
at test.app.support.test2.Lesson2.priceItinerary(Lesson2.java:503) ->
return WSDLService.airPrice.get().service(priceReq, null);

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Jul 29, 2019

How can i get all flight details(name or flight code) to auto complete search inputs when user type into origin and destination fields?

Thanks.

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

I am seeing that you are getting 'SYSTEM ERROR OCCURRED'. it can happen due to quite a few number of reasons. I would recommend to installer fiddler tool to capture the request and response xml so that it would be easier for us to pinpoint the issue.

As you said, it is happening 2nd time, it might be because you are using same itinerary and trying to book the same itinerary for the same booking traveler twice. But, if you can capture the xml request and response using fiddler and share the same, it would be very helpful for us to analyze the issue.

Regarding your 2nd question about name and flight code, we have a reference data service which provide all the details about a airline and its code. Please find below the link with all the details. If you are looking for something else, Could you please elaborate the question a little bit more with example how you are expecting to see the data. Thanks.

https://support.travelport.com/webhelp/uapi/uapi.htm#Getting_Started/Design_Considerations/Reference_Data.htm

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Jul 30, 2019

Can i use this data for production use ?

Reference Data :
RAML - AIR MEAL SERVICE TYPES
RAPT - AIRPORTS

These tables column differs when i tried to insert data from Reference data(RAML and RAPT) to RAML and RAPT tables according to 'formats.doc'.
RAPT shows 9 column attributes but 'RAPT.TXT' has 10 column values
RAML shows 3 column attributes but 'RAML.TXT' has 5 column values

Help me please.

Thanks.

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

Absolutely. These are production ready data. The Column values can differe based on what kind of data you are requesting. As Airports has different data definition than Air meal type, the will generate different number of columns and data. Thanks.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 2, 2019

When i run Lesson2 i got the following result

from = MEL , to = SYD //roundtrip

QF#400 from MEL to SYD at 2019-10-01T06:00:00.000+10:00
QF#401 from SYD to MEL at 2019-10-09T06:00:00.000+11:00

Price:AED2900 [BasePrice AUD1082.30, Taxes AED140]
Price:AED3480 [BasePrice AUD1310.02, Taxes AED140]
The Universal Record Locator for this reservation : AEW4UR

But when we calculate BasePrice and Taxes actual price differ

is first price for MEL to SYD
also
second price for SYD to MEL?

Another case

from = DEL , to = SYD

output :
QF#8218 from DEL to HKG at 2019-10-02T01:05:00.000+05:30
QF#128 from HKG to SYD at 2019-10-02T19:30:00.000+08:00
QF#127 from SYD to HKG at 2019-10-10T11:20:00.000+11:00
QF#8251 from HKG to DEL at 2019-10-10T20:05:00.000+08:00

Price:AED3580 [BasePrice INR32500, Taxes AED1860]
Price:AED5930 [BasePrice INR75000, Taxes AED1970]

also look at the BasePrice it is 'INR' and Taxes is AED.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 3, 2019

How can i get all possible flight routes from all available flight vendors. if i give origin as DEL and Destination as SYD . i get buildroutings 16 for each DEL and SYD . When i merge these buildroutings i get 256(16*16) AirItineraries . If it is available itineraries can i add it in my flight view?

When i tried to print all AirItinerary i got following result from Lesson2.

from = DEL , to = SYD

I think '0' for Outbound '1' for inbound in round trip

Group Origin Destination
===== ===== ===== =====
0 DEL , HKG
0 HKG , SYD
1 SYD , HKG
1 HKG , DEL
Price:AED3580 [BasePrice INR32500, Taxes AED1860]
Price:AED5930 [BasePrice INR75000, Taxes AED1970]
===== ===== ===== =====
0 DEL , HKG
0 HKG , MEL
1 SYD , HKG
1 HKG , DEL
Price:AED3620 [BasePrice INR33500, Taxes AED1850]
Price:AED5940 [BasePrice INR75500, Taxes AED1960]
===== ===== ===== =====
Null Segment
0 MEL , SYD
1 SYD , HKG
1 HKG , DEL
Price:AED2730 [BasePrice AUD902.00, Taxes AED430]
Price:AED5000 [BasePrice AUD1794.00, Taxes AED430]
===== ===== ===== =====
Null Segment
0 BNE , SYD
1 SYD , HKG
1 HKG , DEL
Price:AED2760 [BasePrice AUD910.00, Taxes AED440]
Price:AED4930 [BasePrice AUD1766.00, Taxes AED440]

Exception in thread "main" com.travelport.service.air_v48_0.AirFaultMessage: NO VALID FARE FOR INPUT CRITERIA

when we check first result it is understandable but in the second result showing HKG to MEL instead of HKG to SYD.

My main aim is to get available flights between origin and destination also its rate like the travelport demo site. Here iam taking price details for the required AirItinerary for every iteration. So it is very slow. Could you please provide me a proper solution for getting price details along with AirItinerary.

Please help me.

Thanks.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 5, 2019

Please examine above two posts also this.

For One Way trip i changed the code and run

1st run

from ="DEL" , to ="SYD"

QF #8218 from DEL to HKG at 2019-10-04T01:05:00.000+05:30
QF #128 from HKG to SYD at 2019-10-04T19:30:00.000+08:00

Price:AED5690 [BasePrice INR87750, Taxes AED1060]

2nd Run

from ="MEL" , to ="SYD"

QF#400 from MEL to SYD at 2019-10-04T06:00:00.000+10:00

Price:AED1440 [BasePrice AUD536.34, Taxes AED70]
Price:AED1740 [BasePrice AUD655.01, Taxes AED70]

look the 1st output it is correct but 2nd showing two prices.

help me please...
Thanks.

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

Please find below the details regarding your questions. Thanks.

  1. Need code taking into account ticketing after search and booking #89 (comment):

You are only seeing the response from the sysout of the Lesson2. Please check the complete response using fiddler or by debugging and you will see the TotalPrice, BasePrice and Taxes are being returned in 2 currencies, one is default currency and another one is currency based on the location. Please find below the link with all the details.

https://support.travelport.com/webhelp/uapi/uapi.htm#Air/Air_Pricing/Air_Pricing_with_Alternate_Currencies.htm%3FTocPath%3DAir%7CAir%2520Shopping%2520and%2520Booking%7CAir%2520Pricing%7CAir%2520Pricing%2520Modifiers%7C_____2

  1. Need code taking into account ticketing after search and booking #89 (comment) :

You are using origin as DEL and destination as SYD and as a round trip. Now, it is quite possible that the itinerary returned will use the same connecting airport or a different airport.

So, say, I am going from DEL - SYD and then 5 day later will return from SYD - DEL.
My flights to SYD can be like this,

DEL -> CCU -> SIN -> SYD

My return flights to DEL can be completely different like this, SYD -> MEL -> SIN -> MAA -> DEL

Both scenarios are valid and working as expected.

regarding NO VALID FARE FOR INPUT CRITERIA, it is valid error and due to test data availability in PreProduction it can happen when there is no fares available for a particular itinerary.

  1. Need code taking into account ticketing after search and booking #89 (comment):

In Pricing response, there can be one, two or more than two AirPricingSolution and it is upto the user to select the price which the user wants to book the flight with. It is a very valid scenario and in most of the cases you will receive more than one AirPricingSolution for the same classOfService.

It is upto you which AirPricingSolution you would like to use to complete the booking.

Please find below the link with the details.

https://support.travelport.com/webhelp/uapi/uapi.htm#Air/Air_Pricing/Air_Pricing.htm%3FTocPath%3DAir%7CAir%2520Shopping%2520and%2520Booking%7CAir%2520Pricing%7C_____0

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 6, 2019

When i try to get price for each Air Itinerary for every iteration it is becoming too slow. Since AirItinerary list length may come upto 100 or more. is that the only way?

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

I would not recommend running AirPrice for all the AirSegment and itineraries. It should be run only on the selected segment. To get the price of all the itineraries, you can use LowFareSearch. Please find below the details. Thanks.

https://support.travelport.com/webhelp/uapi/uapi.htm#Air/Low_Fare_Shopping/Low_Fare_Shopping.htm%3FTocPath%3DAir%7CAir%2520Shopping%2520and%2520Booking%7CLow%2520Fare%2520Shopping%7C_____0

@AlbinGlobosoft
Copy link

Could you please take a look at this error . i got it from accessing SeatMapReq .
I checked it after getting AirSegment from the 'Low Fare Shopping' Result and i found that ClassOfService is null . Thanks.

com.travelport.service.air_v48_0.AirFaultMessage: AirSegment @ClassOfService is required.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.cxf.interceptor.ClientFaultConverter.processFaultDetail(ClientFaultConverter.java:183)
at org.apache.cxf.interceptor.ClientFaultConverter.handleMessage(ClientFaultConverter.java:83)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:70)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:35)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:826)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1693)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1570)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
at com.sun.proxy.$Proxy53.service(Unknown Source)
at test.app.support.test2.LowFareSearchTest.seatMapRequest(LowFareSearchTest.java:885)
at test.app.support.test2.LowFareSearchTest.main(LowFareSearchTest.java:221)
Exception in thread "main" java.lang.NullPointerException
at test.app.support.test2.LowFareSearchTest.main(LowFareSearchTest.java:223)

@vivekjyotipramanik
Copy link
Contributor

vivekjyotipramanik commented Aug 8, 2019

Hi AlbinGlobosoft,

The ClassOfService is same as BookingClass. You have to add the ClassOfService with the booking class you have selected, like Q, W, X, Y etc. In LowFareSearch it comes as <air:BookingCodeInfo BookingCounts="C9|D9|J9|Z9|Y9|A9|E9|M9|B9|K9|Q9|T9|V9|H9|G9|L9|S9|O9|N9|U9|P9"/>. This will show the classes available for booking. Now it is up to traveler which class the traveler wants to book. If the Traveler selects class Y, then AirPrice should be run using classOfService=Y and then SeatMap should be executed using the same ClassOfService. Thanks.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 19, 2019

I priced an itinerary from the LowFareSearchRsp using AirPriceReq. In the response i found ClassOfService for each AirSegment at AirItinerary/AirSegment . From the AirPriceRsp i requested for SeatMapReq by directly running java class i got result but from the web it takes too time for requesting . It takes about 3 min or sometimes read time out exception .

Could you please extend the trial days for the following credentials if it is going to be expired?
The credentials for PCC 3qv3 are:
uAPI PP Branch Code P7121154
uAPI PP User Name uAPI4282506692-e6da8830

Thanks.

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

It is not recommended to run SeatMap for all the AirSegments. The SeatMap should be run only for the selected AirSegments.

For expired credentials, unfortunately there is no way to extend expired or expiring credentials. Please request for a new set of trial credentials. Thanks.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 22, 2019

I selected seats and i tried to book it and i got following error

*** Unable to price itinerary:Key reference not found for AirSegment with key reference U8Bn9y8Q2BKAGXtBAAAAAA== inside SpecificSeatAssignment
com.travelport.service.universal_v48_0.AirFaultMessage: Key reference not found for AirSegment with key reference U8Bn9y8Q2BKAGXtBAAAAAA== inside SpecificSeatAssignment

Response xml:

<SOAP:Envelope
xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
SOAP:Body
SOAP:Fault
Server.System
Key reference not found for AirSegment with key reference LeMNry7Q2BKAZOcCDAAAAA== inside SpecificSeatAssignment

<common_v48_0:ErrorInfo
xmlns:common_v48_0="http://www.travelport.com/schema/common_v48_0">
<common_v48_0:Code>3003</common_v48_0:Code>
<common_v48_0:Service>PROVISIONINGSERVICE</common_v48_0:Service>
<common_v48_0:Type>System</common_v48_0:Type>
<common_v48_0:Description>Key reference not found for AirSegment with key reference LeMNry7Q2BKAZOcCDAAAAA== inside SpecificSeatAssignment</common_v48_0:Description>
<common_v48_0:TransactionId>BE4425D70A07643BCDD509ED3F9DED46</common_v48_0:TransactionId>
</common_v48_0:ErrorInfo>

</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>

I had added AirSegmentRef to SpecificSeatAssignment then it added to AirCreateReservationReq.
Thanks.

Request & Response here:
LogginInOut.txt

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 24, 2019

I get the following error when try to ticket from Universal Record Locator 'ESZ9DT' . When i searched for the universal recorder locator in travelport demo site i got it response . I have given it below(pic).

Credentials :
The credentials for PCC 3qv3 are:
uAPI PP Branch Code P7121154
uAPI PP User Name uAPI4282506692-e6da8830

com.travelport.service.air_v48_0.AirFaultMessage: Record locator not found.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.cxf.interceptor.ClientFaultConverter.processFaultDetail(ClientFaultConverter.java:183)
at org.apache.cxf.interceptor.ClientFaultConverter.handleMessage(ClientFaultConverter.java:83)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:70)
at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:35)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:826)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1693)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1570)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1371)
at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:56)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:228)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
at com.sun.proxy.$Proxy52.service(Unknown Source)
at test.app.support.test2.LowFareSearchOriginal.bookTicketing(LowFareSearchOriginal.java:1371)
at test.app.support.test2.LowFareSearchOriginal.main(LowFareSearchOriginal.java:311)

unirecordlocatir

/----------------------- Java Code --------
public static PortWrapper<UniversalRecordRetrieveServicePortType,UniversalRecordService> universalPort=new PortWrapper<UniversalRecordRetrieveServicePortType,UniversalRecordService>(universal,UniversalRecordRetrieveServicePortType.class,AIR_ENDPOINT);

	AirTicketingReq req=new AirTicketingReq();

	req.setAuthorizedBy("user");
	req.setBulkTicket(false);
	req.setReturnInfoOnFail(true);
	req.setTargetBranch(System.getProperty("travelport.targetBranch"));
	req.setTraceId(traceId);
	
	BillingPointOfSaleInfo posInfo = new BillingPointOfSaleInfo();
	posInfo.setOriginApplication("UAPI");
	req.setBillingPointOfSaleInfo(posInfo);
	
	AirReservationLocatorCode code=new AirReservationLocatorCode();
	code.setValue(universlRecord);
	req.setAirReservationLocatorCode(code);
	
	
	if(!airPricingInfoKey.equals("")) {
	 AirPricingInfoRef airPricingInfo=new AirPricingInfoRef();
	 airPricingInfo.setKey(airPricingInfoKey);
	 req.getAirPricingInfoRef().add(airPricingInfo);
	}
	

	
	try {
		WSDLService.airTicket.showXML(true);
	} catch (FileNotFoundException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	
	try {
		WSDLService.airTicket.get().service(req);
	} catch (com.travelport.service.air_v48_0.AirFaultMessage e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

/-----------------------

Putting BillingPointOfSaleInfo at first line even not helped.

Could you please also provide solution for seat assignment that i posted above?

Please help me.
Thanks.

Request & Response
LogginInOut.txt

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

Please find below the details regarding your questions. Thanks.

  1. **I selected seats and i tried to book it and i got following error

*** Unable to price itinerary:Key reference not found for AirSegment with key reference U8Bn9y8Q2BKAGXtBAAAAAA== inside SpecificSeatAssignment
com.travelport.service.universal_v48_0.AirFaultMessage: Key reference not found for AirSegment with key reference U8Bn9y8Q2BKAGXtBAAAAAA== inside SpecificSeatAssignment**

This needs proper AirSegmentRef key inside the request. Please find below the link to the sample requests and full SeatMap booking flow.

https://support.travelport.com/webhelp/uapi/uapi.htm#SampleWeb/Kelvin/Kel_Samples_Merchandising_Redone.htm%3FTocPath%3DSamples%7CXML%2520Samples%2520%7CAir%2520Samples%7CAir%2520Samples%7CAir%2520Workflows%7CAir%2520Merchandising%2520(Optional%2520Services)%2520Workflows%7C_____0

  1. I get the following error when try to ticket from Universal Record Locator 'ESZ9DT' . When i searched for the universal recorder locator in travelport demo site i got it response . I have given it below(pic).

In ticketing it requires AirReservationLocatorCode, not the UniversalLocator code. Please use AirReservationLocatorCode for ticketing. You will be able to see the AirReservationLocator code inside the AirReservation tag in AirCreateReservationRsp. Please find below the link with the details.

https://support.travelport.com/webhelp/uapi/uapi.htm#SampleWeb/Individual_Sample_Pages/104-1G_LFS_OneStopDirectFlights.htm%3FTocPath%3DAir%7CAir%2520Samples%7CAir%2520Workflows%7CGalileo%2520(1G)%2520Workflows%7C_____3

https://support.travelport.com/webhelp/uapi/uapi.htm#Air/Air_Ticketing/Requesting_Air_Tickets.htm%3FTocPath%3DAir%7CAir%2520Shopping%2520and%2520Booking%7CAir%2520Ticketing%2520(Document%2520Production)%7C_____1

@AlbinGlobosoft
Copy link

#1) I'am using carrier as QF so i think flights in QF only available in LowFareSearchRsp . I changed carrier to DL from QF then i requested for lowFareSearch and i got the error "NO AVAILABILITY FOR THIS REQUEST". i tried adding DL , A3 and AZ to permittedCarriers.getCarrier().add(carrier) collection in AirReq class. yet i'am getting only QF carriers flights.
is there any request for getting all carrier flights?

#2) I tried booking selected seats along with flight booking . I got the response

LogginInOut.txt

#3) I checked the link that you provided for full SeatMap booking flow

https://support.travelport.com/webhelp/uapi/uapi.htm#SampleWeb/Kelvin/Kel_Samples_Merchandising_Redone.htm%3FTocPath%3DSamples%7CXML%2520Samples%2520%7CAir%2520Samples%7CAir%2520Samples%7CAir%2520Workflows%7CAir%2520Merchandising%2520(Optional%2520Services)%2520Workflows%7C_____0

How can i use this link to request for seat reservation since it's showing different suppliers lilke DL, A3 , AZ etc... Because i'am only getting QF carrier flights only. if i change it some other carrier it shows "NO AVAILABILITY FOR THIS REQUEST". I just need to reserve selected seats only.

It would be very helpful if you give me a solution.
Thanks.

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

Please find below the details. Thanks.

#1) I'am using carrier as QF so i think flights in QF only available in LowFareSearchRsp . I changed carrier to DL from QF then i requested for lowFareSearch and i got the error "NO AVAILABILITY FOR THIS REQUEST". i tried adding DL , A3 and AZ to permittedCarriers.getCarrier().add(carrier) collection in AirReq class. yet i'am getting only QF carriers flights.
is there any request for getting all carrier flights?

Not all carriers are available in all Markets, it depends on origin and destination which carrier will be returned. If you are trying SYD-MEL it is possible that you would not find DL, A3 or AZ. In that case, the error message "NO AVAILABILITY FOR THIS REQUEST" is a valid error message. Try DEN-SFO or ATL-SFO for DL flights. If you don't use Permitted or Preferred Carrier modifiers, it will automatically return all the available carrier's flights in the response.

#2) I tried booking selected seats along with flight booking . I got the response

LogginInOut.txt

PreReservedSeatAssignment is available for ACH carriers. For 1G, you have to use the AirMerchandisingFlow.

https://support.travelport.com/webhelp/uapi/uapi.htm#Air/Air_Booking/Create_Air_Booking/Creating_Air_Bookings.htm?Highlight=PreReservedSeatAssignment

https://support.travelport.com/webhelp/uapi/uapi.htm#Standalone_Merchandising/Air_Merchandising.htm

#3) I checked the link that you provided for full SeatMap booking flow

https://support.travelport.com/webhelp/uapi/uapi.htm#SampleWeb/Kelvin/Kel_Samples_Merchandising_Redone.htm%3FTocPath%3DSamples%7CXML%2520Samples%2520%7CAir%2520Samples%7CAir%2520Samples%7CAir%2520Workflows%7CAir%2520Merchandising%2520(Optional%2520Services)%2520Workflows%7C_____0

How can i use this link to request for seat reservation since it's showing different suppliers lilke DL, A3 , AZ etc... Because i'am only getting QF carrier flights only. if i change it some other carrier it shows "NO AVAILABILITY FOR THIS REQUEST". I just need to reserve selected seats only.

You can use the flow for QF seats as well. The link I shared are actually samples and based on the carrier, you have to create the request accordingly. The request structure is same for all ATPCO carriers.

https://support.travelport.com/webhelp/uapi/uapi.htm#Standalone_Merchandising/Air_Merchandising.htm

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Aug 28, 2019

I got error 'User is not authorized' while reserving seat with AirMerchandisingFulfillmentReq .

AirMerchandisingFulfillmentReq-Res.txt

It would be grateful if you could go through this code ( given in zip) .
The credentials for PCC 3qv3 are:
uAPI PP Branch Code P7121154
uAPI PP User Name: uAPI4282506692-e6da8830

support.zip

#1) How do i know that whether a seat is free or paid. if i'am right i think paid seat price attribute will not be null. Unfortunately i didn't see any paid seat. I tried displaying seat price but it was all null.

#2) Could you please show me ProviderLocaterCode(PNR) and CarrierLocatorCode from the following response since it is needed for AirMerchandisingFulfillmentReq.

AirCreateReservationReq.txt

#3) Could you please give me sample XML request and response for in-flight meal?

#4) When i tried to LowFareSearch for one-way trip i got following error "User is not authorized for one way shop. " . Do i need any permission granted from travelport?
Here is the req & res.

OneWay-LowFareSearch.txt

#5) Could you please explain what if no seat is selected and booked a flight how can i get its seat no?

Thanks.

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

Please find below details to your question. Thanks.

  1. AirMerchandisingFulfillmentReq-Res.txt

It would be grateful if you could go through this code ( given in zip) .
The credentials for PCC 3qv3 are:
uAPI PP Branch Code P7121154
uAPI PP User Name: uAPI4282506692-e6da8830

support.zip

If you are using trial credentials you might not be able to use merchandising transactions. Merchandising transactions need provisioning and not available using trial credentials. If you are using preproduction credentials, please contact your Travelport Account Manager and your Travelport Account Manager will be able to provide you access to merchandising transactions.

#1) How do i know that whether a seat is free or paid. if i'am right i think paid seat price attribute will not be null. Unfortunately i didn't see any paid seat. I tried displaying seat price but it was all null.

The PaidSeat=True attribute will show up in case seat is paid.

#2) Could you please show me ProviderLocaterCode(PNR) and CarrierLocatorCode from the following response since it is needed for AirMerchandisingFulfillmentReq.

AirCreateReservationReq.txt

"air:AirReservation LocatorCode="DP77N9" this is the AirReservationLocatorCode.
"common_v48_0:SupplierLocator SupplierCode="QF" SupplierLocatorCode="J8R7GW"" : this is the carrier locatorCode.

#3) Could you please give me sample XML request and response for in-flight meal?

Link to the end to end flow
https://support.travelport.com/webhelp/uapi/uapi.htm#SampleWeb/Individual_Sample_Pages/044-ACH_Air_LFS-AC_OptSvce-Meals.htm?Highlight=Meal

#4) When i tried to LowFareSearch for one-way trip i got following error "User is not authorized for one way shop. " . Do i need any permission granted from travelport?
Here is the req & res.

OneWay-LowFareSearch.txt

you are using the below modifier which is a specially provisioned operation. You can do normal OneWayShop, but if you are using the modifier you need permission.

<ns2:AirPricingModifiers OneWayShop="true"/>

#5) Could you please explain what if no seat is selected and booked a flight how can i get its seat no?

In that case, the traveler can get the Seat Number during boarding process. If you book a flight without seat, seat is assigned during boarding process.

@AlbinGlobosoft
Copy link

AlbinGlobosoft commented Sep 3, 2019

#4) Above question , Did you mean 'lowFareSearch' as normal onewayshop (i need fair driven) ?

@vivekjyotipramanik
Copy link
Contributor

Hi AlbinGlobosoft,

yes, I meant by One Way LowFareSearch. For <ns2:AirPricingModifiers OneWayShop="true"/>, you need to have a permission. Please reach out to your Travelport Account Manager to provision your account for OneWayShop modifier. Thanks.

https://support.travelport.com/webhelp/uapi/uapi.htm#Air/One-Way/Low_Fare_Shopping_OW_NZ_OZ.htm?Highlight=OneWayShop

@vivekjyotipramanik
Copy link
Contributor

Closing this thread. Please create a new issue for any other questions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants