You could build a bespoke solution for accepting Bitcoin by using a bitcoind server - it's not that hard to be honest even though I never found a complete foolproof guide.
Few things to keep in mind - some may be obvious but when put together you need to pay particular attention to them:
- Never credit an account with at the very least 1 confirmation - taylor it the way you want but 4 confirmations is good
- Transactions could contain payments to 2 different users on your site - using different addresses
- Use walletnotify to get transactions notification - it will occur the first time the transaction is seen on the network and once more when it received 1 confirmation
- Use blocknotify to get block notification - when you get this, you can go through all the unconfirmed transactions in your system and increase the confirmation number - then if it crosses your threshold, the payment is deemed complete.
- Just as a precaution and to complement the above 2 points, I set up a cron job running every 30 min to check I have not missed anything since the last block. I have fait un the notifications but better be safe than sorry
The infastructure is fairly straight-forward and then it all depends on your environment and preferred coding language. There are various sites that can give you pointers on how to connect to a running bitcoind node and pull data from it.
Good luck - I have been down that path several times and learnt as I went along.
1bitcoind supports watch-only addresses since 0.10, removing the meed to have your keys online – Pieter Wuille – 2017-02-26T15:19:08.150