From ERC 677
ERC20 requires a multistep process for tokens to be transferred to a contract. First approvemust be called on the token contract, enabling the contract to withdraw the tokens. Next, the contract needs to be informed that it has been approved to withdraw tokens. Finally, the contract has to actually withdraw the tokens, and run any code related to receiving tokens. This process typically takes two to three steps, which is inefficient and a poor user experience.
This leads the motivation for my question.
Presumably, there are active token contracts that implement any one of these token standards including ERC 20. I want to create a single PaymentReceiver contract that can handle all of these standards and will then call my other contracts on paymentRecieved(address payer, address token, uint amount, bytes data);.
What is the best way to achieve my goal? Is it worth it to support all of the token standards? Can someone point me to contract that already does this?