Magento CE 1.9.1 Гостевой вход Пожалуйста, убедитесь, что ваши пароли совпадают с ошибкой после обновления с CE 1.9.0

Я разрабатываю сайт Magento и недавно обновился с CE 1.9.0 до CE 1.9.1. Я заметил, что теперь у меня возникает ошибка, когда я пытаюсь оформить заказ в качестве гостя.

1) Я выбираю гостевую оплату на шаге 1
2) Я заполняю форму в разделе Платежная информация и оставляю флажок «Отправить на этот адрес» отмеченным флажком
3) Когда я продолжаю, я получаю всплывающее окно с надписью «Пожалуйста, убедитесь, что ваши пароли совпадают» ошибка

В System- > Config- > Sales- > Checkout у меня есть следующее

Включить одностраничную проверку = Да
Разрешить гостевую проверку = Да

Я просмотрел несколько предложений из поиска Google, включая результаты в stackoverflow, и, хотя они перечисляют проблему в своей теме, они не кажутся актуальными. Решения, которые я видел, похоже, связаны с несоответствием паролей и проблемами проверки.

Может ли кто-нибудь предложить решение проблемы входа в гостевую корзину, которая, похоже, возникла после обновления?


person Richard Luckhurst    schedule 15.12.2014    source источник


Ответы (1)


это немного устарело, но стоит ответить... похоже, это влияет на сайты с модулями проверки, такими как Templates-Master FireCheckOut.

При переходе с 1.9.0 на 1.9.1 ядро ​​мага изменилось:

/app/code/core/Mage/Customer/Model/Customer.php - Line:840
$confirmation = $this->getConfirmation();

to:

/app/code/core/Mage/Customer/Model/Customer.php - Line:841
$confirmation = $this->getPasswordConfirmation();

В случае с FireCheckOut это означает, что мне пришлось пойти и внести следующие изменения:

/app/code/local/TM/FireCheckout/Model/Type/Standard.php ~line 797 to:
if ($quote->getCheckoutMethod() == self::METHOD_REGISTER) {
    // set customer password
    $password = $customerRequest->getParam('customer_password');
    if (empty($password)) {
        $password = $customer->generatePassword();
        $customer->setPassword($password);
        $customer->setConfirmation($password);
        $customer->setPasswordConfirmation($password); // Added this line ***
    } else {
        $customer->setPassword($customerRequest->getParam('customer_password'));
        $customer->setConfirmation($customerRequest->getParam('confirm_password'));
        $customer->setPasswordConfirmation($customerRequest->getParam('confirm_password')); // Added this line ***
    }
} else {
    // emulate customer password for quest
    $password = $customer->generatePassword();
    $customer->setPassword($password);
    $customer->setConfirmation($password);
    $customer->setPasswordConfirmation($password); // Added this line ***
    // set NOT LOGGED IN group id explicitly,
    // otherwise copyFieldset('customer_account', 'to_quote') will fill it with default group id value
    $customer->setGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID);
}

Используя как «setConfirmation», так и «setPasswordConfirmation», вы должны обеспечить как прямую, так и обратную совместимость и ничего не испортить.

person Jon    schedule 27.03.2015
comment
Также стоит упомянуть, что FireCheckout довольно быстро обновил свой собственный код, и если у вас есть доступ, обновите его, прежде чем атаковать ваш собственный код, но это относится не только к модулям Templates Master. - person Jon; 01.05.2015