Kami Posted February 15, 2022 Report Share Posted February 15, 2022 (edited) При настройке робокассы указываю Success Url - https://site.ru/order/ Fail Url - https://site.ru/order/ Но при возврате кидает на страницу https://site.ru/order/ ну и соответственно 404. Кто недавно ставил робокассу? Может что поменялось? Кстати на сайте дорабатывался url заказа.(не мной) , по сути переделан в числовой чтоб можно было отслеживать заказ. Edited February 15, 2022 by Kami Quote Link to post Share on other sites
a13x Posted February 16, 2022 Report Share Posted February 16, 2022 В 15.02.2022 в 11:34, Kami сказал: Success Url - https://site.ru/order/ тут не хватает идентификатора заказа, а так как он у всех уникальный, то его надо передавать в кнопке оплаты. Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 (edited) 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 который в свою очередь средиректит уже куда нужно или разбираться что где в движке сделали. Платежный плагин не правил Edited February 17, 2022 by Kami Quote Link to post Share on other sites
sergeevizh Posted February 17, 2022 Report Share Posted February 17, 2022 Робокасса отработала нормально. Тут нужно смотреть на работу callback. Если статус заказ меняется и он становится оплачен. Дальше должна быть отправка писем покупателю и админу, может быть ошибка отправки и происходит остановка. Дальше нужно распечатать $order->url и посмотреть вывод Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 27 минут назад, alexivchenko сказал: Робокасса отработала нормально. Тут нужно смотреть на работу callback. Если статус заказ меняется и он становится оплачен. Дальше должна быть отправка писем покупателю и админу, может быть ошибка отправки и происходит остановка. Дальше нужно распечатать $order->url и посмотреть вывод Допустим , есть заказ №60 перехожу по ссылке site.ru/payment/Robokassa/callback.php?InvId=60 То есть передаю ему номер заказа 60, но по факту if(empty($order)) die('Оплачиваемый заказ не найден'); Срабатывает это условие, что $order пустая. Что то совсем не врубаюсь что ему надо. Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 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 Quote Link to post Share on other sites
sergeevizh Posted February 17, 2022 Report Share Posted February 17, 2022 9 минут назад, Kami сказал: Хотя по идее передаю же в пост запросе id заказа $order_id = intval($_POST['InvId']); site.ru/payment/Robokassa/callback.php?InvId=60 Так там получение id заказа методом POST а не GET Quote Link to post Share on other sites
sergeevizh Posted February 17, 2022 Report Share Posted February 17, 2022 5 минут назад, alexivchenko сказал: Так там получение id заказа методом POST а не GET Для теста, замените $order_id = intval($_POST['InvId']); на $order_id = intval($_GET['InvId']); И проверяйте site.ru/payment/Robokassa/callback.php?InvId=60 Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 7 минут назад, alexivchenko сказал: Так там получение id заказа методом POST а не GET а блин .Точно, но по факту получается робокасса не возвращает постом номер заказа, хотя при отправке заказа и его оплате все передается и оплата на робокассе проходит как надо // Установим статус оплачен $simpla->orders->update_order(intval($order->id), $order_update); // Спишем товары $simpla->orders->close(intval($order->id)); Ну раз это срабатывает, то значит в принципе $order->id на месте. Получается как мне посмотреть что прилетает POST запросом с робокассы? Quote Link to post Share on other sites
sergeevizh Posted February 17, 2022 Report Share Posted February 17, 2022 26 минут назад, Kami сказал: а блин .Точно, но по факту получается робокасса не возвращает постом номер заказа, хотя при отправке заказа и его оплате все передается и оплата на робокассе проходит как надо // Установим статус оплачен $simpla->orders->update_order(intval($order->id), $order_update); // Спишем товары $simpla->orders->close(intval($order->id)); Ну раз это срабатывает, то значит в принципе $order->id на месте. Получается как мне посмотреть что прилетает POST запросом с робокассы? die(print_r($_POST)); Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 3 минуты назад, alexivchenko сказал: die(print_r($_POST)); Так пробовал , но при оплате и возврате в магазин, всё равно кидает на site.ru/order/ и без вариантов. Quote Link to post Share on other sites
sergeevizh Posted February 17, 2022 Report Share Posted February 17, 2022 30 минут назад, Kami сказал: Так пробовал , но при оплате и возврате в магазин, всё равно кидает на site.ru/order/ и без вариантов. Нужно прописать не в конце файла die(print_r($_POST)); а допустим выше $order_id = intval($_POST['InvId']); Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 Только что, alexivchenko сказал: Нужно прописать не в конце файла die(print_r($_POST)); а допустим выше $order_id = intval($_POST['InvId']); Да собственно там и ловил Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 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 указывается редирект на страницу заказа. В общем как то запутано. Кто может обьяснить куда копать? Quote Link to post Share on other sites
Kosjak76 Posted February 17, 2022 Report Share Posted February 17, 2022 ResultUrl - это адрес, по которому отправляется callback для МАГАЗИНА. По этому адресу ваш магазин получает данные об оплате от Робокассы. Success Url и FailUrl - это адреса, по которым отправляется КЛИЕНТ, после оплаты в Робокассе По-моему, так это работает. По поводу урлов - их надо передавать в форме для Робокассы в Robokassa.php Quote Link to post Share on other sites
Kosjak76 Posted February 17, 2022 Report Share Posted February 17, 2022 Кстати, посмотрел сейчас стандартный файл Robokassa.php - там все довольно забавно)) $success_url = $this->config->root_url.'/order/'.$order->url; $fail_url = $this->config->root_url.'/order/'.$order->url; Урлы формируются, но в Робокассу не передаются) Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 Только что, 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 Quote Link to post Share on other sites
Kosjak76 Posted February 17, 2022 Report Share Posted February 17, 2022 Да, в робокассе не предусмотрено такого Quote Link to post Share on other sites
Kosjak76 Posted February 17, 2022 Report Share Posted February 17, 2022 Вы путаете абсолютно РАЗНЫЕ вещи Во-первых - переадресацию КЛИЕНТА после оплаты на Success Url Во-вторых - взаимодействие Робокассы и МАГАЗИНА через ResultUrl и callback.php Quote Link to post Share on other sites
Kosjak76 Posted February 17, 2022 Report Share Posted February 17, 2022 Цитата На самом деле, переход пользователя по ссылке SuccessURL – это формальность, которая нужна только для того, чтобы пользователь вернулся обратно к Вам и получил информацию о том, что он сделал всё правильно, и его заказ ждёт его там-то и там-то. Проводить подтверждение оплаты у себя по базе и все остальные действия, связанные с выдачей покупки, Вам нужно при получении уведомления на ResultURL, потому что именно на него ROBOKASSA передаёт подтверждающие данные об оплате в автоматическом режиме (т. е. в любом случае и без участия пользователя). https://docs.robokassa.ru/#1261 Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 1 минуту назад, Kosjak76 сказал: Вы путаете абсолютно РАЗНЫЕ вещи Во-первых - переадресацию КЛИЕНТА после оплаты на Success Url Во-вторых - взаимодействие Робокассы и МАГАЗИНА через ResultUrl и callback.php По сути все взаимодействие должно строиться же на callback правильно? Пост запросом получили все данные которые пришли с робокассы, нашли и подтянули заказ, и уже работая с заказом, пометили флагом оплачен ,перенесли и отправили письмо. в конце сделали редирект и всё header('Location: ' . $simpla->config->root_url . '/order/' . $order->url, true, 302); По сути вот так я вижу. То есть сейчас даже копать куда не знаю, по сути $order , пост приходящий с робокассы поймать не получается. Quote Link to post Share on other sites
Kosjak76 Posted February 17, 2022 Report Share Posted February 17, 2022 По идее, при переходе по Success Url пользователю показывается заказ, который он сделал и ID которого находится в $_SESSION['order_id'] Quote Link to post Share on other sites
sergeevizh Posted February 17, 2022 Report Share Posted February 17, 2022 В 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 Quote Link to post Share on other sites
Kami Posted February 17, 2022 Author Report Share Posted February 17, 2022 2 минуты назад, Kosjak76 сказал: https://docs.robokassa.ru/#1261 Ну да, по сути там и кнопок нет, после оплаты. Сразу после оплаты автоматом редиректит на сайт. Quote Link to post Share on other sites
Kosjak76 Posted February 17, 2022 Report Share Posted February 17, 2022 БЛИН, ЕЩЕ РАЗ ДЛЯ ОСОБО ОДАРЕННЫХ КЛИЕНТ НИКОГДА НЕ ПОПАДАЕТ НА callback НИКОГДА!!!!!!!!!!!!! Именно поэтому там НЕТ никаких редиректов НЕТ и НЕ НАДО Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.