Не менять статус заказа при оплате заказа (repay)

Какую задачу или проблему я пытаюсь решить: Оформлен заказ но еще не оплачен. Есть к примеру статус заказа “Ожидает оплаты” для которого отмечено “Снова оплатить заказ”. Менеджер после проверки наличия и согласования с клиентом ставит этот статус чтобы покупатель смог оплатить заказ онлайн. Покупатель у себя в профиле заходит в заказ, выбирает способ оплаты и нажимает “Оплатить”. После чего переходит к примеру на сайт платежной системы. Но сам заказ меняет статус на “Новый” и клиенту на почту отправляется оповещение “Спасибо за заказ” которое он уже получал ранее так как заказ был оформлен ранее и у него уже был статус “Новый”! Зачем менять статус на “Новый”? Ведь и настроить нельзя, чтобы менял к примеру на “Ожидает оплаты”

Каким я представляю решение проблемы: В файле app/controllers/frontend/orders.php $_SERVER[‘REQUEST_METHOD’] == ‘POST’ и $mode == ‘repay’ заменить $change_order_status = STATUSES_ORDER; на $change_order_status = $order_info[‘status’];

6 лайков

Мне это так решили, полет нормальный, смысл этой прыготни по статусам не понимал тогда даже, хорошо люди подсобили. Странно, что проблема которой 2+ года, только сейчас всплыла опять.

Строчка 100 особенно доставляет))))

Поддержку. Но сомневаюсь, что что-то поменяется в этом плане в ядре

Лучше так
//$change_order_status = STATUSES_ORDER; - комментируем. Ниже добавляем
$change_order_status = $order_info[‘status’];
или
$change_order_status = ‘’;

Потому что далее идет функция fn_change_order_status где используется переменная $change_order_status

1 лайк

Я не умею код читать, увы, и что мой способ ломает мне не известно, но так работает уже 2 с лишним года все, и даже с учётом того что я уже на 4.12+++

Можете подсказать, что в моем случае ломается исходя из следующей функции? Может я не замечал ещё)

Покажите скрин начиная со строчки 100 и до 126

см строчка 116 - там при вызове функции передается переменная которая не объявлена ранее $change_order_status. Ошибка - Undefined variable ‘$change_order_status’

1 лайк

О какой платёжной системе идет речь? В настройках Робокассы, например, можно указать, на какой статус менять заказ после успешной оплаты. Соответственно, проблемы и нет.

Речь об оплате после подтверждения(“Повторная оплата”), клик на кнопку Оплатить в кабинете клиента производит смену статуса на Открыт и потом идет переадресация на платежный шлюз или куда там уже

Еще веселее это работало(не работало) с модулем RetailFactory Оплата после подтверждения, там вообще вот такое веселье было - Заказ падает в статусе Ожидает подтверждения, и пошло поехахло, еще и кнопка оплаты пропадала)) давно было уж, деталей не помню

Да, действительно, заказ снова получает статус “O”. Считаю это ненужным (заказ не должен менять статус в этой ситуации) и ставлю лайк вашей теме. Будет здорово, если вы еще в первом сообщении добавите опрос - может так быстрее разработчики заметят проблему.

Добрый день! Скажите пожалуйста, хотя бы каким нибудь образом удалось решить проблему перехода заказа на “новый” после нажатия клиентом кнопки “оплатить”?

Полтора года назад решил вопрос с помощью уважаемого migpa, который посоветовал закомментировать $change_order_status = STATUSES_ORDER;
Пара модулей RetailFactory Оплата после подтверждения и модуль от ассиста
Тогда проблема решилась, всё до сих пор работает как часы!

Сейчас на другом сайте столкнулся с такой же проблемой, но только Оплата после подтверждения и модуль Сбербанка ( с сайта сбера)
Закомментировал так же $change_order_status = STATUSES_ORDER;, но это не помогло! Всё равно заказ создается вновь, клиенту приходят сообщения, в журнале полный треш с заказом!
Подскажите пожалуйста, как решить проблему??!

1 лайк