I would like to process deposits, but I am not quite sure how to best go about it. Unfortunately, I cannot and do not want to operate my own node at the moment
Here's the scenario: I have only one address to which all deposits should go.
No. Just no. A bitcoin address is like an invoice number. You give out a new one for every deposit. That way you know exactly who you gave the address to and when. Then when a payment shows up on that address, you know who's deposit it is, since htey are the only one you gave the address to.
My service works without accounts and the sender's address is the UserID.
If I send you a single deposit in a single transaction, the bitcoins you receive from me will have been received by me at 5 different addresses. How are you going to decide which "sender's address" is my userID? Do I now have 5 userID's, just because I sent you one transaction? this is not the right way to do this. You're making it complicated and you clearly are trying to write software without any understanding of how any of this actually works. This is a bomb with the fuse already lit. Please stop until you've learned a bit more and you've re-architected your service to make the best use of what's available to you.
The user should be directly shown on the website that the transaction has been received. In addition, the confirmations of the transactions should be updated and displayed promptly. But only up to 6 confirmations. After that, the deposit is successful, and we do not need to query the additional confirmations.
Quite easy to do if you give out a new address for each depoist.
It is important to me that if my web server goes offline, the system also processes the deposits during the time the server was offline.
Another good reason to use new addresses for every deposit, and to build recovery processes into your system for handling downtime.
My solution with which I am not quite satisfied
I wouldn't be either from what I've read so far.
How would you proceed?
I'd start over. I'd make sure I understood how bitcoin works. I'd take advantage of the tools available. I'd run a node. I'd process transactions and blocks as they are received by the node. I'd create a recovery process that can scan the most recent X blocks. I'd create backups/snapshots of point in time to recover from if needed. I'd receive all deposits into cold wallets whose private keys have never been online. I'd maintain a hot wallet with a small but adequate balance if I need to also send out payments. I'd have very strict and careful process in place to fund the hot wallet.
Deposits should always go to just one address
Again, no.
I don't understand why it's so complicated. Cryptocurrencies are meant to be used for payments. So why is it so hard to process them?
It's not. You are choosing to MAKE it hard by artificially putting constraints on yourself and refusing to architect your product/service properly.
I definitely want to use only one deposit address. I don't want new addresses to be generated all the time.
Then you don't understand how bitcoin works. This would be like saying "I want to accept U.S. physical cash, but I don't want to anything made of metal or or cotton-linen blends. Why is this so difficult to do?"
If I run my own node, then it's much easier to process deposits, right?
Easier? That depends on your capabilities, knowledge, and skills. But it's certainly more reliable and less prone to the whims of a service provider.
Or does it also require a lot of makeshift solutions?
That depends on how complicated the design and architecture of your product/service is.