Dynamic Transaction Hash Confirmation
Submitting transaction ID is not a safe way to verify payments. As you know bitcoin transactions are public and anyone can get see all TXIds. Same reason why even the donor bitcoin address is not a good method to verify. Someone else can see that address on blockexplorer and claim himself to be donor.

I can suggest few options:


Ask the donor to sign a message proving ownership of the source address in TX. Most wallet have this functionality
Ask the participant to submit his xpub (extended public key) instead of address. When donor wants to donate, generate a unique address from this xpub for each attempt. This way you are sure, this donor paid to that address