I'd think I have to mention payum. That may look a bit complicated at a first glance but give it a try!
It has well thought design, solves many common payment related issues (storing and securing data, notifications, framework agnostic). Also it supports many payments out of the box (each shipped with a doc) and provide integration with all favorite frameworks.