A retailer is under no obligation to accept any specific type of financial instrument for their transaction - not cash, credit cards nor cheque. They are free to agree the terms of the supply; it could be with chickens but that would cause no manner of headaches when accounting for VAT etc.
Yes - they have to pay a percentage to the credit card companies and for many, it's not worth their while. Round here we get the cruise ships in, and many shops have big signs up saying they will take some credit cards but not American Express - they apparently charge quite a big fee per transaction.