Есть 1 товар, два пользователя нажали оплатить этот товар, перенаправились на платежную систему, оплатил первый, через 20 сек второй, как предотвратить такое? Получается второй уже находится на платежной систему и платежной системе передать сообщение, что товара уже нет нельзя, а заранее отмечать(перед перенаправлением на платежную систему), что товар уже куплен, не реально так как пользыватель может и не купить его, а другого пользователя упустить...
Еще на стадии оформления заказа ставьте товар в резерв и уменьшайте его количество в основной таблице на величину резерва. Далее сделайте скрипт, который будет очищать зарезервированный, но неоплаченный товар (например, если клиент не оплатил товар в течение 3-х часов, то сбрасывается резерв, корзина и зарезервированное количество товара возвращается в основную таблицу).
Но на практике это крайне редкая ситуация. Куда чаще в интернет-торговле возникают проблемы не на стадии IT, а на стадии самой работы склада (когда по базе товар есть, а реально на складе его нет - недостача или тому подобная ситуация).
Сборка персонального компьютера от Artline: умный выбор для современных пользователей