Is it better to have temporary tables or have records in tables with a temp state for a cart purchase?
===

I'm trying to create a cart purchase data model.  There are various things a user can purchase such as credit and products (each will have a separate set of attributes). On successful completion of a transaction, each item purchase will be stored in a table (say credits, and purchases respectively). 

What i wanted to know is while the user is in a transaction which approach should I follow (approach listed with pros and cons)

store the attributes the user selects for the items in temporary tables (something like temp_credit_purchases and temp_product_purchases) and then insert the record in the actual tables (credits and purchases)

Pros

 - all the unsuccessful transactions can be deleted off and there will not be a lot of missing auto-incremented ids in the actual table

Cons 

 - 2 inserts and 1 select - inserts are heavier than updates (which would happen in the 2nd case)

insert the data in the actual table with a temp state

Pros

 - more optimal (only 1 insert and one update)

Cons

 - there would be a lot of unnecessary rows in the table which would be used sometime for querying in other user facing modules (which might make the queries slower).

Although I'm able to list the pros and cons of each approach, I'm not able to take a definitive decision. Pls help me think through this?  