этим вопрос похоже на this one, но с изюминкой (так что ответ принят на старший вопрос не является действительным в следующем сценарии)электронной коммерции управление запасами с внешним платежным шлюзом
У меня есть сайт для продажи билетов (PHP/MYSQL). Предположим, у меня есть только один билет налево:
- покупателю кладет билет в ее корзину и идет на страницу платежного шлюза (т.е. PayPal.)
- билет заперт в течение 5 минут, так что покупатель B не может купить это
- покупатель а ждет 5 минут с PAYPAL страницы открытой, ничего не делая
- билет разблокирован поэтому покупатель B кладет его в корзине и идет страница PayPal
- покупатель выполняет процедуру оплаты на PayPal с успех
- покупатель B успешно выполняет процедуру оплаты на paypal
Я могу подождать дольше, но я не думаю, что это решит проблему в более общем случае. кроме того, если я это сделаю, будет возможно сделать какой-то DoS, фиксируя элементы на складе в течение больших периодов времени.
Каков наилучший способ справиться с этим сценарием?
это не решит проблему, так как, даже если это очевидно, оба плательщика в конечном итоге делают два юридических платежа за один пункт. – gpilotino
Да, вы правы, это не остановит одного из двух клиентов от покупки билета описанным способом. Вы могли бы также сказать, что первый клиент ждал долго. Возможно, вы можете включить свое правило 5 минут в свой запрос Paypal ...? –
в этом случае вопрос будет: делать (все) платежные шлюзы (настраиваемые) таймауты? даже если это разрешит только первую половину =) – gpilotino