SaveOrder запускается дважды с перерывами
Я столкнулся с проблемой прерывистых повторяющихся заказов.
Платежный шлюз SecurePay (Австралия), однако, просмотрев журналы, проблема, похоже, в кодовой базе, поскольку я вижу следующее (адреса скрыты):
./ssl_access_log.www10.1:8.8.8.8 - - [05/Nov/2013:01:18:32 +1100] "POST /checkout/onepage/saveOrder/ HTTP/1.1" 200 30 "https://foobar/checkout/onepage/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36" 2444 2204
./ssl_access_log.www10.1:8.8.8.8 - - [05/Nov/2013:01:18:42 +1100] "POST /checkout/onepage/saveOrder/ HTTP/1.1" 200 30 "https://foobar/checkout/onepage/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36" 2444 2204
Таким образом, что-то запускает SaveOrder дважды, как правило, в течение 10 секунд, так что это не проблема внешнего интерфейса, когда пользователь дважды нажимает кнопку.
Не установлена одноэтапная проверка - это стандартный заказ на одну страницу Magento.
Изменить: Это НЕ проблема внешнего интерфейса, при которой пользователь может дважды нажать кнопку
4 answers
Это происходит, когда у кнопки "Отправить заказ" не указан тип, но на ней есть действие js:
<button onclick="submitOrder()">Sumbit order</button>
Затем форма отправляется и выполняется действие js.
попробуйте добавить на него type="button"
.
Что часто случается, так это то, что пользователь на самом деле нажимает дважды.
Чтобы избежать этого, вы можете отключить кнопку отправить заказ сразу после того, как она была нажата с помощью Javascript.
Я видел это во многих магазинах.
Это может произойти, если у вас установлены некоторые плагины проверки html. Один плохо запрограммированный плагин (не могу вспомнить его название) снова запускает тот же http-запрос, чтобы загрузить содержимое для проверки.
Хотя на стороне Magento было сделано все, чтобы устранить эту проблему, ничего не помогло. Но просмотр журналов сервера показал, что проблема заключалась в неправильной настройке CloudFlare - теперь все прошло гладко.