Jump to content

Возврат на страницу заказа Robokassa?


Recommended Posts

// Установим статус оплачен
$simpla->orders->update_order(intval($order->id), array('paid'=>1));

// Спишем товары  
$simpla->orders->close(intval($order->id));
$simpla->notify->email_order_user(intval($order->id));
$simpla->notify->email_order_admin(intval($order->id));


die("OK".$order_id."\n");

Вот так заканчивается callback 

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

в Robokassa/callback.php есть 


header('Location: ' . $simpla->config->root_url . '/order/' . $order->url, true, 302);

возможно идет верный редирект на страницу https://site.ru/order/ и должно быть подставлен url заказа, но так как у вас url был переделан видимо есть какие-то проблемы с выводом 


$order->url

 

Сюда можно ссылку хоть на что написать, все равно редирект идет на site.ru/order

Link to post
Share on other sites
Только что, Kosjak76 сказал:

// Установим статус оплачен
$simpla->orders->update_order(intval($order->id), array('paid'=>1));

// Спишем товары  
$simpla->orders->close(intval($order->id));
$simpla->notify->email_order_user(intval($order->id));
$simpla->notify->email_order_admin(intval($order->id));


die("OK".$order_id."\n");

Вот так заканчивается callback 

а зачем там тогда редирект?

Link to post
Share on other sites

БЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ!!!

Как еще обьяснить, чтоб ты понял?

callback  не имеет НИКАКОГО ОТНОШЕНИЯ к тому, куда попадает КЛИЕНТ

Link to post
Share on other sites

НИКАКОГО!!!

Я в душе не ебу, зачем кто-то вставил туда этот редирект

ОН там не нужен, потому что он НЕ СРАБОТАЕТ

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

Откуда вы взяли редирект в callback ??

Его там нет

И он там НЕ НУЖЕН

Взял в модуле на который мне дали робокассы спецы ссылку. Сказали что модуль актуальный.

Так ну по сути если callback у нас не участвует в формировании редиректа клиента на заказ, то где код который будет редиректить? то есть если брать из сессии order id то наверное где то должна быть функция 

get_order чтоб url вытащить и по нему редирект сделать?

Link to post
Share on other sites

Код читать умеешь?

Открой файл view/OrderView.php

Найди там конструкцию такую

if($url = $this->request->get('url', 'string'))
			$order = $this->orders->get_order((string)$url);
		elseif(!empty($_SESSION['order_id']))
			$order = $this->orders->get_order(intval($_SESSION['order_id']));
		else
			return false;

И попробуй разобраться, что происходит, когда клиент попадает на страницу сайт/order/

Без указания url заказа

Link to post
Share on other sites

@Kosjak76 прав

При переходе, если в $_SESSION['order_id'] есть данные, допустим заказ №60 то клиенту на странице https://site.ru/order/ будет показана информация заказа №60 даже без url

Вам нужно смотреть, что с сессией 

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

@Kosjak76 прав

При переходе, если в $_SESSION['order_id'] есть данные, допустим заказ №60 то клиенту на странице https://site.ru/order/ будет показана информация заказа №60 даже без url

Вам нужно смотреть, что с сессией 

Вот это я и пытаюсь обьяснить)

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

Нужно в index.php после session_start();

прописать


print_r($_SESSION);

и посмотреть, выводится ли 


[order_id] =>

 

Спасибо при оформлении заказа

Array ( [current_page] => /cart/ [id] => bfe7d172342ca3b926b565fb8546baa6 [admin] => admin [order_id] => 65 )

Получается это url заказа?  - bfe7d172342ca3b926b565fb8546baa6

		//$order->url = md5(uniqid($this->config->salt, true));
		$order->url = substr(time(), 2, 8);

Тут в функции add_order , доработка которая делает числовой , возможно из за нее и весь сыр бор?

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

Спасибо при оформлении заказа


Array ( [current_page] => /cart/ [id] => bfe7d172342ca3b926b565fb8546baa6 [admin] => admin [order_id] => 65 )

Получается это url заказа?  - bfe7d172342ca3b926b565fb8546baa6


		//$order->url = md5(uniqid($this->config->salt, true));
		$order->url = substr(time(), 2, 8);

Тут в функции add_order , доработка которая делает числовой , возможно из за нее и весь сыр бор?

1.

Забудем про 

$order->url

2.

[id] => bfe7d172342ca3b926b565fb8546baa6

Никакого отношения не имеет к заказу и url

3. 

Нас интересует 

[order_id] => 65

4. 

Перейдите на страницу https://site.ru/order/ и вы увидите на этой странице данные заказа под №65?

 

Link to post
Share on other sites

Замените у себя в view/OrderView.php

if($url = $this->request->get('url', 'string'))
			$order = $this->orders->get_order((string)$url);
		elseif(!empty($_SESSION['order_id']))
			$order = $this->orders->get_order(intval($_SESSION['order_id']));
		else
			return false;

на 

		if($url = $this->request->get('url', 'string')) {
			$order = $this->orders->get_order((string)$url);
		} elseif(!empty($_SESSION['order_id'])) {
			$order = $this->orders->get_order(intval($_SESSION['order_id']));
			header('Location: ' . $this->config->root_url . '/order/' . $order->url, true, 302);
		} else {
			return false;
		}	

Получается, если у нас в $_SESSION['order_id'] есть id номер заказа и мы переходим на страницу https://site.ru/order/, то нас перекинет на станицу с url заказа https://site.ru/order/453453545

Edited by alexivchenko
Link to post
Share on other sites
1 час назад, alexivchenko сказал:

Замените у себя в view/OrderView.php


if($url = $this->request->get('url', 'string'))
			$order = $this->orders->get_order((string)$url);
		elseif(!empty($_SESSION['order_id']))
			$order = $this->orders->get_order(intval($_SESSION['order_id']));
		else
			return false;

на 


		if($url = $this->request->get('url', 'string')) {
			$order = $this->orders->get_order((string)$url);
		} elseif(!empty($_SESSION['order_id'])) {
			$order = $this->orders->get_order(intval($_SESSION['order_id']));
			header('Location: ' . $this->config->root_url . '/order/' . $order->url, true, 302);
		} else {
			return false;
		}	

Получается, если у нас в $_SESSION['order_id'] есть id номер заказа и мы переходим на страницу https://site.ru/order/, то нас перекинет на станицу с url заказа https://site.ru/order/453453545

странная вещь, в режиме инкогнито не входя в админку, все супер, оформилось и редирект. а вот из под админки был вот такой трабл.

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

странная вещь, в режиме инкогнито не входя в админку, все супер, оформилось и редирект. а вот из под админки был вот такой трабл.

надо смотреть где-то затирается сессия или задваивается

может когда меняли код, забыли где-то убрать 

Link to post
Share on other sites
Только что, alexivchenko сказал:

надо смотреть где-то затирается сессия или задваивается

может когда меняли код, забыли где-то убрать 

да вот в том то и дело что к этому сайту имею чисто дружеское отношение, поэтому попросили глянуть. В общем даже редирект не стал добавлять в Orderview, для юзера работает, при админе такая дичь. Сейчас буду смотреть что там с сессиями, спасибо тебе и Kosjak76 за помощь!

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
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.

Loading...
×
×
  • Create New...