FWIW our eCommerce systems use to store Credit Card details, but not debit the card until the goods were shipped. This meant that when stock ran out etc. there was no refund necessary, as customer's cards had not been debited.
We do have occasions where clients make mistakes listing them without setting the actual quantity, or making a typo in price and / or qty. That's up to the client so sort out of coruse.
On one occasions a client listed TTF screens at a bargain price to get rid of a couple of dozen that had been sitting in the corner of the warehouse for ages, they failed to set the qty-on-hand, the "Offer" was well publicised in the forums, and they had more than a thousand orders when they came in to work the following morning

The ensuing discussion in the forums was interesting. Most people had not heard of the company and said they thought it was a scam (company is a large mail-order company with over 20,000 product lines, so not some fly-by-night). There was lots of talk of taking legal action, and that the company had just done it to harvest email address, and so on.
For every negative comment there were other people saying they had dealt with the company often, and it was honourable (different scenario here, I grant you

), and that the item had been listed as "Limited stock available", credit cards had not been debited (which seemed to be a big factor in favour of the company), and the people who did receive stock said as much [in the forums] and "Be quicker next time".
On balance I thought it did the company no harm; the company didn't want it to happen again!
We now have safeguards in our eCommerce system that prevent pricing-accidents (if that is what this was @ B&Q)
However, the biggest problem we now have is that the credit card companies no longer allow us to store card numbers, [and we have to do the 3D-secure thing as well, to reduce fraud] so we no longer have the option of having the order-fulfilment package take the payment as the goods are shipped. It is possible to "Pre-Auth" the Credit Card with the value of the goods (when you place your order online) and then actually "debit" the card when the goods are shipped, but none of the Order Fulfilment packages we deal with support this option.
So those things are contributory to this type of foul-up. (I don't have a problem with the fact that this is intended to reduce fraud)
I'll be interested to know what the law says, in practice, on this matter