2009-03-20 2 views
1

Я не пользуюсь готовой корзиной покупок, я сам программирую. Он работает отлично в 99% случаев, но примерно раз в пару месяцев заказ проходит за $ 0. Я не могу понять, почему. Я делаю пробную покупку с одним и тем же продуктом и все той же информацией, и я не могу получить для меня 0 долларов. Я не уверен, как решить проблемы с этим, у меня есть отказ от ответственности, говорящий, что мы не соблюдаем ошибочные цены. Клиент хочет, чтобы это прекратилось. Я использую PHP, чтобы сделать все это. Поскольку мне кажется, что я не могу дублировать сам сам, мне трудно понять суть проблемы. Может ли кто-нибудь предложить некоторые советы по устранению неполадок?

Спасибо!

ответ

3

В конечном счете, вам нужно выяснить, почему это происходит. Не видя своего кода, я не могу вам помочь в этом. В краткосрочной перспективе, почему бы не просто добавить проверку на работоспособность в конце процесса оформления заказа?

if ($final_price < 1) { 
    do_epic_fail(); // Show an error, whatever. 
} 
+0

Я не могу объяснить, почему, но почему-то «do_epic_fail» заставил меня взломать , Я определенно называю функцию, что следующий шанс я получаю. –

+0

Спасибо, но некоторые заказы могут быть бесплатными, если, например, они использовали код купона. –

+0

Почему бы вам не сохранить две отдельные переменные? $ base_cost и $ discount? Общее количество: $ base_cost- $ discount. Вы бы использовали приведенный выше оператор if на $ base_cost. – ryeguy

1

У вас есть URL-адрес сайта?

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

Убедитесь, что вы передаете идентификатор продукта на свой код на стороне сервера и умножьте цену на сервер * количество заказа. (например, никогда не доверяйте пользовательскому вводу)

+0

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

+0

Вот URL-адрес страницы продукта приобретенного продукта: http://www.kranichs.com/products/Kranichs/ring-331 –

0

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

Всегда отправляйте данные о платеже со стороны сервера.

3

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

Есть несколько возможностей, которые возникают на ум. Во-первых, у вас есть временная ошибка в запросах, чтобы вывести итоговые значения элементов. Возможно, когда запрос завершится неудачно, вы по умолчанию равны 0,00. Например, что происходит, когда они печатают -1 для количества или помещают в некоторый текст, например, «ABC»

Альтернативно, у вас может возникнуть проблема с внедрением SQL-кода, если пользователь помещает что-то неправильно в одно из полей, которое загружает нуль стоимость по цене.

Независимо от того, что произойдет при правильной регистрации.

+0

Можете ли вы указать мне в правильном направлении, как начать это делать? Я использую PLESK, если это имеет значение. Спасибо –

+0

Если вы сами закодировали корзину покупок, просто добавьте таблицу в свою базу данных для хранения информации о регистрации. Затем в разных точках (например, каждый раз, когда вы запускаете SQL-запрос) регистрируйте сообщения vars, sql-запрос и любую другую информацию, к которой у вас есть доступ. – NotMe

+0

Журнал будет выглядеть довольно крупным, так что часто наблюдайте его и обрезайте по мере необходимости. – NotMe

1

Означает ли ваш код данные $ _SESSION? Если пользователь должен был ждать очень долгое время, некоторые необходимые данные могут истечь, но проверка может продолжаться.

Как уже говорили другие, трудно без дальнейших комментариев прокомментировать.

+0

Спасибо, что я хранил предметы в корзине в $ _SESSION, но не цены на предметы. Элемент также был сохранен в заказе. –

0

Если конечная цена равна 0, возможно, проверьте порядок еще раз, чтобы узнать, содержит ли он какие-либо предметы. Я мог видеть, возможно, иметь ордер на ноль, если у вас есть бесплатные предметы или специальные акции, так что, возможно, это путь.

Это трудный вопрос для ответа, не видя вашего источника.

Смежные вопросы