Jump to content
Sign in to follow this  
valper

Переадресация после завершения заказа

Recommended Posts

Доброго времени суток. Версия движка OcStore 2.1 оформление заказа стандартное из коробки. Вопрос, как сделать что-бы по завершению заказа перебрасывало не на http://мойсайт/success , а на http://мойсайт/download

Share this post


Link to post
Share on other sites

catalog/controller/checkout/success.php

$this->response->redirect($this->url->link('account/download'));

 

Share this post


Link to post
Share on other sites

Код только этот разместите после очистки сессий.

Иначе не будет очищаться корзина.

Share this post


Link to post
Share on other sites

С другой стороны, так не сильно правильно делать.

Или делать только 100% уверенности, что заказ оплачен.

Для этого поставить проверку по статусу заказа.

И в этом методе есть ещё один минус, при оплате без регистрации нет доступа к странице account/download

Share this post


Link to post
Share on other sites
10 часов назад, OcAppLab сказал:

С другой стороны, так не сильно правильно делать.

Или делать только 100% уверенности, что заказ оплачен.

Для этого поставить проверку по статусу заказа.

И в этом методе есть ещё один минус, при оплате без регистрации нет доступа к странице account/download

Добрый день.

1. Я думал что проверка статуса есть по умолчанию, в админке

Статус заказа: В обработке;

Статус обработанного заказа: Ожидание;

Статус завершенного заказа: Сделка завершена;

Этого не достаточно? Вы имеете ввиду нужно в контроллере прописывать какие-то доп. условия?

2. Что касается регистрации, я учел этот момент и всегда подгружается форма с регистрацией нового клиента, а гостевую совсем убрал. 

Share this post


Link to post
Share on other sites
49 минут назад, valper сказал:

1. Я думал что проверка статуса есть по умолчанию, в админке

В админке, да, оно то есть. А в контроллере checkout/success (отвечает за страницу завершения заказа) этого нет.

И нужно делать дополнительный запрос, чтоб вытянуть статус заказа (его id, например) и по нему делать проверку.

Или, если у Вас для всех оплат стоит один статус заказа и Вы точно знаете, что после оплаты деньги поступят, тогда можно использовать спокойно 

12 часов назад, ocdroid сказал:

catalog/controller/checkout/success.php


$this->response->redirect($this->url->link('account/download'));

 

Вот этот вариант.

 

Только разместить его нужно где-то в конце этой проверки:

 

if (isset($this->session->data['order_id'])) {
	$this->cart->clear();

	// Add to activity log
	if ($this->config->get('config_customer_activity')) {
		$this->load->model('account/activity');

		if ($this->customer->isLogged()) {
			$activity_data = array(
				'customer_id' => $this->customer->getId(),
				'name'        => $this->customer->getFirstName() . ' ' . $this->customer->getLastName(),
				'order_id'    => $this->session->data['order_id']
			);

			$this->model_account_activity->addActivity('order_account', $activity_data);
		} else {
			$activity_data = array(
				'name'     => $this->session->data['guest']['firstname'] . ' ' . $this->session->data['guest']['lastname'],
				'order_id' => $this->session->data['order_id']
			);

			$this->model_account_activity->addActivity('order_guest', $activity_data);
		}
	}

	unset($this->session->data['shipping_method']);
	unset($this->session->data['shipping_methods']);
	unset($this->session->data['payment_method']);
	unset($this->session->data['payment_methods']);
	unset($this->session->data['guest']);
	unset($this->session->data['comment']);
	unset($this->session->data['order_id']);
	unset($this->session->data['coupon']);
	unset($this->session->data['reward']);
	unset($this->session->data['voucher']);
	unset($this->session->data['vouchers']);
	unset($this->session->data['totals']);
}

Чтоб очистилась корзина и сессии.

 

Получится, примерно так:

if (isset($this->session->data['order_id'])) {
	$this->cart->clear();

	// Add to activity log
	if ($this->config->get('config_customer_activity')) {
		$this->load->model('account/activity');

		if ($this->customer->isLogged()) {
			$activity_data = array(
				'customer_id' => $this->customer->getId(),
				'name'        => $this->customer->getFirstName() . ' ' . $this->customer->getLastName(),
				'order_id'    => $this->session->data['order_id']
			);

			$this->model_account_activity->addActivity('order_account', $activity_data);
		} else {
			$activity_data = array(
				'name'     => $this->session->data['guest']['firstname'] . ' ' . $this->session->data['guest']['lastname'],
				'order_id' => $this->session->data['order_id']
			);

			$this->model_account_activity->addActivity('order_guest', $activity_data);
		}
	}

	unset($this->session->data['shipping_method']);
	unset($this->session->data['shipping_methods']);
	unset($this->session->data['payment_method']);
	unset($this->session->data['payment_methods']);
	unset($this->session->data['guest']);
	unset($this->session->data['comment']);
	unset($this->session->data['order_id']);
	unset($this->session->data['coupon']);
	unset($this->session->data['reward']);
	unset($this->session->data['voucher']);
	unset($this->session->data['vouchers']);
	unset($this->session->data['totals']);
	
	// REDIRECT
	$this->response->redirect($this->url->link('account/download'));
}

Лучше это делать через модификатор, чтоб не править основные файлы CMS

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.