Using Commerce Donate
Use the Commerce Donate module to allow for donations for Drupal sites using Drupal Commerce. Excerpt from its project page:
provides a donation line item type along with a donation product and product display.
In addition to being able to create a donation product, this module also provides a donation checkout pane, allowing customers to add a donation to their order as part of the checkout process.
Refer to this tutorial/screencast for a great introduction to this module.
Using Commerce Customizable Products
Donations using Drupal Commerce details another approach, based on using Drupal Commerce also, together with the Commerce Customizable Products module. Excerpt from its project page:
Drupal Commerce allows you to sell customizable products that require customer input when added to the cart. Use cases for this functionality include:
Business cards that require contact information and a logo upload.
Event registrations that require attendee information.
Donations the allow the customer to specify a donation amount.
The core Line Item module accommodates these scenarios by letting you add any number of fields to the Product line item type and expose them to the Add to Cart form. However, sites that sell multiple types of customizable products or a mixture of customizable and non-customizable products need to define multiple line item types to handle the different configurations of fields. That's where this Customizable Products module comes in!
Refer to the Commerce Customizable Products screencast for a video walkthrough.
Displaying top Donators
Some reporting related modules to pick from:
Field for donators to leave a message
Implement that field in a way that best fits your needs, e.g. via a field related to some content type.
Then use the Field Permissions and Rules modules to grant access to a donator after they completed the donation process.
For more details about this, refer to my answer to the question "How to change fields permission using some action in the Rules module?".