The uc_civicrm module for the Drupal Ubercart shopping cart module integrates Ubercart with CiviCRM. It has been tested with CiviCRM 1.9, and a patch has been provided at the link below which fixes it for 2.0. It is compatible with Ubercart 1.3 as well.
When a customer buys something from the Ubercart store, the name and address information they provide is added to the CiviCRM contact database. If the customer has a simple contact record generated by synching CiviCRM from the Drupal user table, that record is updated with the new information. If no contact record exists, one is created.
Then the new or updated contact is added to the 'Purchasers' group, which is created if necessary. An activity history record of type 'Purchase' is added to the contact's history, and the 'Purchases' tab on the contact's dashboard entry is populated with a link to the contact's order history in Ubercart.
You can download uc_civicrm here