Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

Обнаружил следующую ошибку в модуле Сбербанк 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);		}

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

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

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

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

Да, при этом возникает ситуация, что просто перебирая значение 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);		}
здесь мы проверяем передаваемый в ссылке код, и при несоответствии, обнуляем номер заказа, чтоб не показать злоумышленнику данные чужих заказов.Не забудьте заменить в коде стринг 'ваш секретный код' на своё значение ;) В идеале бы конечно, в случае несовпадения выводить не пустую квитанцию а сообщение об ошибке переданных данных, но тут нужно еще дополнительный шаблон строчить и т.д. и т.п... лень ;)
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.