You probably want to take a look at the following three posts:
Inline-Actions, Inline-transfer1, Inline-transfer2
But the bigger problem will probably be the Redeemcode-logic. If you want to have a condition verifying that a redeemcode is valid, you will need to store a copy of the redeemcode or a hash of a redeemcode on-chain, in a table, where it's visible ...
If understand your question correctly, you are looking for a notification-handler.
Take a look at this on_notify-example.
For multiple token-contracts to listen to, you will need multiple notification-handlers.