Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Laravel Framework v5.5.20
PHP Version 7.1.6
Добрый день.
Возникла потребность подключить API стороннего сайта.
Суть следующая, я отправляю на их сайт Post запрос с помощью curl
$data =array ('token'=>$token, 'provider'=>'$provider');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'адрес сайта'); //урл сайта к которому обращаемся
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-Private-Api-Token: токен выданный при регистрации'
));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res=curl_exec($ch); // выполняем запрос curl
$codeb = curl_getinfo($ch, CURLINFO_HTTP_CODE); #Получим HTTP-код ответа сервера
curl_close($ch);
Данные они получают корректно. После этого они мне отправляют json строку с помощью Post запроса.
Вот теперь вопрос как его отловить. Пробовал следующий вариант
Route
Route::post('/webhook/{id}','IndexController@webhook')->name('webhook'); //адрес, на который сторонний сайт отсылает Post запрос
Controller
//для отладки хочу записать полученную строку в файл
public function webhook(Request $request){
$fp = fopen('search.json', 'w');
fwrite($fp, json_encode($request->all(), JSON_UNESCAPED_UNICODE));
fclose($fp);
}
Но ничего не записывается. Помогите, пож-та.
Не в сети
Файл точно не создается? Должна создаваться в папке public, в какой папке проверяете?
Не в сети
В public проверяю
Не в сети
Возможно сервер посылает запрос на другой url или отправляют не POST.
Изменено novichok (12.04.2018 19:27:03)
Не в сети
почему бы в function webhook(Request $request) не написать dd($request);
и посмотреть есть ли данные или проблема в записи файла?
Не в сети
Пробовал, не помогло.
Дело в том, что запрос я делаю с одного url, а ответ получаю на другой и редиректа нет. Следовательно, ответ приходит "в фоне" и этот способ не пройдёт. Функция записи в файл обкатана на других проектах. Предполагаю, что дело в токене, который формирует Laravel. Сегодня попробую его отключить для этого маршрута и попробовать снова.
Не в сети
По идее ответ надо ловить перед curl_close. Вот тут у тебя что получается? $res=curl_exec($ch)
а вообще посмотри еще guzzle - http client
Не в сети
Добрый день.
Возникла такая же проблема - как решил свой вопрос ?
Спасибо.
Не в сети
Страницы 1