My questions are:
Is this a good, secure and fast approach for accepting payments ?
In case user is sending a second payment to the same address, what's the best way to handle it ?
That's good I think.
Secure is depends on your wallet, you should improve your wallet, buy hardware wallet.
Fast, it's depends on the transaction fees, it's back to the buyer, I think you should put a warning to buyer about transaction fees.
For case buyer sending 2nd payment, well you don't delete the address, buried to archive. And for every transaction whatever is come from same buyer, that should generate new address.