Using the donate functionality may be the easiest way to do this as far as having a single button to pay the amount the user wants.
You can possible get this done another way with the cart itself by storing the items price in one column, but make the price column a user entered value. This would allow the user to choose how much to pay on the item.
Either way you go with you will need to keep track of the payments made against the total price. As for paying with the credit card on PayPal you will need to click on the link for continue checkout in the message on the screen.