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

Интернет-эквайринг. Не удается получить данные от банка

24.03.2014, 20:28. Показов 3030. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, новичку нужна ваша помощь. Ситуация такая: после того, как на стороне банка клиент произвел оплату при помощи банковской карты, банк отправляет методом POST на определенный адрес сайта (например, pay_status.php) данные о проведенной операции: Код авторизации, Статус заказа, Описание статуса заказа, Дата последнего изменения статуса заказа и т.п. и соответствующие параметры (id, ticket, auth_code, status_code и пр.). Написал следующий код для приема данных от банка:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
if (isset($_POST['id']))
 {
 $sum = $_POST['amount']/100;
 $amount = $sum*100;
 $card = $_POST['card_num'];
 $status = $_POST['status_desc'];
 $signature = $_POST['signature'];
 $order_number = $_POST['order_number'];
 $av_sign = *****;
 $shop_id = ****;
 $signature_check =  strtoupper(md5(strtoupper(md5($av_sign).md5($shop_id.$order_number.$amount))));
 if ($signature = $signature_check)
 {
 echo "Платеж $sum рублей
Статус: $status
";
 }
 }
 
?>
Он не работает. Не могу понять в чем причина. Можно ли как-то проверить получает ли сайт данные от банка? Необходимо ли прописывать в коде все пересылаемые параметры (банк пересылает больше, чем у меня используется в коде)?
Буду признателен за помощь. Спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.03.2014, 20:28
Ответы с готовыми решениями:

Эквайринг-для интернет магазина
Есть интернет магазин, на нем нужно осуществить оплату услуг, все сводится к тому что, мне нужно собрать нужные для сбербанка поля и...

Не удается получить данные из <div>
Господа,есть вопрос. необходимо получить содержимое блока &lt;div&gt;, а точнее текст,без тегов(в общем-то с тегами проблемы нет). Делаю...

Не удается получить данные из формы
Код html с формой: &lt;!DOCTYPE html&gt; &lt;html &gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt; ...

15
 Аватар для Andruhin
142 / 142 / 27
Регистрация: 19.12.2011
Сообщений: 250
24.03.2014, 20:52
Лучший ответ Сообщение было отмечено ArtemT1987 как решение

Решение

