I would do something with the User Points module. Here is User Points for
Ubercart
http://drupal.org/project/userpoints_ubercart - but it only has a Drupal 5
branch.
[Sohodojo Jim replies:] I've used the 6.x development branch of this module a number of times with no problems on Drupal 6 sites. In fact, it's easily and flexibly configured without programming for site-specific theming and 'rate computations', etc. And when needed, it is rather easily tweaked via hooks for site-specific requirements.
Here is a list of other User Point extension module
http://drupal.org/project/userpoints_contrib
to help you get the test of the way.