Good question, and the answer is "it depends".
I will say this, after spending the good portion of February working for a client to evaluate and analyze several Open Source and License based php shopping carts, I've come to the conclusion that there are very VERY few carts that will be any client's needs right out of the box.
Whether your talking about how to handle attributes, specific checkout flow, or some other aspect, each client has different needs and therefor each cart on the market will have different benefits and different drawbacks. So, from my perspective, you have 2 options...
1) You can use an existing cart application as a "base" and customize it. I'd suggest that you take a week or so to play around with some of the more popular ones to get a feel for what it can and can't do out of the box. Then settle on one and customize it. Keeping in mind that customization can take quite some time. Keep an keen eye on the code when you evaluate. Is it documented? Easy to understand / commented / well written? Those are factors that will effect how easy it is to customize.
2) Build a custom solution from scratch. There are lots of proven code snippets out there to handle the actual credit card transactions for you. Almost every merchant processor has sample code to start with. So that's not going to be the big issue. The big issue here is time. It's usually (though not always) going to take longer to build a custom solution. The benefits of this though are that you and the client get EXACTLY the system you want. There's no extra fluff that is part of a bundled product that the client needs to ignore and the UI can better match the clients expectations.
As far as what to charge, I think there are two approaches to look at. You could approach this from an "all I want is to be fairly compensated" approach and ask for an hourly rate. If you've got 3-5+ years of solid PHP experience in similar projects (CRM, e-Commerce, CMS, etc) then it's not unheard of to ask for $50 - $100+ / hour for this type of work. The later approach is to look at this from a value-added aspect. Do some financial analysis on the client, determine potential revenue from the site, and complete a full ROI (Return on Investment) report. Then charge such that the ROI is acheived within 3 months or some other reasonable time period. This can potentially make the cost of your project very high, and very lucrative. It is not immoral to take this approach either. Obviously, if you can legitimately say that the client will generate a revenue stream of $25k profit / month with the site - asking for $50k for the project isn't out of the question.
Hope this helps.