Improve handling of the purchase call

Filled out much more of the returned transaction.  Improved the testing
around purchase a bunch.  Started removing some duplication in the
tests.