I was in Kerala varkala beach in March and found a number of times that tourists are charged more than the local, often quite significantly. I definitely do not like being asked to pay in$US when the rupee is the local currency, and not being American, I don't tend to carry around$US.
Much of India really seems to have three pricing structures; prices that that the locals pay, prices that Indians that are not local pay and then the high prices charged to foreigners.
Where I live, we offer tourists discounts that the locals cannot get.
The best solution is to not go to these places where they overcharge. The only way that they might lower their prices is if people don't shop there.