Банк не получает ответ
С банка прилетает Post-запрос через file_get_contents. Необходимо ему ответить. Принимаю POST
$secret_seed = "****";
$id = $_POST['id'];
$sum = $_POST['sum'];
$clientid = "";
$orderid = $_POST['orderid'];
$key = $_POST['key'];
Формирую ответ и отвечаю
$hash = "OK ".md5($id.$secret_seed);
echo $hash;
В таком исполнении все отрабатывает, но есть необходимость принимать данные после чего обрабатывать их в своей ИС и уже после успешного ответа отвечать банку. Пробую вот так
$secret_seed = "****";
$id = $_POST['id'];
$sum = $_POST['sum'];
$clientid = "";
$orderid = $_POST['orderid'];
$key = $_POST['key'];
$hash = md5($id.$secret_seed);
$data = "{'operation':'createDocZaimPayment','Number':'$orderid','Summa':'$sum'}";
//Заполним массив передаваемых параметров
$ParametrXDTO = [
"ИННОрганизации" => "ИНН",
"ВерсияПриложения" => "1.0.0.0",
"ВходящиеДанные" => "$data",
];
$params["RequestInfo"] = $ParametrXDTO;
try { // Попытка запроса в 1С
$client = new SoapClient(
"Адрес",
array(
'login' => "Пользователь", //логин пользователя к базе 1С
'password' => "Пароль", //пароль пользователя к базе 1С
'soap_version' => SOAP_1_2, //версия SOAP
'cache_wsdl' => WSDL_CACHE_NONE,
'trace' => true,
'features' => SOAP_USE_XSI_ARRAY_TYPE
)
);
//Выполняем операцию
$result = $client->UserDefinedOperation($params);
$jsResult = json_decode(json_encode($result), TRUE);
// Проверяем отравленность сообщения
if ($jsResult["return"]["КодОшибки"] === '0') {
if ($jsResult["return"]["ОписаниеОшибки"] == 'Договор не найден.') { // Договор не найден
}else{ // Платеж проведен
$user_email = 'почта';
$message = "<b>Ответ от 1С:</b>" . $jsResult['return']['ОписаниеОшибки'] . "<br>
<b>Данные транзакции:</b>" . $requestString;
$subject = 'Успешная оплата';
$email_send = new phpmailer();
$email_send->sendMail($user_email,$message,$subject);
echo $hash;
}
}else{ // Ошибка создания "Операции по платежным картам"
//echo "Не заданы настройки работы сервиса АК-Кредит: Смарт.";
}
}catch (SoapFault $e) { // Ошибка подключения к серверу 1С
$user_email = 'почта';
$message = $requestString;
$subject = 'Ошибка подключения к серверу 1С';
$email_send = new phpmailer();
$email_send->sendMail($user_email,$message,$subject);
}
$file = 'paylog.txt';
//$date = date("Y-m-d H:i:s") . "\n" . implode("\n", $_POST). "\n\n";
$date = date("Y-m-d H:i:s") . " " . json_encode($_POST, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n"; //JSON_PRETTY_PRINT
file_put_contents($file, $date, FILE_APPEND | LOCK_EX);
}else {
echo("Доступ закрыт");
die;
}
Ошибка которая возникает PHP Warning: file_get_contents(Адрес): failed to open stream: HTTP request failed! in /var/paykeeper/bin/Engine/informer_http.php on line 68 [Mon, 04 Apr 2022 09:55:30 +0300] Starting informer. Lockfile exists, checking if process is running Informer process is not running, removing lockfile, resuming operations. [C] 125 connection error All payments processed, exiting.
В php не силен и не знаю всех тонкостей.