В магазине нажимают купить -> Редирект в банк -> После оплаты идет направление обратно в магазин с отметкой, что платеж прошел.
На самом деле происходит примерно так:
В магазине нажимают купить -> Редирект в банк -> [после оплаты банк дёргает секретный URL на сервере магазина, в параметрах передаёт информацию о платеже и хэш-сумму с секретной солью, взаимно известной только сайту и банку -> магазин проверяет эту информацию и если хэш совпадает, то считается, что платёж прошёл -> магазин производит операции по добавлению товара пользователю (если он виртуален), либо по уведомлению сотрудников, что такой-то товар оплачен и его нужно доставить такому-то покупателю] -> После оплаты идет направление обратно в магазин с отметкой, что платеж прошел.
То, что в квадратных скобках, происходит на стороне сервера, и пользователь никак не может вмешаться в этот процесс, сколько ни дублируй запросы. Соответственно, доверять тому, что вне скобок, нельзя, и даже если пользователя перенаправило на страницу с уведомлением об успешной оплате - это вовсе не значит, что оплата прошла, эту страницу он может вызвать сам когда захочет.