Can't really pick a best. The reason why I write that recurring billing is hard is because the business cases vary so widely, so the answer is usually: It depends (on your location, userbase, what you're selling...). I started out writing a couple of integrations and you think "hey, why are there so many processors, that's unnecessary!". And then you do a couple dozen and you start to see the picture.
I CAN definitely tell you how to spot the worst, though. In general, when you read the documentation and get the creeping feeling like the API was written for one big client (and their weird business logic) and then they just packaged it up and resold it, badly.
Funnily enough, Google Checkout seemed to be like that to me - for instance, usually you have two things to specify: Time unit and amount of your billing cycle, like "recur every 4 days". Google Checkout didn't do that, no no, much too simple. They only had a time unit - one of: daily, weekly, semi_monthly, monthly, every_two_months, quarterly, yearly.
And that's not the most complex "let us structure time awkwardly" example I have seen over the years. Other services only allow for "days" as time unit and you have to figure out a way to do monthly billing that doesn't just keep running away. My favorite so far was the one where it's basically "day, week, month, quarter, half-year and year". The values for that? D, W, M, Q, 6, Y. Can't make this stuff up.
Other red flags: No English documentation, no public documentation, documentation that specifies variables without data types, unsafe notification functions (not even a shared secret) or downright exotic "security" (I have seen black-box .dll files distributed as security callbacks... oh the horror)... I could go on.