Я хочу иметь возможность принимать коды купонов, которые могут иметь ограничения - либо в количестве, которое будет принято, либо в период времени для принятия - и быть уверенным, что ограничения применяются.
Оплата будет осуществляться через PayPal Web Payments Standard с использованием кнопок «Купить сейчас».Это означает, что клиент покидает мой сайт, оплачивает в PayPal и возвращает.
Клиент применяет код купона к одному товару, и цена снижается перед отправкой в PayPal.Конечно, это предполагает, что код все еще действителен.Мои вопросы:
Должен ли я уменьшить счетчик (при условии, что мы ограничены числом), прежде чем пользователь перейдет в PayPal?Если пользователь не завершает транзакцию (просто проверяя, работает ли код), код может быть недействительным перед использованием его для общего количества продаж со скидкой.
Уменьшить ли значениепосле получения IPN PayPal?До достижения лимита может быть несколько покупателей (идущих в PayPal), которые платят после его достижения.Мало того, что я мог продать больше, чем планировал, по сниженной цене, так как у моего обработчика IPN есть чек на уплаченную сумму, я обнаружу, что покупатель заплатил меньше, чем является (на тот момент) фактическая цена.
[Для ясности, я ожидаю 1) сохранить коды купонов в БД и 2) сохранить погашения купонов в БД вместе с уникальным номером счета, который проходит через PayPal.Таким образом, обработчик IPN может сверять номер счета с правильно выкупленными кодами.]
Итак, в любом случае у меня есть компромиссы.Как я могу лучше всего справиться с этим?