Перейти к содержанию
gexagen

[Доработка] Модуль Сбербанк ocStore 0.1.1 печать квитанции

Рекомендуемые сообщения

Обнаружил следующую ошибку в модуле Сбербанк ocStore 0.1.1 при печати квитанции из ссылки в письме о подтверждении заказа (ну это уже после исправления адреса ведущего в никуда на правильный, с адресом сайта):

В распечатываемом по этой ссылке бланке оказываются пустыми все поля относящиеся к заказу (номер, сумма, плательщик и т.д.). Проверьте у себя.

Лечится следующим образом: файл catalogcontrollerpaymentfl_sberbank.php находим:

		if ($order_id == ''){			$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);		}else{			$order_info = $this->model_account_order->getOrder($order_id);		}
меняем на:

		if ($order_id == ''){			$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);		}else{			$order_info = $this->model_checkout_order->getOrder($order_id);		}

Удачных правок...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не осилил в чем разница между двумя приведенными кусками кода ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не осилил в чем разница между двумя приведенными кусками кода :)

В оригинале вызывается функция model_account_order которой помимо номера заказа необходим и ID кастомера, соответственно, когда переходим по ссылке из письма, этого ID у нас нет и функция возвращает пустые значения, что и приводит к описанной проблеме.

Я заменил её на вызов функции model_checkout_order которой нужен только номер заказа для возврата информации о нем...

Странно, это только у меня такой глюк, или больше никто не проверял, какие там письма уходят покупателям?... :roll:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм ... перепроверю. Просто в этом случае возможно нарушения прав доступа. И к твой печатной форме сможет получить доступ любой зарегистрированный пользователь.Сегодня перепроверю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто в этом случае возможно нарушения прав доступа. И к твой печатной форме сможет получить доступ любой зарегистрированный пользователь.

Да, при этом возникает ситуация, что просто перебирая значение ID в адресной строке можно посмотреть Номера и суммы заказов, ФИО плательщиков и их адреса... на это я обратил внимание... Но в противном случае, т.е. со старым кодом, квитанции не печатаются совсем... что тоже не телемаркет... Защита от перебора бы не помешала, но как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто в этом случае возможно нарушения прав доступа. И к твой печатной форме сможет получить доступ любой зарегистрированный пользователь.

Да, при этом возникает ситуация, что просто перебирая значение ID в адресной строке можно посмотреть Номера и суммы заказов, ФИО плательщиков и их адреса... на это я обратил внимание... Но в противном случае, т.е. со старым кодом, квитанции не печатаются совсем... что тоже не телемаркет... Защита от перебора бы не помешала, но как?
в общем, окончательный вариант который сделал у себя такой:все правки в файле catalogcontrollerpaymentfl_sberbank.phpправим функцию confirm, строку:
		$comment .= $this->language->get('text_instruction_2') . $this->data['order_id'] = $order_info['order_id'] . $this->language->get('text_instruction_3') . "nn";
меняем на:
		$check = md5($order_info['order_id'].'ваш секретный код');		$comment .= $this->language->get('text_instruction_2') . $this->data['order_id'] = $order_info['order_id'] . '&check=' . $check . $this->language->get('text_instruction_3') . "nn";
это добавляет к нашему адресу дополнительную переменную, содержащую проверочный код, уникальный для каждого номера заказа.далее, правим функцию printpay, строки:
		}else{			$order_info = $this->model_account_order->getOrder($order_id);		}
меняем на:
		}else{			$check = md5($order_id.'ваш секретный код');			if ($check != $this->request->get['check']) $order_id = '';			$order_info = $this->model_checkout_order->getOrder($order_id);		}
здесь мы проверяем передаваемый в ссылке код, и при несоответствии, обнуляем номер заказа, чтоб не показать злоумышленнику данные чужих заказов.Не забудьте заменить в коде стринг 'ваш секретный код' на своё значение ;) В идеале бы конечно, в случае несовпадения выводить не пустую квитанцию а сообщение об ошибке переданных данных, но тут нужно еще дополнительный шаблон строчить и т.д. и т.п... лень ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.