@Admiral89

Как принять данные post с эватора на php?

Добрый день, друзья!
Помогите плиз, с такой проблемой. Требуется принять данные Чеки v2 с эватор, которые отправляются методом $_POST и у них есть документация: https://api.evotor.ru/docs/#tag/Vebhuki-uvedomleni...

Пытался сначала сделать это, без указания токена и авторизации, через массивы #_POST и file_get_contents('php://input');
Потом пытался получить эти данные через CURL. Игрался с добавлением токена. Чтобы я не делал, данные не приходят. Помогите, если кто знает, потому что я уже *устался* с этим.

Выглядит это сейчас вот таким вот образом:

$url = 'https://partner.ru/api/v2/receipts';
$ch = curl_init($url);

$headers = array();
$headers[] = "Accept: application/vnd.evotor.v2+json";
$headers[] = "Content-Type: application/vnd.evotor.v2+json";
$headers[] = "Authorization: Bearer ТУТ_ТОКЕН";
$headers[] = "Accept-Language: en";

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$curldata = json_decode($data, true);

if(!$curldata){
    $curldata = "no curlData";
}

curl_close($ch);

file_put_contents('logs.txt', "DB: ". date("H:m:s d.m.Y") . "\r\n" . $data . "\r\n---------------------------\r\n", FILE_APPEND);
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
@Admiral89 Автор вопроса
Дорогие друзья!
Всем спасибо за Ваши ответы, к сожалению среди них нет правильного.
Я смог понять в чём причина после того, как перестали отображаться данные атрибута SRC в почтовых клиентах (кроме яндекс почты). Именно это навело меня на мысль о серии эксперементов, которые в итоге завершились решением сразу серии задач. С кодом всё в порядке, работает
$postData = file_get_contents('php://input');
Зря удалял из вопроса. Очень даже хорошо работает.
Спасибо Вам. P.S> кому интересен ответ, я снял ролик на тему: https://vk.com/lroot?w=wall557276355_103
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
1) Вы же понимаете, что декодите json строку в php массив, а потом пытаетесь его записать?
$curldata = json_decode($data, true);
Записывать данные курла через
file_put_contents('logs.txt', "CR: " . date("H:m:s d.m.Y") . "\r\n" . $data. "\r\n\r\n", FILE_APPEND);


2) Судя по всему, вы делаете GET запрос, при том что в доке описан POST. Добавить
curl_setopt($ch, CURLOPT_POST, true);
3) Это еще тут зачем??
$str= serialize($_POST);

И вообще, не понятно что делает этот код. Он принимает данные? Он их отправляет курлом? Что он отправляет курлом? Что он принимает? Конкретизируйте.
В документации описано то что вы должны делать post запрос на их сервер , передавая данные в json. Как это делать тут https://stackoverflow.com/questions/6213509/send-j...
Ответ написан
@k2lhu
Непонятно зачем вы вообще используете тут curl, в документации четко написано -
После оплаты отправляет чек в сторонний сервис. Тело запроса содержит один или несколько чеков.
Ожидает от стороннего сервиса ответа 200 ОК. Если ответ не приходит в течение 10 секунд, Облако отправляет уведомление повторно.

А веб адрес для принятия запроса должен быть таким
https://partner.ru/api/v2/receipts

Где вместо partner.ru необходимо подставить свой домен, который ведет на ваше приложение, где реализован указанный метод.
Это вы сделали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы