Paying fees in the actual token can be implemented directly in the tokens smart contract. It is possible to implement a function in a smart contract, which will transfer tokens accepting the user's signature, instead of requiring the user to call this function directly. We have implemented this approach in all our DeCash tokens.