Hm, making a donation % show up calculated in the cart isn't something we could do quickly if it's even practical to implement at all, but your other solutions can work right now.
If you create a zero-discount code for buyers to enter, then that code would be reported with the order data. If you have nonprofits join your affiliate program, then they would earn commission on any sales referred via their affiliate links, which you would pay out every month along with your other affiliates' commissions.
As another idea, you could create a product using Variations to provide a list of causes, so buyers could select their cause and click Add to Cart for that "product" to specify where they'd want a % out of their checkout payment to be donated.
We are also planning to eventually add a feature where you can dictate that all sales of a particular product should always grant a flat commission amount to some affiliate or PayPal email, in addition to any other affiliate-referral commissions earned, which you would pay out with affiliate commissions monthly. This would typically be used to share revenue with a supplier or partner, but could also be used to track a donation split as well.