Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.02.2017 10:52:19

curl-запрос со сторонего сервиса

Для оплаты товара покупатель переходит из online-магазина в платежную систему, совершает там платеж,
платежная система отсылает фоном уведомление с необходимыми даными post-запросом посредством curl.

Уведомление приходит на адрес магазина mysait/order/notification, соотвествующий контроллер:

class OrderController extends Controller {
    public function postNotification(Request $request)
    {
        //здесь запись данных запроса в переменные сессии
    }
}

Затем покупатель жмет на ссылку "покинуть страницу" и уходит с платежной системы, адрес возврата: mysait/order/result.
Соответствующий контроллер:

class OrderController extends Controller {
    public function anyResult(Request $request)
    {
        //здесь выборка данных сессии, сохраненных ранее
    }
}

Проблема в том, что в сессии необходимых данных нет (в принципе код сохранения-извлечения сесс. данных верен).
Что я делаю не так?

Не в сети

#2 09.02.2017 12:18:29

Re: curl-запрос со сторонего сервиса

сессии там и не будет – запрос же не из браузера приходит а с сервера платёжной системы. все данные, которые ты пытаешься взять из сессии надо передавать в платёжную систему дополнительными полями, которые платёжная система передаёт на колбэках обратно на сайт – там уже документацию смотреть надо. это с любой платёжной системой так делается обычно

Не в сети

#3 09.02.2017 12:36:06

Re: curl-запрос со сторонего сервиса

А можно чуток поконкретней.
Я должен получить от платежной системы некие данные, скажем:

class OrderController extends Controller {
    public function postNotification(Request $request)
    {
        $data1 = $request->only('data1');
        $data2 = $request->only('data2');
        //далее мне надо как-то сохранить данные $data1 и $data2 для дальнейшего пользования (как???)
        //проверить корректность этих данных, сделать запись в бд...в общем, какие-то стандартные манипуляции по обработке
        //а платежной системе отправить ответ (в случае корректности этих данных) - все хорошо, либо наоборот все плохо
    }
}

Пусть не сессия, то каким еще вариантом сохраняем?

Не в сети

#4 09.02.2017 12:56:27

Re: curl-запрос со сторонего сервиса

открываешь документацию по апи платёжной системы, смотришь какие можно ей передать параметры такие, чтобы она их передавала в нотификации и – заносишь туда все данные, которые потребуются при обработке платежа

например, не так давно интегрировал сайт с яндекс-кассой. открываем документацию и видим – https://cl.ly/3m0F1u0g1E2Y то есть все параметры с нестандартными названиями будут переданы в колбэки в неизменном виде. соответственно я собираю всю нужную инфу в массив, сериализую в строку и кладу в форму <input type="hidden" name="order_data" value="..."> и потом десериализую в обработчике из $_REQUEST['order_data'] обратно – всё работает

у твоей платёжной системы скорее всего своё апи, но в документации должно быть прописано что именно передаётся в колбэки, какие пользовательские данные можно туда занести чтобы потом их обратно прочитать

Не в сети

#5 09.02.2017 13:13:40

Re: curl-запрос со сторонего сервиса

Я знаю, какие данные должны прийти от платежной системы. И вижу в логах linux-сервера, что до сервера они в принципе дошли:

63.83.16.50 - - [09/Feb/2017:10:46:19 +0700] "POST /order/notification HTTP/1.1" "Signature=6F16D&OrderID=0078&Status=authorized" 200 20692 

Но $request их не видит.
Отдаются они curl-ом.
Вот и не понятно, то ли ошибка какая с моей стороны, то ли данные теряются на пути от сервера linux до контроллера лары

Не в сети

#6 09.02.2017 13:31:15

Re: curl-запрос со сторонего сервиса

добавь в обработчик logger(var_export($request->all(), true)); и посмотри в storage/logs/laravel.log что именно пришло в $request

Не в сети

Подвал раздела