Travelport / travelport-uapi-tutorial

The travelport-uapi-tutorial is a Java project for Universal API that will help you connect and code a standard workflow including Air and Hotel.
45 stars 34 forks source link

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

Closed jadchahine closed 5 years ago

jadchahine commented 8 years ago

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

AlbinGlobosoft commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

Hi AlbinGlobosoft,

Please find below the details regarding your questions. Thanks.

  1. https://github.com/Travelport/travelport-uapi-tutorial/issues/89#issuecomment-517548083:

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. https://github.com/Travelport/travelport-uapi-tutorial/issues/89#issuecomment-517896624 :

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. https://github.com/Travelport/travelport-uapi-tutorial/issues/89#issuecomment-518135790:

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 . 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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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/">

Server.System Key reference not found for AirSegment with key reference LeMNry7Q2BKAZOcCDAAAAA== inside SpecificSeatAssignment 3003 PROVISIONINGSERVICE System Key reference not found for AirSegment with key reference LeMNry7Q2BKAZOcCDAAAAA== inside SpecificSeatAssignment BE4425D70A07643BCDD509ED3F9DED46 ** I had added AirSegmentRef to SpecificSeatAssignment then it added to AirCreateReservationReq. Thanks. Request & Response here: [LogginInOut.txt](https://github.com/Travelport/travelport-uapi-tutorial/files/3530280/LogginInOut.txt)
AlbinGlobosoft commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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.

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 commented 5 years ago

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

vivekjyotipramanik commented 5 years ago

Hi AlbinGlobosoft,

yes, I meant by One Way LowFareSearch. For , 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 commented 5 years ago

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