Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324

Как перехватить массив POST об успешной оплате?

09.12.2024, 10:28. Показов 2666. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, здравствуйте!
Подскажите, как можно перехватить массив, отправляемый платежной системой (конкретно Webpay) в случае успешной оплаты по ЕРИП?

Вот из документации:
"При оплате платежей через систему АИС "Расчет" (ЕРИП) система WEBPAY извещает Интернет-ресурс о проведенной операции по адресу wsb_notify_url (если он указан в поле формы, либо задан в настройках биллинг-аккаунта)... "

Связывался с техподдержкой. Утверждают, что по данному адресу массив успешно отправляется. как можно его считать?

Пробовал банальное

PHP
1
print_r($_POST)
Пробовал и

PHP
1
echo(file_get_contents('php://input'));
В обоих случаях страница, на которую должен приходить массив, пустая
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2024, 10:28
Ответы с готовыми решениями:

ИНТЕРКАССА / POST при успешной оплате
Есть сайт. Краткая суть такова. 1) Пользователь вводит свой e-mail и нажимает кнопку оплатить. 2) Его отправляет на интеркассу и там...

Не могу получить уведомление об успешной оплате в платежной системе Payanyway через API
Добрый день. Есть проект интернет-магазина, там совершается покупка бронирований. В payanyway есть настройка Pay URL, где указываешь URL,...

Как перехватить post-запрос?
Не нашел категории куда задать свой вопрос, поэтому задам тут. Как перехватить post запрос на фейсбуке? Дело в том что http analyzer не...

38
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
09.12.2024, 14:14  [ТС]
Студворк — интернет-сервис помощи студентам
Чуть что, вот URL на который должен отправляться массив: https://vzakupki.by/notify.php
0
Заблокирован
09.12.2024, 14:20
Лучший ответ Сообщение было отмечено Artiom-1984 как решение

Решение

Всё работает. Вот запись у меня на сервере в файле log.txt
Code
1
2
3
4
5
2024-12-09 11:16:54 Array
(
    [test_1] => re1-re1
    [test_2] => re2-re2
)
Добавлено через 2 минуты
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Чуть что, вот URL на который должен отправляться массив: https://vzakupki.by/notify.php
отправил тебе тоже. Кстати, там у меня была ошибка. Писал на коленке и забыл закрывающую скобку
Вот на пыхе
PHP
1
2
3
if(isset($_POST) && !empty($_POST)){
    file_put_contents('log.txt', date("Y-m-d H:i:s") . " " . print_r($_POST, true) . "\n", FILE_APPEND);
}
а вот отправка через консоль браузера
JavaScript
1
2
3
4
5
let url = 'https://vzakupki.by/notify.php';//надо заменить на твой
let request = new XMLHttpRequest();
request.open('POST', url , true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.send("test_1=re1-re1&test_2=re2-re2");
1
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
09.12.2024, 14:21  [ТС]
Пришел массив!
0
Заблокирован
09.12.2024, 14:22
Цитата Сообщение от barabar Посмотреть сообщение
11:16:54
Блин... время сервера косячит у меня. Надо исправить

Добавлено через 49 секунд
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Пришел массив!
Ну счас проверяй дальше
0
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
09.12.2024, 14:26  [ТС]
Он, похоже, уже и из моей консоли пришел.

Добавлено через 1 минуту
Ну да! массив приходит (из консоли).
Что это значит?

Добавлено через 2 минуты
Код в файл, так понимаю вот этот вернуть?

PHP
1
2
$data = json_decode(file_get_contents('php://input'), true);
file_put_contents('log.txt', date("Y-m-d H:i:s") . " " . print_r($data, true) . "\n", FILE_APPEND);
0
Заблокирован
09.12.2024, 14:33
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Код в файл, так понимаю вот этот вернуть?
Это зависит от того в каком формате отправляется. Это если JSON. А если массив $_POST - то оставить уже проверенный вариант.

Добавлено через 55 секунд
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Ну да! массив приходит (из консоли).
Что это значит?
Это значит, что пост-запрос записывается и ошибок нет. Осталось это проверить на реальном примере с оплатой.
0
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
09.12.2024, 15:02  [ТС]
О, пришел нужный массив после оплаты!

Так а что изменилось? Ничего же, вроде, не исправили!

Добавлено через 28 минут
Что-то пару раз пришел массив и перестал.

При попытки отправки из консоли выдает:

Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://vzakupki.by/notify.php. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»). Код состояния: 200.
0
Заблокирован
09.12.2024, 15:12
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
При попытки отправки из консоли выдает:
Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://vzakupki.by/notify.php. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»). Код состояния: 200.
На это не обращай внимание. Пост-запрос улетает и твой скрипт его примет. Просто ответа не будет, но он тебе и не нужен.
А зачем ты вообще это делаешь? Это же надо было для проверки. Проверка прошла. Всё ок.

Добавлено через 2 минуты
У тебя косяк в твоем скрипте. Что ты там уже мутил. В двух строчках заблудился?
Сайт vzakupki.by пока не может обработать этот запрос.
HTTP ERROR 500
0
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
09.12.2024, 15:17  [ТС]
Немного не понял вопроса. Но если стратегически, нужно после оплаты автоматически изменить поля базы данных того пользователя, который оплатил. Открыть доступ к закрытой информации.

Добавлено через 1 минуту
А сейчас? Лишняя закрывающая скобка стояла.

Добавлено через 2 минуты
Что-то массив все равно перестал приходить
0
Заблокирован
09.12.2024, 15:18
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Немного не понял вопроса.
Скрипт твой выдает ошибку 500. Что здесь непонятного?
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Но если стратегически, нужно после оплаты автоматически изменить поля базы данных того пользователя, который оплатил.
Я не знаю твой стратегии. Сделай рабочий скрипт без 500-ой ошибки, а потом измени его название. Потому что ты его спалил здесь в теме. А то счас начнут тебе слать пост-запросы)
0
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
09.12.2024, 15:18  [ТС]
Код сейчас в файле

