Перейти к содержанию
Официальный форум поддержки Simpla

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


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

При настройке робокассы указываю 

Success Url -  https://site.ru/order/

Fail Url -  https://site.ru/order/

Но при возврате кидает на страницу  https://site.ru/order/  ну и соответственно 404.

Кто недавно ставил робокассу? Может что поменялось?

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

 

 

Изменено пользователем Kami
Ссылка на сообщение
Поделиться на другие сайты
В 15.02.2022 в 11:34, Kami сказал:

Success Url -  https://site.ru/order/

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

Ссылка на сообщение
Поделиться на другие сайты
19 часов назад, a13x сказал:

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

По сути идентификатор дергает callback.php

$order_id = intval($_POST['InvId']);

Мы получается дергаем с пост запроса id

по нему тащим весь заказ

$order = $simpla->orders->get_order(intval($order_id));

Потом уже проверяем статус списываем товары и редиректим на страницу заказа.

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

В инструкции робокассы указывается что надо указать 

Success Url -  https://site.ru/order/

Fail Url -  https://site.ru/order/

Ну и корректную ссылку на callback

В общем callback отрабатывает ( заказ становится оплачен, переносится в другую группу)

А вот редирект не срабатывает. Точно нужно что то передавать с кнопкой?

плагин взял тут - https://github.com/kvalood/Robokassa

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

Платежный плагин не правил

Изменено пользователем Kami
Ссылка на сообщение
Поделиться на другие сайты

Робокасса отработала нормально.

Тут нужно смотреть на работу callback. Если статус заказ меняется и он становится оплачен. Дальше должна быть отправка писем покупателю и админу, может быть ошибка отправки и происходит остановка. Дальше нужно распечатать $order->url и посмотреть вывод 

Ссылка на сообщение
Поделиться на другие сайты
27 минут назад, alexivchenko сказал:

Робокасса отработала нормально.

Тут нужно смотреть на работу callback. Если статус заказ меняется и он становится оплачен. Дальше должна быть отправка писем покупателю и админу, может быть ошибка отправки и происходит остановка. Дальше нужно распечатать $order->url и посмотреть вывод 

Допустим , есть заказ №60

перехожу по ссылке site.ru/payment/Robokassa/callback.php?InvId=60

То есть передаю ему номер заказа 60, но по факту 

if(empty($order))
	die('Оплачиваемый заказ не найден');

Срабатывает это условие, что $order пустая. Что то совсем не врубаюсь что ему надо.

Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, Kami сказал:

Допустим , есть заказ №60

перехожу по ссылке site.ru/payment/Robokassa/callback.php?InvId=60

То есть передаю ему номер заказа 60, но по факту 


if(empty($order))
	die('Оплачиваемый заказ не найден');

Срабатывает это условие, что $order пустая. Что то совсем не врубаюсь что ему надо.

Хотя по идее передаю же в пост запросе id заказа

$order_id = intval($_POST['InvId']);

site.ru/payment/Robokassa/callback.php?InvId=60

Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, Kami сказал:

Хотя по идее передаю же в пост запросе id заказа


$order_id = intval($_POST['InvId']);

site.ru/payment/Robokassa/callback.php?InvId=60

Так там получение id заказа методом POST а не GET

Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, alexivchenko сказал:

Так там получение id заказа методом POST а не GET

Для теста, замените 

$order_id = intval($_POST['InvId']);

на 

$order_id = intval($_GET['InvId']);

И проверяйте site.ru/payment/Robokassa/callback.php?InvId=60

Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, alexivchenko сказал:

Так там получение id заказа методом POST а не GET

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

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

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

Ну раз это срабатывает, то значит в принципе $order->id на месте.

Получается как мне посмотреть что прилетает POST запросом с робокассы?

Ссылка на сообщение
Поделиться на другие сайты
26 минут назад, Kami сказал:

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


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

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

Ну раз это срабатывает, то значит в принципе $order->id на месте.

Получается как мне посмотреть что прилетает POST запросом с робокассы?

die(print_r($_POST));

Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, alexivchenko сказал:

die(print_r($_POST));

Так пробовал , но при  оплате и возврате в магазин, всё равно кидает на site.ru/order/

и без вариантов.

Ссылка на сообщение
Поделиться на другие сайты
30 минут назад, Kami сказал:

Так пробовал , но при  оплате и возврате в магазин, всё равно кидает на site.ru/order/

и без вариантов.

Нужно прописать не в конце файла

die(print_r($_POST));

а допустим выше 

$order_id = intval($_POST['InvId']);

 

Ссылка на сообщение
Поделиться на другие сайты
Только что, alexivchenko сказал:

Нужно прописать не в конце файла


die(print_r($_POST));

а допустим выше 


