What is the GetCredits() method I see in the code? That appears to be the issue since it isn't adding the handling charge, which is where additional charges are added. I'm wondering if that is canceling the $5 donation.
I think because of the custom coding added to the cart I'd need to do this in a premier support ticket. I'd have to investigate your credit system and custom code and see if that is the issue.
The solution is either to correct the problem with the credits, or to add a separate line item by doing some further custom coding so that the donation appears in the cart directly in paypal.