In our application an "order" (subscription to an event) can be (partly) modified after it has been paid for. For this reason orders aren't removed from the visual indication during or after payment.
The normal behaviour is that once you click the "pay" button, certain fields become "locked" while others can still be modified. Also the user is forwarded to the payment provider and expected to fill in the details there. (Payment provider will return back to the overview page the user left).
When the payment provider reports the payment as "paid" this status prevails (and the order is considered paid). The pay button is then displayed with a "check mark".
If the provider reports the payment as "canceled" or "expired" the locked status will be removed, and the pay button will be displayed once more.
This leaves one particular point though: what if the user leaves the payment provider's page (close button), and returns manually to the overview page. In this case the order "pay" button is replaced with a spinner. However the order payment status is "open" - ie a payment is underway. And the payment provider will not provide an "expired" until the payment link has expired, which is multiple weeks.
From a user experience point of view what should I display while the payment is underway and the user reopens their orders? I could make the spinner into a button that reopens the link, but a user wouldn't ever expect to click a spinner would he?