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.

Изменить: Это НЕ проблема внешнего интерфейса, при которой пользователь может дважды нажать кнопку

Author: Francis Kim, 2013-11-05

4 answers

Это происходит, когда у кнопки "Отправить заказ" не указан тип, но на ней есть действие js:

<button onclick="submitOrder()">Sumbit order</button>

Затем форма отправляется и выполняется действие js.
попробуйте добавить на него type="button".

 2
Author: Marius, 2013-11-05 11:17:23

Что часто случается, так это то, что пользователь на самом деле нажимает дважды.

Чтобы избежать этого, вы можете отключить кнопку отправить заказ сразу после того, как она была нажата с помощью Javascript.

Я видел это во многих магазинах.

 1
Author: mpaepper, 2013-11-05 11:13:03

Это может произойти, если у вас установлены некоторые плагины проверки html. Один плохо запрограммированный плагин (не могу вспомнить его название) снова запускает тот же http-запрос, чтобы загрузить содержимое для проверки.

 1
Author: Metzler, 2013-11-05 13:16:16

Хотя на стороне Magento было сделано все, чтобы устранить эту проблему, ничего не помогло. Но просмотр журналов сервера показал, что проблема заключалась в неправильной настройке CloudFlare - теперь все прошло гладко.

 1
Author: Francis Kim, 2014-02-02 23:57:11