PHP
1
2
$data = json_decode(file_get_contents('php://input'), true);
    file_put_contents('log.txt', date("Y-m-d H:i:s") . " " . print_r($data, true) . "\n", FILE_APPEND);
0
Заблокирован
09.12.2024, 15:21
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
А сейчас? Лишняя закрывающая скобка стояла.
сейчас норм. Адрес скрипта не забудь заменить.

Добавлено через 1 минуту
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Код сейчас в файле
Ой... делай что хочешь. Я уже не понимаю тебя нихрена. Всё же работало через $_POST
0
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
09.12.2024, 15:28  [ТС]
Массив не приходит опять

Барабар, можешь отправить тестовый? Пока url не менял.

Добавлено через 35 секунд
Сейчас заменю на $_POST

Добавлено через 1 минуту
Ага, пришел массив. Значит, только через $_POST. Ok

Добавлено через 4 минуты
Барабар, благодарю за помощь.
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
09.12.2024, 16:34
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
Ага, пришел массив. Значит, только через $_POST. Ok
Смотрим в документацию.
https://www.php.net/manual/ru/... s.post.php
$_POST будет только при заголовках Content-Type: application/x-www-form-urlencoded или multipart/form-data (как при обычной отправки формы);
Это зависит от платежной системы, смотря какой запрос он вам шлет.
Поэтому в первую очередь нужно смотреть метод запроса, а не наличие $_POST.

PHP
1
2
3
4
5
6
7
8
9
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
 
    $data = [
        'headers' => getallheaders(),
        'body' => file_get_contents('php://input'),
        'server' => $_SERVER,
    ];
    file_put_contents(__DIR__ . '/log.txt', date("Y-m-d H:i:s") . print_r($data, true) . PHP_EOL, FILE_APPEND);
}
Если заголовок к примеру Content-Type: application/json, то $_POST будет пуст и нужно будет парсить тело запроса самостоятельно. Тогда используете
PHP
1
json_decode(file_get_contents('php://input'), true);
Важно чтоб формат был json - иначе json_decode упадет с ошибкой, и получаете 500.

Т.е. одновременно не может быть json и $_POST, либо одно, либо другое. Вам нужно посмотреть в каком формате отправляет платежная система.
0
Заблокирован
09.12.2024, 17:01
sad67man, еще бы знать, что ТС в итоге хочет. Возможно, и записывать в файл ничего не надо, а сразу в базу.
Цитата Сообщение от Artiom-1984 Посмотреть сообщение
нужно после оплаты автоматически изменить поля базы данных того пользователя, который оплатил
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
09.12.2024, 17:10
Цитата Сообщение от barabar Посмотреть сообщение
sad67man, еще бы знать, что ТС в итоге хочет. Возможно, и записывать в файл ничего не надо, а сразу в базу.
Зачем нам это знать? В файл записываем, чтоб посмотреть запрос - в каком формате он приходит, чтоб знать как его обрабатывать.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3978 / 2145 / 833
Регистрация: 13.03.2010
Сообщений: 7,044
09.12.2024, 17:30
sad67man, справедливости ради, в описании любого нормального api/вебхука есть формат...
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
09.12.2024, 18:54
Цитата Сообщение от gogolik Посмотреть сообщение
sad67man, справедливости ради, в описании любого нормального api/вебхука есть формат...
Верно, есть несколько способов узнать что использовать - $_POST или json. Один из них - это прочитать в документации.
Второй - посмотреть по факту запроса) Но нужно знать как правильно смотреть. $_POST может быть пуст, а json_decode может вызвать ошибку.
Тут уже имитация запроса не поможет - так как мы еще не знаем как его имитировать.
А автор любит просто копировать код с форума - нужно предложить что-то, что даст хоть какой-то результат, желательно с первого раза, а то мы тут застрянем надолго)
0
52 / 5 / 1
Регистрация: 11.09.2018
Сообщений: 324
10.12.2024, 15:03  [ТС]
Ребята, спасибо, но я уже справился Платежная система отправляет массив POST
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2024, 15:03

Возможно ли перехватить POST
Здравствуйте! Хотел спросить, вот в массиве GET пароль передавать возможно, но не следует, потому что все элементы массива GET видно в...

Перехватить EndReequest после post запроса excel file
Добрый день. Появился такой вопрос. Перед отправкой формы делаю индикатор загрузки(gif - файл), что бы пользователь понял что процесс...

Необходимо перехватить ответ на post-запрос, отредактировать его, и отправить дальше
Ситуация такая пишу свой браузер, специфика задачи не позволяет использовать стандартные, необходимо перехватить ответ на post-запрос, там...

Есть массив POST. Как будет выглядеть рисунок, если этот массив нарисовать?
Здравствуйте!Вопрос, возможно, глупый) Начал изучать php. Интересует вопрос по поводу $_POST. Вот, например, мы в форме ввели name= Вася,...

Как отдать массив в post
Как отдать массив в post если есть динамическая таблица и нужно отдать данные допустим некоторых ячеек (длина не известна)?


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru