As @Tom Phillips mentions, each time your sproc is called you're going to insert a new row most likely. Your IF statement will rarely be true and is pretty much useless. Example: if you call this sproc twice in a row then in all probability there will be at least a half second difference. Therefore when you query to see if there is already a row in the table you'll be using the current time and half a second later you'll query again but the time will have changed so you'll get a new row each time.
Personally the issue is that your app is sending multiple requests and it shouldn't. This is common in web apps because the user in the browser can click a button any # of times. Unless your app is disabling that button via JS as soon as it clicked then the user can click it again. Since web apps are stateless you'll get a brand new request sent to the server again asking you to repeat the process. Hence you get 2 requests. This is how web apps work. If the request cannot support concurrent requests then you have to programmatically handle it. How you do that is completely reliant on what you're doing and how. For example creating a new resource generally means the second request will fail because the resource has already been created. However if this were an update request (and you're not using concurrency detection) then the resource would be updated twice (which shouldn't matter in most cases).
I believe the solution to your problem isn't in fixing the SQL but fixing your app to prevent duplicate requests by the user.