A polite "Sorry, can't help you today" has worked 100% for me. Don't antagonize.
I've used that verbiage, as well as "No thank you, I'm not interested". Afterall, they ARE about to solicit you, right? Either way, it's paired with my weak hand held up with the palm out, in the "STOP. You're getting too close" gesture.
Sometimes, I think the Spirit moves me to give, and at those times, I will. Sometimes money, sometimes driving thru for a sack-of-heart-attack to hand them. My son has seen me in both instances, and asks how I differentiate. It's tough to describe that 'gut' feelin', LOL.
EDIT: Just read the linked thread on BarfCom. I agree with it. The caveat is, you DO have to know your state's laws. As has been pointed out, there's a fine line between you saying/doing something 'defensive', and aggravated assault/battery. Our state codified it a couple years back as 'defensive display (of a weapon)'. What SHOULD be common sense, isn't. Most folks may use the ruse of stating they're armed, when they may NOT be...and the actor keeps advancing. When you SHOW them you mean business, as that poster points out, they often don't want the hassle.
Where I DIFFER, is that I WOULD call the police. I firmly believe that your assailant may drop the dime on YOU, claiming YOU were the bad-guy. It's that old saw of "Complainant is the 'victim', and anyone else is a 'suspect'. Remember, they don't have to make contact with the police, they can remain anonymous, and bring a world of aggravation down on you. Have you read of the vicious 'prank' of 'SWAT-ting', yet? Do a quick Google....