Thanks. I didn't bother asking Bitpay because anytime I email them, they respond with a bunch of useless boilerplates and never address the question.
I know they are looking for a payment in the mempool to move the invoice to a "processing" state, which stops the 15-min timer. But I had actually assumed the opposite -- that this event linked the invoice to the specific transaction hash. I figured maybe their API isn't set up to recognize a different hash outside the 15-min window. I might try it with a little $10 purchase later just to see what happens.
If you ask,the entire idea of bitpay sounds quite useless to me.I wonder how the fuck they choose to no include the most important feature of any bitcoin related service that is the showing the address where funds are suppose to be sent.
That 15 minutes window is just an add on feature to mark as a transaction being broadcasted and it wouldn't really help if someone has double spent a transaction.
They've been getting progressively worse over the last two years, which is why all of us should be pushing for merchants to adopt alternatives to Bitpay such as BTCPayServer and Coinpayments. It's not hard to change to a new system, as Coinpayments is actually backwards compatible with most of the features in Bitpay. It'll take some time, but if we all make an attempt to alert merchants of better options than Bitpay, we won't have to pay via a standard made by an obscure BIP anymore.
The trick of appending a website prefix (
https://bitpay.com/invoice-noscript?id=) to get a regular address starting with 1- or 3- doesn't even work anymore. It just leads you to a HTML version of the URL payment page, which is the end of easily extracting a standard address from those Bitpay URLS easily (for mobile users, at least, as there are still applications that extract a regular address on desktops like this:
https://github.com/achow101/payment-proto-interface).
EDIT: BIP70 decoder (thanks TryNinja!)