Title
<?php
use \Bitrix\Main\Application;
use \Bitrix\Sale\PaySystem;
$logDir = $_SERVER["DOCUMENT_ROOT"] . "/bitrix/logs/";
$logFile = $logDir . "payment_requests.log";
SECRET_KEY = 's0m3r@nd0m$tring';
if ($request->get('token') !== SECRET_KEY) {
header('HTTP/1.1 403 Forbidden');
die('Bad token');
}
if (!is_dir($logDir)) {
mkdir($logDir, 0755, true);
}
if (!function_exists('getallheaders')) {
function getallheaders(): array {
$headers = [];
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) === 'HTTP_') {
$key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))));
$headers[$key] = $value;
}
}
return $headers;
}
}
$timestamp = date('Y-m-d H:i:s');
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
$headers = json_encode(getallheaders(), JSON_UNESCAPED_UNICODE);
$getParams = json_encode($_GET, JSON_UNESCAPED_UNICODE);
$postParams= json_encode($_POST, JSON_UNESCAPED_UNICODE);
$rawBody = file_get_contents('php://input');
$logEntry = "=== [$timestamp] New request ===\n";
$logEntry .= "Method: $method\n";
$logEntry .= "URI: $uri\n";
$logEntry .= "Headers: $headers\n";
$logEntry .= "GET: $getParams\n";
$logEntry .= "POST: $postParams\n";
$logEntry .= "RawBody: " . ($rawBody ?: '(empty)') . "\n\n";
file_put_contents($logFile, $logEntry, FILE_APPEND | LOCK_EX);
define("STOP_STATISTICS", true);
define('NO_AGENT_CHECK', true);
define('NOT_CHECK_PERMISSIONS', true);
define("DisableEventsCheck", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
global $APPLICATION;
if (CModule::IncludeModule("sale"))
{
$context = Application::getInstance()->getContext();
$request = $context->getRequest();
$item = PaySystem\Manager::searchByRequest($request);
if ($item !== false)
{
$service = new PaySystem\Service($item);
if ($service instanceof PaySystem\Service)
{
$result = $service->processRequest($request);
}
}
else
{
$debugInfo = http_build_query($request->toArray(), "", "\n");
if (empty($debugInfo))
{
$debugInfo = $rawBody;
}
PaySystem\Logger::addDebugInfo('Pay system not found. Request: '.($debugInfo ?: "empty"));
}
}
$APPLICATION->FinalActions();
die();
use \Bitrix\Main\Application;
use \Bitrix\Sale\PaySystem;
$logDir = $_SERVER["DOCUMENT_ROOT"] . "/bitrix/logs/";
$logFile = $logDir . "payment_requests.log";
SECRET_KEY = 's0m3r@nd0m$tring';
if ($request->get('token') !== SECRET_KEY) {
header('HTTP/1.1 403 Forbidden');
die('Bad token');
}
if (!is_dir($logDir)) {
mkdir($logDir, 0755, true);
}
if (!function_exists('getallheaders')) {
function getallheaders(): array {
$headers = [];
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) === 'HTTP_') {
$key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))));
$headers[$key] = $value;
}
}
return $headers;
}
}
$timestamp = date('Y-m-d H:i:s');
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
$headers = json_encode(getallheaders(), JSON_UNESCAPED_UNICODE);
$getParams = json_encode($_GET, JSON_UNESCAPED_UNICODE);
$postParams= json_encode($_POST, JSON_UNESCAPED_UNICODE);
$rawBody = file_get_contents('php://input');
$logEntry = "=== [$timestamp] New request ===\n";
$logEntry .= "Method: $method\n";
$logEntry .= "URI: $uri\n";
$logEntry .= "Headers: $headers\n";
$logEntry .= "GET: $getParams\n";
$logEntry .= "POST: $postParams\n";
$logEntry .= "RawBody: " . ($rawBody ?: '(empty)') . "\n\n";
file_put_contents($logFile, $logEntry, FILE_APPEND | LOCK_EX);
define("STOP_STATISTICS", true);
define('NO_AGENT_CHECK', true);
define('NOT_CHECK_PERMISSIONS', true);
define("DisableEventsCheck", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
global $APPLICATION;
if (CModule::IncludeModule("sale"))
{
$context = Application::getInstance()->getContext();
$request = $context->getRequest();
$item = PaySystem\Manager::searchByRequest($request);
if ($item !== false)
{
$service = new PaySystem\Service($item);
if ($service instanceof PaySystem\Service)
{
$result = $service->processRequest($request);
}
}
else
{
$debugInfo = http_build_query($request->toArray(), "", "\n");
if (empty($debugInfo))
{
$debugInfo = $rawBody;
}
PaySystem\Logger::addDebugInfo('Pay system not found. Request: '.($debugInfo ?: "empty"));
}
}
$APPLICATION->FinalActions();
die();
