Ошибка «Невозможно оформить заказ».Пожалуйста, согласитесь со всеми условиями перед размещением заказа

magento.stackexchange https://magento.stackexchange.com//questions/73047

Вопрос

Привет, недавно мы увидели эту ошибку в 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') ?>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top