Booking On Hold
With airline suppliers it is possible to put the booking on hold and finish the payment later via the Travelfusion XML API.
This functionality is not currently available on all suppliers. However, for suppliers that do support it, the command and syntax of the requests and responses are almost identical to that of the normal booking flow.
In order to indicate the Booking-On-Hold feature is available there is a special CustomSupplierParameter called BookingOnHold found in ProcessDetails response.
Step 1: Retrieving booking-on-hold details.
If booking-on-hold is available for the selected result, then the BookingOnHold parameter will be found in the RequiredParameterList:
RequiredParameterList XML example
Additionally, in the SupplierInfoList a remark will be found, showing the duration before this booking-on-hold expires:
SupplierInfoList XML example
Step 2: Requesting booking-on-hold.
In order to request booking-on-hold, the BookingOnHold parameter needs to be sent in the ProcessTerms request with the boolean value 'y' or 'true', in the similar way that other CustomSupplierParameter's are submitted:
CustomSupplierParameterList XML example
Check here to find more details on how to handle the CustomSupplierParameter's.
StartBooking and CheckBooking
The only difference is related to status. The successful holding booking process sets the booking status as 'BookingOnHold'.
StartBooking and CheckBooking XML example
In the GetBookingDetails response, the holding expiration timestamp in the time zone UTC+00:00, will be found in DateOfOnHoldExpiration element.
GetBookingDetails response XML example
The none successful holding booking process can set the booking status as 'Failed' or 'Unconfirmed' (more details can be found here). In this case of 'Failed', the booking is not created and put on-hold on the supplier side. In the case of 'Unconfirmed', TravelFusion needs to resolve the status and check if the booking can be set as 'BookingOnHold' or 'Failed'.
Step 3: Confirming or cancelling booking-on-hold.
In order to commit the booking and proceed with the payment, the CommitBooking needs to be sent.
The successful commit of the booking-on-hold process sets the booking status as 'Succeeded'.
The BillingDetails needs to be the same as in the ProcessTerms request.
CommitBooking request XML example
CommitBooking response XML example
The none successful commit process can set the booking status as 'Failed' or 'Unconfirmed' (more details can be found here). In this case of 'Failed', the booking remains on-hold or is not possible to be committed on the supplier side. In the case of 'Unconfirmed', TravelFusion needs to resolve the status and check if the booking can be set as 'Succeeded' or 'Failed'.
The booking-on-hold with the status 'Failed' can still be committed or canceled again if it is possible to do so.
StartBookingCancelPlane and CheckBookingCancelPlane
This request will cancel bookings with status 'BookingOnHold' for which users do not wish to proceed with a commit or the booking-on-hold expired.
The successful cancellation of the booking-on-hold process sets the booking status as 'CancelSucceeded'.
StartBookingCancelPlane and CheckBookingCancelPlane XML example
The none successful cancellation process can set the booking status as 'CancelFailed' or 'CancelUnconfirmed'. In this case of 'CancelFailed', the booking remains on-hold or is not possible to be cancelled on the supplier side. In the case of 'CancelUnconfirmed', TravelFusion needs to resolve the status and check if the booking is 'CancelSucceeded' is or 'CancelFailed'.
The booking-on-hold with the status 'CancelFailed' can still be committed or cancelled again if it is possible to do so.
It is the responsibility of the user of the API to cancel these bookings because TravelFusion cannot guarantee that they will be automatically cancelled by the airline and also in order to release the seat.