$order_id = intval($_POST['InvId']);

 

Да собственно там и ловил

Ссылка на сообщение
Поделиться на другие сайты
43 минуты назад, alexivchenko сказал:

Нужно прописать не в конце файла


die(print_r($_POST));

а допустим выше 


$order_id = intval($_POST['InvId']);

 

 

В целом по инструкции в ЛК , настройки таковы

https://disk.yandex.ru/i/jG_NPk9wZRk_vQ

Я просто в целом взаимодействие не пойму.

По callback проходит оплата , обновляется статус и т.д. с этим ок.

Но ведь я в настройках указываю  

Success Url -  https://site.ru/order/

И получается обработав callback он тупо редиректит на  Success Url

И соответственно получаю ту ссылку что записана в настройках.

Хотя по сути в callback указывается редирект на страницу заказа. В общем как то запутано. Кто может обьяснить куда копать?

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

ResultUrl - это адрес, по которому отправляется callback для МАГАЗИНА.

По этому адресу ваш магазин получает данные об оплате от Робокассы.

Success Url и FailUrl - это адреса, по которым отправляется КЛИЕНТ, после оплаты в Робокассе

По-моему, так это работает.

По поводу урлов - их надо передавать в форме для Робокассы в Robokassa.php

 

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

Кстати, посмотрел сейчас стандартный файл Robokassa.php - там все довольно забавно))

		$success_url = $this->config->root_url.'/order/'.$order->url;
		
		$fail_url = $this->config->root_url.'/order/'.$order->url;

Урлы формируются, но в Робокассу не передаются)

Ссылка на сообщение
Поделиться на другие сайты
Только что, Kosjak76 сказал:

Кстати, посмотрел сейчас стандартный файл Robokassa.php - там все довольно забавно))


		$success_url = $this->config->root_url.'/order/'.$order->url;
		
		$fail_url = $this->config->root_url.'/order/'.$order->url;

Урлы формируются, но в Робокассу не передаются)

 На это тоже обратил внимание,  вообще к callback вопросов нет, полностью все отрабатывает как надо, а потом просто редиректит согласно настройкам в ЛК робокассы site.ru/order

Ну вот поэтому и не пойму, как робокасса узнает что ей надо перейти по /$order->url

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

Вы путаете абсолютно РАЗНЫЕ вещи

Во-первых - переадресацию КЛИЕНТА после оплаты на Success Url

Во-вторых - взаимодействие Робокассы и МАГАЗИНА через ResultUrl  и callback.php

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

На самом деле, переход пользователя по ссылке SuccessURL – это формальность, которая нужна только для того, чтобы пользователь вернулся обратно к Вам и получил информацию о том, что он сделал всё правильно, и его заказ ждёт его там-то и там-то. Проводить подтверждение оплаты у себя по базе и все остальные действия, связанные с выдачей покупки, Вам нужно при получении уведомления на ResultURL, потому что именно на него ROBOKASSA передаёт подтверждающие данные об оплате в автоматическом режиме (т. е. в любом случае и без участия пользователя).

https://docs.robokassa.ru/#1261

Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Kosjak76 сказал:

Вы путаете абсолютно РАЗНЫЕ вещи

Во-первых - переадресацию КЛИЕНТА после оплаты на Success Url

Во-вторых - взаимодействие Робокассы и МАГАЗИНА через ResultUrl  и callback.php

По сути все взаимодействие должно строиться же на callback правильно? 

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

в конце сделали редирект и всё

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

По сути вот так я вижу. То есть сейчас даже копать куда не знаю, по сути $order , пост приходящий с робокассы поймать не получается. 

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

По идее, при переходе по Success Url пользователю показывается заказ, который он сделал и ID которого находится в $_SESSION['order_id']

Ссылка на сообщение
Поделиться на другие сайты
В 15.02.2022 в 11:34, Kami сказал:

При настройке робокассы указываю 

Success Url -  https://site.ru/order/

Fail Url -  https://site.ru/order/

Но при возврате кидает на страницу  https://site.ru/order/  ну и соответственно 404.

Кто недавно ставил робокассу? Может что поменялось?

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

 

 

в Robokassa/callback.php есть 

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

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

$order->url

 

Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Kosjak76 сказал:

Ну да, по сути там и кнопок нет, после оплаты. Сразу после оплаты автоматом редиректит на сайт.

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

БЛИН, ЕЩЕ РАЗ

ДЛЯ ОСОБО ОДАРЕННЫХ

КЛИЕНТ НИКОГДА НЕ ПОПАДАЕТ НА callback 

НИКОГДА!!!!!!!!!!!!!

Именно поэтому там НЕТ никаких редиректов

НЕТ и НЕ НАДО

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...