Use Magento. The community edition is free and is immensely powerful - it's the defacto standard ecommerce platform for many retailers.
Alternatively use Shopify. Great platform, but hosted and charges monthly fee + % transaction fee.
Do not charge per hour, this will only end in tears. The project will take much longer than you think it will and you will either end up not finishing the project (client runs out of money and gets pissed that its gone way over budget) or finishing it but barely breaking even for a large amount of work (and being bitter as a result).
Charge per project (based on an hourly rate X estimate of time it will take) BUT SPEC THE PROJECT OUT IN DETAIL.
Spend a lot of time initially building a list of every single page on the website and every single feature that the website will have (right down to the copyright page, privacy policy page, etc). Get the client to sign off on the final list of pages and functionality.
Be clear as to how many design revisions and initial concepts the client gets. Not doing this will mean the client could keep changing and tweaking the design. Get the client to sign off the design.
Get the client to agree to provide a signed off list of all content for the site (content for pages, a full list of all products, product images, etc). They won't want to do this as it's boring and takes time but they have to as you can't do it. Make sure they are aware this is their job.
Calculate how long it will take you to create the design concepts, revisions, install and setup ecommerce platform, populate site with all the content, product, images, etc, and deploy the site to the live server. Multiply this figure by your hourly/daily/whatever rate to come up with a price.
Take this number and double it (Projects *always* seem easier when speccing them out). BUT aim to come in under budget. If you've estimated correctly, your client will be ecstatic. If you havent and the project takes twice as long as you thought, you're covered financially and the client doesnt get a nasty surprise when the project goes overbudget.
Oh and make it clear to the client that if the project deviates from the signed off spec, the costs will change accordingly. Also lay down your hour/day rate at the start and let the client know that once completed this is the rate for any additional support or functionality. They're happy as they know what to expect (no surprises) and you're happy because you don't end up supporting the website for the rest of your life for free!! (Very important). Alternatively set them up with a maintenance contract (i.e. $x month contract gives you x days you will work on the website, improve it, handle support, etc).
Hope that helps!