Скрипт корзины покупок на PHP — когда опустошать корзину?

Я работаю над скриптом корзины покупок на php, и мне нужен совет, как справиться с окончательным процессом.

После того, как клиент добавил товары в корзину, выбрал вариант доставки и затем нажал кнопку оформления заказа, он перенаправляется на кнопку PayPal, которая динамически генерируется с помощью BMCreateButton.

Мой вопрос: когда лучше всего очищать корзину клиентов?

Я настроил функцию автоматического возврата в PayPal, которую я собирался использовать, чтобы затем очистить корзину, но это не очень хорошо, так как клиенты должны щелкнуть ссылку, чтобы перенаправить.

Так должен ли я очистить его, когда они нажимают кнопку оформления заказа непосредственно перед динамической кнопкой?

Я также могу использовать эти настройки в php, чтобы предотвратить проблемы с кнопкой возврата кэша.

// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// Always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");

Что бы ребятам порекомендовали?

ваше здоровье.


person john    schedule 04.07.2012    source источник


Ответы (2)


Как только вы обновите/вставите в базу данных.

Это потому, что если они вернутся и добавят больше продуктов, у него будут дублирующиеся записи, а вам это не нужно.

как только вы вставите свою базу данных и header() отправите их в Paypal и т. д., очистите их корзину.

person jay    schedule 04.07.2012
comment
Вот как работает корзина: проверка корзины › 'header()' перенаправляет на кнопку PayPal › сайт PayPal. Итак, у меня есть 2 варианта: 1. пустая корзина после проверки корзины перед перенаправлением 'header()' или оставить ее и надеяться, что они используют обратный URL-адрес ... есть ли возможность сделать эту очистку корзины с IPN? - person john; 04.07.2012
comment
опорожняйте корзину непосредственно перед заголовком. К сожалению, пользователи будут делать все, что захотят, поэтому вам нужно убедиться, что они обрабатываются так, как вы хотите. На одном сайте у меня была кнопка для восстановления вашей корзины?, когда их платеж не прошел, путем временного сохранения их корзины в другом месте и очистки их основной корзины. - person jay; 04.07.2012
comment
Эй, Джаред, неплохая идея восстановить твою тележку? вариант .. я хорошо обдумаю это и посмотрю, как я могу реализовать это отличная идея! спасибо Джаред - person john; 04.07.2012
comment
все хорошо дружище. Мой метод был $_SESSION['cart'] в корзине, и когда они переходят в PayPal, я перемещаю $_SESSION['cart'] в $_SESSION['temp']['cart'], и если они нажимают кнопку восстановления корзины, она просто перемещается обратно. Удачи, приятель. - person jay; 04.07.2012
comment
По какой-то странной причине я не могу использовать SESSIONS :( мой веб-сайт доступен с префиксом www и без него, а сеансы, созданные с префиксом www, будут недоступны без этого, что сводило меня с ума с тех пор, как я начал этот скрипт. Я был вынужден переключиться к файлам cookie и даже с файлами cookie, я вынужден добавить домен, иначе у меня будет та же проблема. Я даже пробовал session_set_cookie_params(0, '/', '.domain.com'); session_start(); ', но это не работает, поэтому я отказался от SESSION. Я предпочитаю сеансы, а не файлы cookie, поскольку вы не можете устанавливать массивы в куки, как вы можете с сессиями - person john; 04.07.2012
comment
хорошо, если вы не можете переключиться на использование $_SESSION, я бы все равно использовал тот же метод, но сохраняя массивы, сериализованные в файлы cookie (означает, что они являются строкой). Просто означает вызов serialize() и unserialize() при вставке/извлечении файлов cookie. - person jay; 04.07.2012
comment
Привет, Джаред, сегодня я снова провел сеансы, и мне удалось заставить их работать во всем моем домене. Мне пришлось ввести следующий код вверху каждой страницы: $some_name = session_name("domain"); session_set_cookie_params(0, '/', '.mydomain.com'); session_start(); теперь я переписал скрипт для использования сеансов, что намного лучше, так как мне не нужно сохранять кучу информации на сервере :) все, что я оставил сделать сейчас - это вариант восстановления корзины, и спасибо большое за этот совет, который полностью решил мою первоначальную проблему :) - person john; 04.07.2012
comment
Всем добра дружище! не забудьте проголосовать, чтобы вопрос ответил. Если вам нужна помощь, напишите мне в личку, буду рад помочь. :) - person jay; 04.07.2012
comment
ах m8 это прекрасно работает благодаря сеансам! корзина восстановления работает отлично .. просто из интереса, что делает временная часть в $_SESSION['temp']['cart'] приветствия - person john; 04.07.2012
comment
все хорошо дружище. это просто массив внутри массива. Например, я бы использовал $_SESSION['temp']['errors'], $_SESSION['temp']['user'] и т. д. На ваше усмотрение. Что-то вроде $_SESSION['cart_old'] может быть более подходящим в вашем случае. - person jay; 04.07.2012

С веб-сайта PayPal:
С Автоматический возврат для стандартных платежей PayPal, вы можете не заставлять людей нажимать кнопку, чтобы вернуться на ваш веб-сайт после того, как они завершат платежи через PayPal...
...
ПРИМЕЧАНИЕ. Если вы включили автоматический возврат и выбрали необязательную учетную запись PayPal для новых пользователей, новый пользователь не будет автоматически перенаправлен обратно на ваш веб-сайт, но ему будет предоставлена ​​возможность вернуться.


Это означает, что если вы хотите, чтобы автоматическое перенаправление работало без нажатия пользователем ссылки/кнопки, вы должны отключить опцию: PayPal Account Optional for new users

person Nir Alfasi    schedule 04.07.2012
comment
о, подождите - означает ли это, что все клиенты ДОЛЖНЫ иметь учетную запись PayPal? - person john; 04.07.2012
comment
зависит от того, как настроена ваша база данных. если вы явно используете только PayPal, то да. Это потребует, чтобы у вас было поле в базе данных, которое является статусом платежа. по умолчанию Pending, и если они успешно возвращаются со страницы Paypal, оно изменяется на Complete. - person jay; 04.07.2012
comment
Хорошо, тогда я должен отказаться от этого варианта, потому что я не хочу заставлять клиента иметь учетную запись PayPal. привет альф! - person john; 04.07.2012