Why not use a light version of registration anyway? If you need to capture that information anyway it seems simpler. If they return and want to donate more you can match them up with the old entry using cc# or a hash of the cc# since that information is presumably as secret as their password.
The information needed for a credit card transaction is plenty to create a user.