Chargify seems to be on the right path. I do think they could use some work on their flexibility though.
Holding credit card data is always a bitch. Paypal website payments pro's API lets you issue coupons and discounts that are baked into the initial signup. However midcycle its tough to issue a discount.
They also have some bugs in their API with their callback urls etc.