Работа с двумя людьми, покупающими уникальный товар в онлайн-магазине одновременно - PullRequest
7 голосов
/ 18 февраля 2010

Я создаю простой онлайн-магазин с PHP, интегрированным с PayPal, который продает уникальные предметы.Что меня интересует, так это то, как другие магазины работают с несколькими людьми, пытающимися пройти процесс оплаты одним и тем же товаром.

Это мой текущий черновой вариант стратегии:

  • У товаров тритипы состояний: доступно, удерживается и продается.
  • Когда пользователь переходит на страницу оплаты PayPal, он проверяет состояние всех товаров в корзине, чтобы убедиться, что они доступны.Он также устанавливает статус элемента на «удержание» до тех пор, пока он не вернется после подтверждения оплаты или не истечет время ожидания (10 минут? Не уверен, что это должно быть).

Это стандартная практика илиЕсть ли более практичный способ, которым я должен идти об этом?

Заранее спасибо!

Ответы [ 5 ]

2 голосов
/ 18 февраля 2010

Посмотрите на Розетка Dell в Великобритании . Когда кто-то добавляет систему в свою корзину покупок, она удерживается и недоступна для других клиентов. Если он не был куплен, товар будет удален из корзины через 15 минут бездействия, а затем доступен для других клиентов.

0 голосов
/ 18 февраля 2010

Я бы сказал, что первая часть вашей стратегии верна - при переходе на страницу оплаты пометьте все продукты как «на удержании»

Когда пользователь завершит платеж, вы получитеобратный ответ от Paypal, который позволяет узнать, была ли авторизация успешной или нет (и, возможно, также позволяет проверить результат CSC / CVV2), и в этот момент у вас есть возможность либо принять платеж, либо отклонить его.

При получении постбэка вы также должны проверить, находятся ли предметы в режиме ожидания.Если время ожидания истекло, вы можете отклонить платеж и отобразить сообщение «извините - превышено время ожидания» или что-то в этом роде.

Этот метод также позволяет вам определить идеальный период ожидания, если вы отслеживаете частоту запуска клиентов.в тайм-аут, так что вы можете увеличить тайм-аут с (например) 5 до 10 минут, если слишком много тайм-аутов, или сократить его, если ни один не тайм-аут.

0 голосов
/ 18 февраля 2010

Это довольно распространенная проблема с фиксированными системами инвентаризации, такими как место проведения, транспорт / авиалинии и т. Д.

Мне нравится модель авиакомпании, где, как только вы получите нужный вам самолет и нажмете кнопку выбора, вы получите страницу с информацией о пассажире с сообщением о том, что места в ожидании, и у вас теперь есть xx (10/15) минут для завершения покупки. , Все становится явным в то время. Что касается другого уникального / единственного в своем роде товара, я думаю, что сообщение на любой странице, на которое пользователь нажимает, говоря, что у вас осталось хх (мин), чтобы завершить покупку, было бы большим мотиватором для покупателей, находящихся на грани. !

0 голосов
/ 18 февраля 2010

Это очень похоже на бронирование билетов в театр или подобное онлайн, и да, как вы описываете, как правило, это работает.В какой-то момент товар «зарезервирован» в системе, и либо клиент завершает транзакцию, либо товар отпускается через некоторое время, чтобы другие могли его купить.

Конечно, в какой момент вы резервируете товар (когда ондобавлены в корзину, в тот момент, когда вы отправляете их на оплату и т. д.), зависит от вас.Я ожидаю, что положить его в корзину будет лучшим выбором, так как это снижает вероятность того, что кто-то соберет корзину с вещами только для того, чтобы обнаружить, что половина ее больше не доступна на кассе.

0 голосов
/ 18 февраля 2010

woot.com печально известен этой проблемой, но их решение хорошо работает. После подтверждения информации о платеже пользователь попадает на страницу с небольшим количеством текста с надписью «Ваш заказ находится в наличии, мы проверяем инвентарь».

Похоже, что в API PayPal есть сообщение "RefundTransaction", поэтому что-то подобное может оказаться невозможным. Но пользовательский опыт может быть неудобным, если вы переходите на сайт PayPal, а затем возвращаетесь на ваш сайт.

...