We have used the Troi URL PLugin for this and it works very well - my client does 20 or 30 daily. We used the http: POST to connect with the payment gateway - trypically takes about 3 or 4 seconds to process.
They do not use a card reader but I have tested one for another client. USB reader and we drop the cursor into a text field - you get back a one line response with card holder name, CC# and expiry that is easily parsed and passed the the plugin.
"Behind every great man is a woman rolling her eyes." --- Jim Carrey