Контакт с двумя людьми, покупающими уникальное изделие в магазине онлайн одновременно

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

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

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

Эта общепринятая практика или является там более практическим путем, которым я должен идти об этом?

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

7
задан John Jones 18 February 2010 в 15:24
поделиться

5 ответов

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

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

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

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

0
ответ дан 7 December 2019 в 16:41
поделиться

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

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

1
ответ дан 7 December 2019 в 16:41
поделиться

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

2
ответ дан 7 December 2019 в 16:41
поделиться

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

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

0
ответ дан 7 December 2019 в 16:41
поделиться

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

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

0
ответ дан 7 December 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: