У меня проблема с витриной Magento, когда клиенты, которые регистрируются в моем магазине во время оформления заказа, не могут завершить процесс оформления покупки OnePageCheckout.Эта ошибка редка и мне трудно ее воспроизвести.Вот сообщения об ошибках, которые я получаю:
Напоминание об ошибке платежной транзакции
Сбой платежной транзакции.Причина: Требуется адрес электронной почты клиента.
Платежная операция Напоминание о сбое
Платежная транзакция не удалась.Причина: эта электронная почта клиента уже существует.
Я почти уверен, что это означает, что клиент попробовал второй раз и не смог завершить вторую проверку.
Эта ошибкастранно для меня по двум причинам.Прежде всего, эта ошибка никогда не должна возникать в этот момент при оформлении заказа;Поскольку проверка на одной странице проверки не позволяет вам зарегистрироваться с уже существующим адресом электронной почты, второй тип ошибки должен быть невозможным.Проверки проверки также не позволят вам идти дальше, не вводя адрес электронной почты вообще (первый вид ошибки).В обоих случаях вкладка окончательного платежа, которая, по-видимому, и является местом, где произошла ошибка, должна быть скрыта с помощью JavaScript.
Как это возможно, чтобы клиент дошел до того места, где он может нажать кнопку РазместитьКнопка «Заказать», но не была проверена валидацией на вкладке регистрации?
Я предполагаю, что это может быть браузер, который не работает валидация и позволяет клиенту пройти весь путь допоследний бит.
Когда я говорю, что эта ошибка "редкая", я имею в виду, что это происходит с чем-то вроде 2 из 1000 заказов.
Я почти уверен, что это происходит, когда Цитата преобразуется в Орден.В событии Order Save он попытается сохранить клиента как часть транзакции, а также обработать платеж.Я не думаю, что платежный шлюз выдает ошибку, но, возможно, контроль был передан этому классу.Скорее всего, это происходит сразу после вызова функции saveOrderAction()
в файле OnePageController.php
.После того, как в эту функцию выдается ошибка, об ошибке сообщается в трассировке стека следующим образом:
Mage::helper('checkout')->sendPaymentFailedEmail($this->getOnepage()->getQuote(), $e->getMessage());
Здесь генерируется электронное сообщение «Напоминание о сбое платежной транзакции».Я думаю, что ошибка должна быть в этой части:
$this->getOnepage()->saveOrder();
Как я могу найти, где в коде PHP эта ошибка происходит?Как я могу исправить это, чтобы я не потерял клиентов, которые пытаются купить у меня?
Мой магазин работает на Magento версии 1.9.1.1.
Обновление: Только что получил еще один из них.Учетная запись клиента полностью отсутствует, но есть адрес доставки и выставления счета.Очень странно.