Bueno, primero todo la compra personalmente uso una tabla temporal en la cual relaciono al usuario con la session que tiene, luego voy llenando los items en la tabla temporal, ahora cuando finaliza su compra paso los detalles de la compra a la tabla oficial y la relaciono al ID del usuario osea relaciono al usuario con la order y la orden con los detalles.
Lo del pago bueno la mayor parte de empresas dedicadas a e-Commerce dejan esta responsabilidad a manos de VeriSing, PayPal, etc. Estas son las que realizan el cobro del dinero y demas transacciones de la tarjeta de credito. La forma de comunicacion con estas empresas es obiamente XML, pero ellos te proporcionan mas informacion al respecto de como puedes comunicar tu sistema con el de ellos.
Esito seria