Здравствуйте Есть проблема, которую я даже не знаю к чему отнести за счёт полного непонимания причин её появления. Кратко о проблеме: 1) Есть сайт с формой. После выбора и заполнения полей отправляем на страницу проверки полей. Далее есть кнопка - оплатить. 2) В этот момент переходим на сайт Робокассы (тест сервер, естественно). Все методы отсылки данных с этого сервиса - POST. Т.е. на мой SuccessURL адрес должны прийти данные в формате POST с некоторыми значениями, которые я должен проверить. Однако этого массива POST я не получаю! Ссылки являются реальными, рабочими. Может кто чем помочь? Или хоть толкнуть в нужную сторону? Спасибо.
толкаю в сторону документации по АПИ. видимо что-то ты понял неправильно. Добавлено спустя 52 секунды: p.s. если сказано POST, почему смотришь REQUEST? трудно отвыкнуть от поповщины?
REQUEST я использую чтобы увидеть все данные(GET и POST) API понял правильно, т.к. до этого работал с робокассой, всё было нормально. Именно в этом проекте возникла такая проблема. Добавлено спустя 1 минуту 20 секунд: Да и техподдержка робокассы послала с сообщением
Пользователь, переходя по кнопке "оплатить", уходит на сайт робокассы. В какой-то момент от сервиса робокассы приходят данные. Нужно эти данные проверить. Отсылает API, пользователь не видит этих данных и не должен знать об этой странице. Робокасса меня послала, возможно, ошибка на моей стороне. Куда идти - понятия не имею. Раньше не было проблем с подобным.
так если сервер робокассы вызывает твой скрипт, с чего бы print_r($_REQUEST); что-то показывать? нужно var_export и запись в файл сделать, когда робокасса вызовет скрипт, то запишет данные вызова.
$_REQUEST используется для проверки данных на моём сервере моим же скриптом. В нём должны придти данные, которые я сверю с БД и тд. В случае, когда всё совпадает и нет ошибок = я ДОЛЖЕН вывести на страницу сообщение вида "OK#5" Иначе - "Bad sign" С робокассы взял демо-магазин. Вот его ResultURL.php Код (PHP): // чтение параметров // read parameters $out_summ = $_REQUEST["OutSum"]; $inv_id = $_REQUEST["InvId"]; $shp_item = $_REQUEST["Shp_item"]; $crc = $_REQUEST["SignatureValue"]; $crc = strtoupper($crc); $my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass2:Shp_item=$shp_item")); // проверка корректности подписи // check signature if ($my_crc !=$crc) { echo "bad sign\n"; exit(); } // признак успешно проведенной операции // success echo "OK$inv_id\n"; Моя же проблема в том, что $_REQUEST - пустой, т.е. данные не приходят
К.О. считает, что "все данные" включают в себя еще и COOKIE и вообще, ты не знаешь какие из них откуда. Это обязательно породит проблемы в будущем. denis01 правильно тебе пишет: кажется ты не понимаешь, что print_r в данном случае не подходит. надо писать все вызовы в логи!
Это обычный массив который вполне может быть зачищен и перемещен совершенно в другую переменную. Поэтому робокасса направила вас копать в совершенно правильном направлении. На иных проектах то что пришло в POSTе вы вполне можете там не обнаружить и достать из $_GET.
В $_REQUEST ничего нет => POST и GET - пустые. Почему-то очищается только POST. Попробовал сделать то же самое, но на уровне GET. Всё работает, все данные есть. Но что с POST? В логи нечего писать, т.к. нет данных. Их просто нет. Они отрезаются где-то До этого момента. Вот я и пытаюсь узнать, на каком именно уровне.
Чего там понимать то: из Index.php пишите все эти массивы в файл. Если там пусто, то смотрите выше в настройки хоста и сервера. Либо посмотрите как вообще на проекте устроена работа с данными запросов в других контроллерах, если проект не ваш. Наверняка всё пишется в какой-нибудь объект request
efremovdenis, а как ты без записи в лог смог проверить какая информация приходит? Её же отправляет сервер робокассы, и ты не видишь что он делает, только если записать запрос в файл.
Точно такая же проблема. Метод $_POST приходит пустой((( Щас буду пробовать через GET. ОЧень надеюсь что прийдет поможет.