Ошибка «Невозможно оформить заказ».Пожалуйста, согласитесь со всеми условиями перед размещением заказа
-
13-12-2019 - |
Вопрос
Привет, недавно мы увидели эту ошибку в Magento 1.9.0.1.И понятия не имею, почему.И особенно где посмотреть как отлаживать.
T&C уже включен в серверной части.И было установлено 1 соглашение (ID=1).Не имеет значения, снимем мы галочку или проверять соглашение.Ошибка всегда.
Please agree to all the terms and conditions before placing the order
Однако мы видим, что трафик AJAX работает и что это связано с серверной частью.Что делает его еще более интересным.
Ответ{"success":false,"error":true,"error_messages":"Please agree to all the terms and conditions before placing the order."}
Я вижу, что это сообщение пришло от $this->_getCheckoutSession()->addError($this->__('Please agree to all Terms and Conditions before placing the order.'));
в OnepageController.php (функция:обзорPostAction()) ...есть разница...но понятия не имею, почему это не удалось.Однако я увидел, что оно представлено как name="agreement[<?php echo $_a->getId()?>]"
и обрабатывается с помощью $postedAgreements = array_keys($this->getRequest()->getPost('agreement', array()));
ОБНОВЛЯТЬ:Кажется, переменная соглашения отправляется в POST как agreement[2]:1
но я не думаю $this->getRequest()->getPost('agreement', array())
затем зафиксирует его ценность.
Вопрос:Это известная ошибка?и если да, есть ли способ исправить?
Ценю любые советы ;P
Решение
У меня тоже была такая же проблема.После некоторых глубоких копаний я приступил к работе.В opcheckout.js вы можете найти приведенный ниже код.
var params = Form.serialize(payment.form);
if (this.agreementsForm) {
params += '&'+Form.serialize(this.agreementsForm);
}
«this.agreementsForm» возвращает значение формы соглашения, но во время Form.serialize(this.agreementsForm) я получил пустое значение.
Итак, в оформлении/OnePage/Review/Info.phtml Найти эту строку
review = new Review('<?php echo $this->getUrl('checkout/onepage/saveOrder', array('form_key' => Mage::getSingleton('core/session')->getFormKey())) ?>', '<?php echo $this->getUrl('checkout/onepage/success') ?>', $('checkout-agreements'));
и заменить на
review = new Review('<?php echo $this->getUrl('checkout/onepage/saveOrder', array('form_key' => Mage::getSingleton('core/session')->getFormKey())) ?>', '<?php echo $this->getUrl('checkout/onepage/success') ?>', 'checkout-agreements');
Другие советы
Без понятия почему, но....перенос блока соглашений все сломал....только что тестировал и перепроверял это...
это работает
<div id="checkout-review-submit">
<?php echo $this->getChildHtml('agreements') /** CUSTOM CODE SNH - DONT MOVE IT WILL BREAK **/?>
<div class="buttons-set" id="review-buttons-container">
<p class="f-left">
<?php echo $this->__('Forgot an Item?') ?> <a href="<?php echo $this->getUrl('checkout/cart') ?>"><?php echo $this->__('Edit Your Cart') ?></a><br/>
/p>
<?php echo $this->getChildHtml('button') ?>
это не
<div id="checkout-review-submit">
<div class="buttons-set" id="review-buttons-container">
<p class="f-left">
<?php echo $this->__('Forgot an Item?') ?> <a href="<?php echo $this->getUrl('checkout/cart') ?>"><?php echo $this->__('Edit Your Cart') ?></a><br/>
<?php echo $this->getChildHtml('agreements') /** CUSTOM CODE SNH - DONT MOVE IT WILL BREAK **/?>
/p>
<?php echo $this->getChildHtml('button') ?>