Of course you can! But you have to understand that Ethereum DApps have a lot of limitations and there are a lot of different problems you need to consider. If you go the in-browser route, you need to start writing towards web3.js and your customers will need to use Metamask to interact with your application. This assumes you want to use ether.
But you said you wanted to use an ERC20 token as a payment. Do you mean an existing ERC20 token (e.g., EOS, FUN, SALT, some other token), or do you want to create your own token? If you create your own token, are you doing so because your application actually has a monetary transactable value, or do you just want to be able to claim you're using your own token?
The thing is, ERC20 tokens are harder to accept than traditional ether. Metamask doesn't provide a way to send tokens out of the box. If you want to receive an existing token, you need to come up with a way for people to transact tokens with Metamask, then interact with your application. That's a lot of work.
You could also build a DApp on something like Parity. The only problem with this approach is that if you do that, you might limit your customer base. It would probably be easier to interact with tokens, but it requires a separate download and chain sync.
These resources might help you: