Just run a full node of whatever coin you want to accept and use the json-rpc interface... generate a new address for each client and keep a database that connects the client to the address...
Coins using the bitcoin codebase use more or less the same json rpc commands, coding something like this should be fairly simple... Altough i would advise to let a senior dev assist you... A simple mistake can have serious consequences, altough, as long as you keep your wallet locked, it should be fairly safe.
As suggested by mocacinno , Connect your wallet with Coin Nodes, Daemons, Coinpayments, Block.io .. They give you unique Deposit address each time.
So for each user generate one address per coin and save it to database .
Next time when user needs to deposit save address which was saved in db should be shown .
This is how all centralized exchanges work like.
You can use prebuilt solutions like codono, and modify it according to your requirements too. As they give you same solution.
Thanks