For the cart, make sure you validate any options, etc from the DB when adding to the cart and checking out. DO NOT use form fields for price. It warrants repeating. Validate everything at Checkout.
As far as storing CC don't longer than you have to. You're better off with setting up a CC server for it. If not, store it as a GPG encrypted chunk. (There's a nice tie module for this.) Make sure the secret key is off of the server.
Depending on how you need to access the data after the order, you could store the non-payment info with a different key that could be read by the server.
update
Also, see
this node for ideas.
-Lee
"To be civilized is to deny one's nature."