ArtemT1987, я так понимаю банк отправляет позднее автоматическое информирование на указанный вами урл, после ухода пользователя с платежного шлюза? Врятли отправляется пост в тот момент когда пользователя редиректит с платежного шлюза, вместе с ним.
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
Можно ли как-то проверить получает ли сайт данные от банка?
  • сымитировать отправку данных вручную на нужный вам урл.
  • посмотреть логи доступа апача, по обращению к данному урлу, чтобы узнать, отправляет ли вообще банк вам информацию
  • дублировать в базе все данные по заказам с онлайн оплатой в отдельной сводной таблице (например, дублировать номер заказа, сумму отправленную в банк. Также добавить id процессинга, полученного после предрезерва заказа, текущий статус заказа, дату отправки пользователя на платежный шлюз, дату предавторизации средст пользователя, и тп), а потом обновлять ее, когда банк "стучится" на ваш урл
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
24.03.2014, 21:27
ну во первых:
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
if ($signature = $signature_check)
{
echo "Платеж $sum рублей
Статус: $status
";
вы эти сообщения планируете показывать серверу банка? ему на них плевать, он свой код ответа 200 отхватит и свалит...
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
Можно ли как-то проверить получает ли сайт данные от банка?
проверить лог вебсервера, есть ли обращение к вашей пхп-странице с айпишника банка.
можно попробовать логировать средствами скрипта все полученные данные например в текстовый файл
PHP
1
2
3
4
5
6
7
$logfile=fopen('test.log','w');
foreach ($_POST as $key => $value)
{
   $msg = 'параметр '.$key.' имеет значение: '.$value."\n";
   fwrite($logfile,$msg);
}
fclose($logfile);
0
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 31
24.03.2014, 21:59  [ТС]
вы эти сообщения планируете показывать серверу банка? ему на них плевать, он свой код ответа 200 отхватит и свалит...
Конечно, нет. Это вариант, где я проверял работает ли скрипт...
Я правильно, понимаю, что предложенный мною скрипт должен работать, если банк отправляет данные на сайт?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
24.03.2014, 22:10
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
Я правильно, понимаю, что предложенный мною скрипт должен работать, если банк отправляет данные на сайт?
повторяю еще раз - когда "банк отправляет данные на сайт" - это сервер банка обращается на адрес вашего скрипта, который вы указали в настройках платежной системы. САМ сервер! ТУПО ткнется в ваш скрипт! При этом, "на сайте" ваш скрипт живет, или просто на компе, серверу платежной системы ПО БАРАБАНУ! Сервер (ПС) пришел, скрипту пост-данные скормил, свой код 200 получил и свалил! Алес!

ваш скрипт должен просто писать куда-то статус платежа, полученный от сервера ПС. и все...
0
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 31
24.03.2014, 22:32  [ТС]
повторяю еще раз - когда "банк отправляет данные на сайт" - это сервер банка обращается на адрес вашего скрипта, который вы указали в настройках платежной системы. САМ сервер! ТУПО ткнется в ваш скрипт! При этом, "на сайте" ваш скрипт живет, или просто на компе, серверу платежной системы ПО БАРАБАНУ! Сервер (ПС) пришел, скрипту пост-данные скормил, свой код 200 получил и свалил! Алес!

ваш скрипт должен просто писать куда-то статус платежа, полученный от сервера ПС. и все...
Dmitry, поспокойнее, пожалуйста. Если пишу не "банк отправляет на сайт", это не значит, что я не понимаю и не подразумеваю, что сервер банка в автоматическом режиме отправляет данные на сервер интернет-магазина... Не надо мне рассказывать простые истины, ибо (1) я прочитал инструкцию банка по настройке эквайринга, (2) разобрался в процессе "что, зачем и почему", (3) написал форму отправки данных с моего сервера на сервер банка для проведения платежа. У меня не заработал скрипт, который по моему разумению должен был работать. Поскольку я первый раз делаю эквайринг, то и обратился к знающим людям: может, я чего не так прописал, может, есть какая-то "фишка", о которой не знаю.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
24.03.2014, 23:00

Не по теме:

Цитата Сообщение от ArtemT1987 Посмотреть сообщение
Dmitry, поспокойнее, пожалуйста.
не надо рассказывать, что мне делать, и я не буду рассказывать, куда ходить.
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
ибо (1) я прочитал инструкцию
ну если присмотреться повнимательней, то подпись - это не то, на что надо отвечать (или на это надо указать конкретно в подписи, чтоб понятней было?)



по сути.
показанный в 1-м посте скрипт - это обработчик чего? раз вы там вычисляете мд5 от параметров, то вероятно это обработчик данных, поступающих от пс, в которых передается подтверждение платежа. в таком случае этому скрипту не нужен вывод каких-то текстовых сообщений. сообщения нужно выводить юзеру, который выполняет платеж. но юзеру не надо считать мд5. в пс обычно передаются либо 2 параметра - адрес скрипта-обработчика, который потом примет от сервера служебное подтверждение, и адрес страницы, на которую должен попасть клиент после оплаты,, либо же только адрес страницы для юзера, а адрес скрипта обработчика вы просто жестко прописыаете в кабинете в настройках пс...

так вот в странице юзера вы просто проверяете статус его заказа. а сам статус ваша система принимает от пс на скрипт-обработчик (тот который считает мд5, сверяет, проверяет и т.д.)...
0
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 31
24.03.2014, 23:13  [ТС]
не надо рассказывать, что мне делать, и я не буду рассказывать, куда ходить.
Не надо меня учить простым истинам и общей теории. Вы мне еще расскажите, откуда есть пошел php.
Без обид, но у Вас проблемы с самомнением, по-моему. Я Вашу подпись вообще не видел. Про инструкцию написал, потому что как правило таковые прилагаются при интеграции серверов
по сути.
показанный в 1-м посте скрипт - это обработчик чего? раз вы там вычисляете мд5 от параметров, то вероятно это обработчик данных, поступающих от пс, в которых передается подтверждение платежа. в таком случае этому скрипту не нужен вывод каких-то текстовых сообщений. сообщения нужно выводить юзеру, который выполняет платеж. но юзеру не надо считать мд5. в пс обычно передаются либо 2 параметра - адрес скрипта-обработчика, который потом примет от сервера служебное подтверждение, и адрес страницы, на которую должен попасть клиент после оплаты,, либо же только адрес страницы для юзера, а адрес скрипта обработчика вы просто жестко прописыаете в кабинете в настройках пс...

так вот в странице юзера вы просто проверяете статус его заказа. а сам статус ваша система принимает от пс на скрипт-обработчик (тот который считает мд5, сверяет, проверяет и т.д.)...
Повторяю для, видимо, уставших после рабочего дня: я знаю, для чего скрипт и как должны обрабатываться данные от сервера; вывод сообщения сделал ИСКЛЮЧИТЕЛЬНО для себя, для целей проверки работы скрипта. Мне от вас, товарищи, нужно знать правильно ли я прописал начало скрипта и получаю данные через POST, а не, например, через REQUEST (написал первое, что пришло в голову). Если код с вашей точки зрения верен и нет никаких ошибок, то так и напишите, что код верен, ищи проблемы в другом, а не рассказывайте мне теорию, что куда передается. Спасибо.
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
25.03.2014, 11:53
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
ищи проблемы в другом, а не рассказывайте мне теорию, что куда передается.
Все дело в том, что эта отправка происходит для информирования твоего сайта. Когда происходит возврат клиента на сайт, то отправка данных не происходит. В этом скрипте нужно просто записывать полученные платежи в базу данных. То что там в обработчике выводится, этого никто не увидит.
0
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 31
25.03.2014, 14:46  [ТС]
Цитата Сообщение от Dolphin Посмотреть сообщение
Все дело в том, что эта отправка происходит для информирования твоего сайта. Когда происходит возврат клиента на сайт, то отправка данных не происходит. В этом скрипте нужно просто записывать полученные платежи в базу данных. То что там в обработчике выводится, этого никто не увидит.
Ребят, вы троллите что ли? Я же два раза написал, что сделал вывод сообщения, чтобы проверить работоспособность скрипта. Мне нужно было проверить, получает ли скрипт и обрабатывает ли данные от банка. Для этого сделал вывод сообщения. Если бы все сработало бы, тогда бы дописал и ответ "200" для банка и что-то типа вот этого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$db_host = 'localhost';
$db_name = '***';
$db_username = '***';
$db_password = '***';
$db_table_to_show = '***';
 
$connect_to_db = mysql_connect($db_host, $db_username, $db_password)
        or die("Could not connect: " . mysql_error());
 
    mysql_select_db($db_name, $connect_to_db)
        or die("Could not select DB: " . mysql_error());
 
mysql_query("UPDATE payment SET sum = '$amount' WHERE order_number='$order_number'");
mysql_close($connect_to_db);
Мой вопрос следующий был: правильно ли я написал начальную часть кода; правильно ли я получаю данные через POST, может быть, есть какой-то нюанс, о котором я не знаю. Не надо мне рассказывать, зачем этот скрипт нужен и что он должен делать. Я это знаю. Я НЕ ЗНАЮ, почему он не работает.
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
25.03.2014, 14:49
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
правильно ли я написал начальную часть кода
Создавай тогда форму и отправляй ее постом на этот скрипт. В чем проблема? Если названия полей верны, то наверно правильно
1
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 31
25.03.2014, 15:23  [ТС]
Цитата Сообщение от Dolphin Посмотреть сообщение
Создавай тогда форму и отправляй ее постом на этот скрипт. В чем проблема? Если названия полей верны, то наверно правильно
Спасибо. Так и сделаю.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
25.03.2014, 15:34
Цитата Сообщение от ArtemT1987 Посмотреть сообщение
проверить работоспособность скрипта
в посте #3 я тебе дал кусок кода. вставь его в свой скрипт, и стучись в него. и твой скрипт будет писать лог, а в него - все данные пост-запроса. вот и увидишь - бчто присылается, какие данные и присылаются ли они вообще...
0
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 31
26.03.2014, 14:44  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
в посте #3 я тебе дал кусок кода. вставь его в свой скрипт, и стучись в него. и твой скрипт будет писать лог, а в него - все данные пост-запроса. вот и увидишь - бчто присылается, какие данные и присылаются ли они вообще...
Спасибо.

Добавлено через 22 часа 56 минут
Всем спасибо! Заработало!
Но проблема теперь, что серверу банка надо вернуть статус не 200, а 202. Через
PHP
1
http_response_code(202);
у меня не получилось.
0
 Аватар для Andruhin
142 / 142 / 27
Регистрация: 19.12.2011
Сообщений: 250
26.03.2014, 14:53
header
1
0 / 0 / 1
Регистрация: 24.03.2014
Сообщений: 31
26.03.2014, 15:01  [ТС]
Цитата Сообщение от Andruhin Посмотреть сообщение
header
Спасибо. Как-то не подумал. Использовал:
PHP
1
header("HTTP/1.1 202 Accepted");
Все заработало.
Тему можно закрывать. Всем спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2014, 15:01
Помогаю со студенческими работами здесь

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

Не удается получить данные с сервиса погоды
Добрый день. Есть небольшое приложение ASP.NET MVC, где есть : модель ,в которой реализованы классы для считывания данных с сайта...

CKEDITOR: не удается получить данные из формы
Всем привет! кто нибудь работал с редактором ckeditor? У меня такая проблемка, не получаеться достать данные из формы редактора. Т.е...

Qt Mac OS, не удаётся получить данные в SQLite
Здравствуйте, уважаемые формучане, у меня такая проблема: Подключился к БД, написал запрос для получения данных: #include...

Ошибка: Не удается получить данные схемы для таблицы или представления Клиенты.
При попытке подключить базу данных , конкретный столбец , пишет вот такую ошибку : &lt;Клиенты&gt; Не удается получить данные схемы...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru