Wednesday, July 07, 2010

Online Airline Reservations for Travel in India

We're going to be in India soon, and going to travel by air while there, so I tried to book airline tickets via a couple of sites. The gory details of my experience.

Kingfisher Airlines

I tried the web site of Kingfisher Airlines first. I've booked a ticket for myself from their web site before and it all went fairly well. I only met with frustration while trying to pay them: something with their system was broken enough to not accept payment made with my favorite credit card, despite my clarifying with the credit card company that there wasn't any issue with my account (holds, etc.). I finally had to call Kingfisher customer service in India and make a booking using another credit card (even on the phone, they wouldn't accept my favorite card). I was bewildered why this should be and remain convinced there is an issue at Kingfisher's end (either at the web site, or in the back end card verification code) that is the root of this problem.

However, they've been a really good airline all the times I've flown with them (hot meals, multiple channels of TV for all, etc.). Plus, they seemed to have taken a lot of pains to maintain club membership (they FedEx'ed my Kingfisher statement all the way to the USA!) and had recently sent me email with a discount coupon for summer airline bookings. And it's been a while since I made my last booking. So I had to try their site again hoping that all previously encountered payment issues would have been fixed by this time.

In order to use their emailed coupon, I reasoned that I had to sign into my Kingfisher account. But, I'd forgotten my password. So I thought I'd request a password reset and try to set up a new one. That attempt lead me to a screen where I was asked a secret question. Except, they want me to enter that secret question! Imagine the craziness of this scheme: you usually set up a secret question and answer so that the system can pose that question to verify that you are indeed the person requesting a password reset. The Kingfisher system expects you to remember what that secret question was and to enter the question along with the answer so that you can reset the password! I'm sure this is a really secure mechanism, but it largely defeats the very purpose it was built for: a person forgetting his/her password is unlikely to remember the secret question they entered for themselves (especially given the multitude of secret questions one may have set up at various sites where one doesn't have to remember the questions :-)). A call to Kingfisher customer support ensued, and they send me an email with the reset password.

I managed to log into my Kingfisher account and try to apply our coupon. No luck. It just spat out a cryptic "I don't know this" message and wouldn't accept the coupon. So, after some trials, I gave up on the coupon and decided I'd just book the darn tickets and be done with that.

I entered the flight specifications, basic passenger counts, and selected among the fares/flights offered. Despite my clear mention of an infant traveling with us, the fare that came up didn't seem to include the usual nominal charge for an infant. Yet, the passenger counts seemed right and seemed to include the infant, so I had to assume everything was all right. It took me to a screen to enter more detailed passenger information. All information entered, I hit the submit button... and it said (paraphrasing) "Sorry, we couldn't book, try again from the beginning"! It's not clear why this error occurred. It didn't look like the session timed out, but the lack of an infant fare seemed suspicious. So I gave them the benefit of the doubt: I'm sure the fare was wrongly quoted at the first stage, and surmised that this somehow tripped some validity check at the last stage of the booking process.

So I tried again. This time, the fare seemed to come out as expected, with a nominal fee for the infant. We seemed to be on the right track. In addition, the partner pointed out a ticking clock counting down the time left in the session, so I took care to ensure I typed stuff in fast enough (the session time of 15 minutes is more than adequate). I chose the flight, entered the passenger information, and it all went through. So on to the payment and I attempted to use my favorite card again. It brought me to a card verification screen, and I happened to remember my verification password correctly (since I'd just used it at a shopping site), the verification system seemed happy, and.... back at the Kingfisher site with a cryptic message to the effect that there was an error with the payment (not that the verification failed, but some other error). And that I should start again.

I'd had enough.

MakeMyTrip

I'd seen ads for MakeMyTrip ever since my samachar.com days where display ads for the travel site touted cheap fares to India. Plus, I'd heard a classmate from college (who was also a former colleague) had joined the company at the highest levels. So I thought now was as good a time as any to give this site a shot.

The site was a breeze to use overall. I entered the flight specifications and passenger counts, got a list of flights from a variety of airlines, a Kayak-like slide bar to narrow down the flight times, and an option to checkout without creating an account.

Along with the chosen flight, I noticed a rather interesting option for car reservations for pick up to the airport at the source and for drop off from the airport at the destination and decided to try that and make things easy on our relatives. So I entered the address from which we needed to be picked up... and the site gave me a cryptic error about using disallowed special characters. No information was provided about what the offending special character is, just that I am using one that I shouldn't be. So I remove the "#" in front of the house number. No avail. Removed all the commas. No cigar. I was at a loss as to what to do, and was about to give up on the pick and drop off option and just book the flight.

Then I thought, this must be Javascript code that I can look at by viewing the source for the web page, so I should at least be able to see where this error is coming from and although I do not officially know Javascript, most languages are close enough so I should hopefully be able to debug what's wrong. After a bit of debugging, I realize the code hasn't accounted for the use of an apostrophe in the address that I was entering ("Officers' Colony").

So, feeling all duty-bound to inform my classmate, I open up Facebook, locate his name among my friends, and fire off an email, renewing contact for the first time in a while. Also, since I wasted time on debugging this (or maybe I was just showing off?), I also informed him of the bug, while appreciating the pick-up/drop-off feature.

I came back to the reservation from the email, dropped the apostrophe from my pickup address and continued to the section dealing with the drop-off address at the destination. I entered the address and submitted... error again! This time, it says that the address is more than 50 characters long. Hmmm, I wonder, the pick-up address I entered was way more than 50 characters and it didn't complain... why the carping now? But at least it's clear what I should do to fix the problem. I truncate the address (drop the city name), submit by adding the drop off car option, and all looks fine. I click the fast booking without account creation method and... session timed out!

In retrospect, it's reasonable that the session should have timed out. But it seems like the timeout should have occurred sometime when I was sending off that good samaritan email to the classmate. The site had no ticking clock (a la the Kingfisher site) so the customer could be made aware of the danger of a timeout, nor did it prevent me from continuing to enter stuff at the page way after the timeout, waiting for me to instead hit the "checkout" button to take action. Sloppier design than I'd like, but I'm willing to give it another go.

So, I re-entered all the information, carefully ignoring the pot-holes from the previous attempt. I was through to the page to add personal and passenger details. The personal details seemed to require a local cell phone number. The pick-up option had mentioned that information regarding the driver who will be doing the pick up would be SMS-ed to this cellphone. However, I find this popular mechanism of disseminating information, though really convenient for Indians in India, extremely frustrating as someone without a personal India cell number. I've been similarly frustrated at the Bangalore and Hyderabad airports before where access to the airport's Wireless Internet connection can only be obtained via a code that is SMS-ed to you :-(. For our purpose here though, I asked the partner for her sister's number, entered it along with the other passenger information and went on to the payment stage.

The partner then decided that we can use another cell number in India, one that we can possibly keep with us for the duration of our stay there. But I hesitate to hit the back button to go back to the previous stage (this is explicitly prohibited at a lot of such sites, although I don't recall seeing such a warning on this one). There seems to be a helpful panel with numbers for the various stages of the booking process on top of my screen, and I thought I should be able to click one of them to go back to the appropriate stage. No such luck. None of the upper panel consists of click-able links :-(. So I give up and go through with the booking with the cell number as previously entered.

I use the same card as I used with Kingfisher, with the same verification process, and everything goes through this time! The booking is made and we have a confirmation number!

There was one tiny surprise though. I got an email from MakeMyTrip that an account has been created for me, with a temporary password. While I'm wasn't too miffed about this, it did startle me a bit because I thought that the "checkout without creating an account" option was not just for speed, but also potentially for those who didn't want to have an account forever with MakeMyTrip. As it stands, it seems as if all the faster option does is save you the trouble of picking a password (of course, they could have a more convoluted account creation process in the light of which I would have been more grateful for this short cut, but I think that that hardly qualifies as a feature then :-)).

Anyway, I went back in with this newly created account and booked another flight, sailing through all the steps with ease this time, and adding the new cell number. I got the booking confirmations for all the flights almost instantaneously (faster even than Orbitz) and got the E-tickets soon thereafter.

Overall, despite the relatively minor glitches, MakeMyTrip was much easier to use than the Kingfisher airlines site and I'll definitely use it again. I do hope though, that they work on polishing some of my perceived rough edges.

A quick comment on Javascript: It's interesting that this isn't the first time I've run into fairly fundamental-seeming Javascript issues with Indian sites. And, all the times I've encountered such issues, the exception handling mechanisms seem to completely lack grace, neither informing the user helpfully as to what they may have done wrong, nor making an attempt to save state to be reused beyond the correction. The other time I encountered this was at the Indian Consulate web site, where one of their forms required online entry of information, generating a filled PDF form as a result. The form works only in IE, and the consulate did warn of that. But finding it hard to believe that in this day and age, someone could build a browser specific page that other browsers couldn't handle, I had recklessly forged ahead on Firefox. Turns out, what the thing does is that for all non-IE browsers, it eats the last character in a date on the form, reducing the 4-digit year to a 3-digit number and triggering other error checking exceptions as a result. It wasn't clear to me why this error occurred---I can only surmise that the corresponding routine is either not supported in other browsers, or implemented uniquely in IE. Still, this is something a reasonable programmer should be easily expected to catch and fix as part of testing their code, instead of building a largely unnecessary browser dependency. As I said, "rough edges" :-).

Addendum: the classmate responded, ignored the bug report, thanked me for liking the feature, and promised future conversation if we meet. I thought, clearly, this is the stuff that marks leaders: they can look (only?) beyond the problems ;-). It also brought to mind a saying my colleague often quotes: no good deed ever goes unpunished :-).