Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 31.03.2018
Сообщений: 47

Как сделать корректный запрос php (уведомления Яндекс Деньги)?

11.07.2019, 01:24. Показов 3073. Ответов 5

Студворк — интернет-сервис помощи студентам
Пытаюсь настроить уведомления о приеме Яндекс Денег через форму на сайте. Почти все готово и все данные получаю, кроме тех что отправляются через токен в специальном запросе (сам токен получен). Как сформировать сам запрос чтобы получить данные? На API Яндекса есть информация о примере запроса и примере ответа (они ниже). Но как сформировать именно сам запрос исходя из примеров ниже?

Пример запроса (по данным API Яндекса):
POST /api/operation-details HTTP/1.1
Host: money.yandex.ru
Authorization: Bearer 410012345678901.0123456789ABCDEFGHIJKLMN OPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQR STUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUV WXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123 456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567 89ABCDEFGHIJKLMNOPQRSTUVWXYZ0123
Content-Type: application/x-www-form-urlencoded
Content-Length: 20

operation_id=1234567


Пример ответа при платеже в магазин (по данным API Яндекса):
JSON
1
2
3
4
5
6
7
8
9
10
11
12
{
  "operation_id": "1234567",
  "status": "success",
  "pattern_id": "2904",
  "amount": 500.00,
  "direction": "out",
  "email": "test@yandex.ru",
  "datetime": "2011-07-11T20:43:00.000+04:00",
  "title": "Оплата ADSL-доступа компании Мой-Провайдер",
  "details": "Предоплата услуг ADSL-доступа в интернет компании ООО \"XXX\"\nНомер лицевого счета абонента: \n1234567/89\nЗачисленная сумма: 500.00\nНомер транзакции: 2000002967767",
  "type": "payment-shop"
}
Написанный возможный пример кода для запроса (сторонний код не из API Яндекса), который почему-то не работает. В переменной out выдается пустота. Нет данных.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$token = '410014XXXXXXX.7D7F24BC90EXXXXXXXXX тут код токена.............';
$g_url = "https://money.yandex.ru/api/operation-details";
$header = array();
$header[] = "Authorization: Bearer ".$token;
if($curl = curl_init()) {
curl_setopt($curl, CURLOPT_URL, $g_url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_POSTFIELDS, $_POST["operation_id"]);
$out = curl_exec($curl);
curl_close($curl);
 
$out = json_decode($out);
echo $out->{$_POST["operation_id"]};
echo $out->{'operation_id'};
echo $out->{'amount'};
echo $out->{'email'};
echo $out->{'message'}; }
// попытка всю переменную поместить в текстовый файл
file_put_contents("/home/site.ru/folder/test-123.txt", $out);
// еще попытка
$array = array($out->{'message'}, $out->{'email'});
$c1 = implode(" _ ", $array);
$str = $c1;file_put_contents("/home/site.ru/folder/test-123-2.txt", "\r\n".$str,FILE_APPEND);
Не могли бы вы подсказать правильно ли написан код и может быть как-то другим способом можно сделать запрос на получение данных? Может как-то не через curl, а проще?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.07.2019, 01:24
Ответы с готовыми решениями:

HTTP-уведомления в яндекс.деньги (комментарии)
Настроил уведомления в телеграмм о зачислении в яндекс.кошелек. Все хорошо, но как добавить к списку данных еще и назначение платежа и...

Электронные деньги - WebMoney, Яндекс.Деньги отразить в расходах?
Приветствую! Общался с бухгалтерией говорят, что отразить электронные деньги в расходах нельзя никак. Так ли это? У кого есть опыт?

Подскажите как сделать запрос к яндекс апи переводчику
Делаю запрос, на получения списка языков от апи яндекс переводчика, но почему то не работает подскажите как правильно сделать. Суть в том...

5
 Аватар для brain-4-me
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
11.07.2019, 06:09
Q18, я бы посоветовал включить заголовки ответа и посмотреть что приходит, если это работает как api директа то там все приходит на мой взгляд как то коряво, включай заголовки и смотри
PHP
1
curl_setopt($curl, CURLOPT_HEADER, true);
и выводи ответ сразу после запроса, не надо делать json_decode
1
0 / 0 / 0
Регистрация: 31.03.2018
Сообщений: 47
11.07.2019, 09:19  [ТС]
Удалось получить ответ, но ответом стал
JSON
1
{"error":"illegal_param_operation_id"}
- Неверное значение параметра operation_id (как сказано в API Яндекса), но сама переменная ID операции успешно вывелась в
PHP
1
$_POST["operation_id"]
. Как такое может быть не совсем понятно. Получаю ID операции и он корректный и его же сразу далее просто включаю в код с токеном для получения оставшихся данных и оказывается неверное значение ID. В чем может быть проблема?
0
 Аватар для brain-4-me
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
12.07.2019, 08:45
Q18, возможно, но я не уверен может быть причина в json передачи operation_id
попробуйте так

PHP
1
2
3
4
5
6
$param = array(
  'operation_id'=>$_POST["operation_id"]
);
 
......
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
0
0 / 0 / 0
Регистрация: 31.03.2018
Сообщений: 47
12.07.2019, 23:34  [ТС]
brain-4-me, попробовал. Результат тот же. Ничего не изменилось. Всё так же неверный ID, хотя он на самом деле получается и выводится успешно именно до этого скрипта (например, можно его в .txt файл получить). Удалось найти другой скрипт такого же назначения, но пока мне не совсем понятно как там происходит запрос по токену: _https://github.com/zhzhussupovkz/yandex-money-api/blob/master/lib/YandexMoneyAPI.php Может его можно как-то применить в моем случае? Пока думаю, пробую, буду рад помощи.
0
0 / 0 / 0
Регистрация: 24.02.2019
Сообщений: 1
11.03.2021, 12:33
2021 год, у меня та же проблема, платформа node js)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2021, 12:33
Помогаю со студенческими работами здесь

Как быстро вывести деньги с Яндекс кошелька?
Может кто в курсе как быстро выводить, потому что ждать 3-5 дней на перевод на карту банка не устраивает.

Как настроить отображение Яндекс. деньги на сайте
Мой сайт englishflow.ru. Написан на WordPress. Не могу решить проблему с отображением яндекс.деньги. В зависимости от масштаба яндекс....

Как составить корректный MySQL-запрос
Привет всем! Товарищи эксперты, требуется Ваша помощь! Есть 3 таблицы с записями (см. рис.) И есть запрос вида: ...

Как написать корректный запрос-обьединение?
Всем привет, есть две таблицы (см вложения): Столбец corr_id связан с author_id при создании таблиц. Впрочем не суть. Мне нужно...

Как подключить оплату через яндекс деньги к базе данных?
Как подключить оплату через яндекс деньги к базе данных? Вот есть виджет от яндекса, человек вводит сумму для отправки и пересылает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru