Visa/Mastercard have a rule that you can't charge extra for using a credit card. If you find a business doing so you can report them and they will get the credit card facilities yanked.
But you can always offer a discount for cash. So some places do this to get around that rule.
If you're buying in cash you can try ask for a discount. If you're not asking you will get charged the same price they can't offer it out of the blue.