Authorize.net is reasonably priced and has an excellent developer API. Plus there are a lot of libraries out there that handle the interaction with their API.
I recommend contacting your bank to find out if they can get you setup with an Authorize.net merchant account. Then they handle setting it up and making sure the money gets put directly in your account. The bank also handles all the authorize.net fees so you don't have to deal with authorize.net directly.
I know Wells Fargo and Chase both use Authorize.net from personal experience, you'll need to contact your bank though to find out more.