Is there any way to accept bitcoin on a website automatically without using a 3rd party like bitpay?
I would avoid using Bitpay and Coinbase for payment verification, you need to be a real company, have tax codes and ids etc. Learn about callback handling
https://blockchain.info/api/api_receiveI setup payment handling and qr generation on a new Django website I was working on using blockchain.info receive api, it was so easy I was laughing the entire time I set it up.
Alternatively you setup your own node, and send RPC Calls to it too generate new addresses and then check for payments: getreceivedbyaddress [minconf=1]
https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list