За последние 24 часа нас посетили 18385 программистов и 1611 роботов. Сейчас ищут 2024 программиста ...

Проблема в ветке site->Robokassa->site(resultUrl)

Тема в разделе "Прочие вопросы по PHP", создана пользователем efremovdenis, 15 янв 2015.

  1. efremovdenis

    efremovdenis Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте
    Есть проблема, которую я даже не знаю к чему отнести за счёт полного непонимания причин её появления.
    Кратко о проблеме:
    1) Есть сайт с формой. После выбора и заполнения полей отправляем на страницу проверки полей. Далее есть кнопка - оплатить.
    2) В этот момент переходим на сайт Робокассы (тест сервер, естественно).
    Все методы отсылки данных с этого сервиса - POST.
    Т.е. на мой SuccessURL адрес должны прийти данные в формате POST с некоторыми значениями, которые я должен проверить.
    Однако этого массива POST я не получаю!
    Ссылки являются реальными, рабочими.
    Может кто чем помочь? Или хоть толкнуть в нужную сторону?
    Спасибо.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А как ты определил что нет данных?
     
  3. efremovdenis

    efremovdenis Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    на странице ResultURL:
    Код (Text):
    1. print_r($_REQUEST);
    Пустой массив
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.116
    Симпатии:
    1.244
    Адрес:
    там-сям
    толкаю в сторону документации по АПИ. видимо что-то ты понял неправильно.

    Добавлено спустя 52 секунды:
    p.s. если сказано POST, почему смотришь REQUEST? трудно отвыкнуть от поповщины?
     
  5. efremovdenis

    efremovdenis Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    REQUEST я использую чтобы увидеть все данные(GET и POST)

    API понял правильно, т.к. до этого работал с робокассой, всё было нормально.
    Именно в этом проекте возникла такая проблема.

    Добавлено спустя 1 минуту 20 секунд:
    Да и техподдержка робокассы послала с сообщением
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    SuccessURL вызывает сервер API и/или пользователь?
     
  7. efremovdenis

    efremovdenis Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    Пользователь, переходя по кнопке "оплатить", уходит на сайт робокассы.
    В какой-то момент от сервиса робокассы приходят данные. Нужно эти данные проверить.
    Отсылает API, пользователь не видит этих данных и не должен знать об этой странице.

    Робокасса меня послала, возможно, ошибка на моей стороне. Куда идти - понятия не имею. Раньше не было проблем с подобным.
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    так если сервер робокассы вызывает твой скрипт, с чего бы print_r($_REQUEST); что-то показывать?
    нужно var_export и запись в файл сделать, когда робокасса вызовет скрипт, то запишет данные вызова.
     
  9. efremovdenis

    efremovdenis Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    $_REQUEST используется для проверки данных на моём сервере моим же скриптом. В нём должны придти данные, которые я сверю с БД и тд.
    В случае, когда всё совпадает и нет ошибок = я ДОЛЖЕН вывести на страницу сообщение вида "OK#5"
    Иначе - "Bad sign"

    С робокассы взял демо-магазин. Вот его ResultURL.php
    Код (PHP):
    1. // чтение параметров
    2. // read parameters
    3. $out_summ = $_REQUEST["OutSum"];
    4. $inv_id = $_REQUEST["InvId"];
    5. $shp_item = $_REQUEST["Shp_item"];
    6. $crc = $_REQUEST["SignatureValue"];
    7.  
    8. $crc = strtoupper($crc);
    9.  
    10. $my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass2:Shp_item=$shp_item"));
    11.  
    12. // проверка корректности подписи
    13. // check signature
    14. if ($my_crc !=$crc)
    15. {
    16.   echo "bad sign\n";
    17.   exit();
    18. }
    19.  
    20. // признак успешно проведенной операции
    21. // success
    22. echo "OK$inv_id\n";
    Моя же проблема в том, что $_REQUEST - пустой, т.е. данные не приходят
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А где код который записывает в файл дамп $_REQUEST когда этот скрипт запрашивает робокасса?
     
  11. efremovdenis

    efremovdenis Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    Какой файл? Зачем он мне, когда вся работа с бд?
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.116
    Симпатии:
    1.244
    Адрес:
    там-сям
    К.О. считает, что "все данные" включают в себя еще и COOKIE и вообще, ты не знаешь какие из них откуда. Это обязательно породит проблемы в будущем.

    denis01 правильно тебе пишет: кажется ты не понимаешь, что print_r в данном случае не подходит. надо писать все вызовы в логи!
     
  13. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Это обычный массив который вполне может быть зачищен и перемещен совершенно в другую переменную. Поэтому робокасса направила вас копать в совершенно правильном направлении.
    На иных проектах то что пришло в POSTе вы вполне можете там не обнаружить и достать из $_GET.
     
  14. efremovdenis

    efremovdenis Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    В $_REQUEST ничего нет => POST и GET - пустые.
    Почему-то очищается только POST.
    Попробовал сделать то же самое, но на уровне GET. Всё работает, все данные есть. Но что с POST?

    В логи нечего писать, т.к. нет данных. Их просто нет. Они отрезаются где-то До этого момента. Вот я и пытаюсь узнать, на каком именно уровне.
     
  15. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Чего там понимать то: из Index.php пишите все эти массивы в файл. Если там пусто, то смотрите выше в настройки хоста и сервера. Либо посмотрите как вообще на проекте устроена работа с данными запросов в других контроллерах, если проект не ваш. Наверняка всё пишется в какой-нибудь объект request
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    efremovdenis, а как ты без записи в лог смог проверить какая информация приходит? Её же отправляет сервер робокассы, и ты не видишь что он делает, только если записать запрос в файл.
     
  17. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.116
    Симпатии:
    1.244
    Адрес:
    там-сям
    он реально не понимает. "данных же нет, чо писать?" )))

    это печально.
     
  18. SerfUA

    SerfUA Активный пользователь

    С нами с:
    18 фев 2014
    Сообщения:
    75
    Симпатии:
    4
    Точно такая же проблема. Метод $_POST приходит пустой(((
    Щас буду пробовать через GET. ОЧень надеюсь что прийдет поможет.