|Presumably, you have the items from your store set up in the database with some kind of identifier/key. All of the pricing and descriptive information should be stored there, so your shopping cart will just need to store the item id for reference.
Then, you should decide how long you want the shopping cart to last. If you use sessions, as previously suggested, it will only last until the browser is closed. You might also want to have a longer-term cart, so that if the user is interrupted for some reason the cart will remain full for a few days.
The format of the cart table or array would be pretty simple. One field would hold the user's id (unnecessary if you're just using cookies or sessions, but necessary if you're using a database table). The second field would contain the item id. You could then include a third field for quantity, or just duplicate quantities in the table rows. If you duplicate the quantities, you would just need to use GROUPBY and COUNT to get the proper quantity for each item.
If you join the cart table to the item catalogue table, you'll get the prices. Then you can add everything up, get a sub-total, put in whatever formula you want for shipping, and voila you've got a total. The harder part, methinks, is implementing that with a payment system that is secure.
No. They don't process payments for free. If you have a personal account, paypal allows to receive payments ONLY through paypal transfer. If you want to process payment online, there is a fixed charge + percentage charges (I guess it is around 30 cents + 3%)