Using https://docs.phantom.app/solana/integrating-phantom I have a working Solana Phantom Wallet Extension integration (on `localhost`/`devnet`)

It is working in that I have a `localhost` site which can request 0.1 SOL from the user to be sent to a fixed wallet address and (as long as the user accepts the whole transaction) funds get sent and it completes with no issue.

**But.. how does the backend hear about that transaction?**

Obviously I could just send the user's "processing" transaction hash to the server, store them in a list behind the scenes, periodically check that list for hashes which have cleared on Block Explorer etc etc

**But** lets say the page crashes immediately after Phantom transaction submits, or the internet cuts out, or the user tampers with the outgoing network packet.. the transaction hash is now lost/untrustworthy.

The user has 'spent money' and our backend has no system to reconcile if the payment ever even happened.

What is the proper approach for a server to recieve a transaction hash.
Do I use an RPC node to babysit a wallet, and watch it for correctly-sized payments?

It would be nice if `@solana/web3.js` would knock on a backdoor on my server to let me know that these transactions were coming through. Does it?

I feel like I am missing a piece of the puzzle here..