BTCPayServer's a great alternative, as is Coinpayments, and Coinpayments is actually backwards compatible with most of the things in Bitpay IIRC.
Yeah... I hate Bitpay because nobody knows how to use that payment URL. And they force you to do it as well. It's not an option. But I wouldn't go as far as to discounting it as an option, because there are some advantages to using it.
Coinpayments seems to be a good option right now, I have tested them myself and they seem good overall. Shapeshift can work as well though it focuses on altcoin payments.
It's probably going to be too expensive to build your own bitcoin payment system so I think that paying a percentage to these merchants would be a good idea overall. But do your research before you choose one.
Take the URL and chop off everything before the https:// part. Then, take the URL you're left with, and copy everything after /i/- for example, LSn1DrmQ2RF2VaF8nFHvdt, and paste this in front of it-
https://bitpay.com/invoice-noscript?id=
With the example URL, it would come out to be https://bitpay.com/invoice-noscript?id=LSn1DrmQ2RF2VaF8nFHvdt.
The resulting non-BIP70 address and payment amount is shown on the new rather austere page, and the timer works on it, albeit it refreshes irregularly in my experience.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
https://github.com/achow101/payment-proto-interface
I tried using this on my desktop computer and I did succeed in getting the application to spit out a viable address- I don't recommend using it when you can just use the (comparatively) simple method above of appending a short string to the URL and cutting some things off of it, though. In the end, though, unless most major mobile wallets start accepting BIP70 URLS or QR codes, I personally feel the disadvantages far outweigh the (now few) benefits of Bitpay.