Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


gexagen

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);		}

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

Надіслати
Поділитися на інших сайтах


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

В оригинале вызывается функция 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.