We use Datacash and Cybersource depending on the card provider. Both seem to have decent API's, Cybersource being the more sophisticated of the two. Datacash seem to have a new Perl API out, they also provide a card validation module. Cybersource has some useful testing tools (test servers with web based transaction reporting etc).
HtH ... "Patience will achieve more than force." --Edmund Burke