Modifier payable allows function to receive ether.
Function in your example is a default payable fallback function which will be called every time somebody send ether to your contract.
You can also implement any other function as payable so this function can accept Ether.
Payable only allows function to accept ether and it is not in any way related to token transfers.
Sending tokens is just a transfer function in ERC20 standard. By default it will only change balance within the token. So if you send 1 token from A to B the only change will be that:
token.balances[A] = token.balannces[A] - 1
token.balances[B] = token.balances[B] + 1
To be able to do what you want you have two options.
Implement your tokens so they call tokenFallback function when transfer is called. Please have in mind that sending token must call tokenFallback function in the receiving contract. Default Open Zeppelin ERC20 token doesn't not do it. You will have to make a modification to it.