%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.142.173.89 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/install/components/bitrix/sale.order.payment/ |
Upload File : |
<?php use Bitrix\Main, Bitrix\Sale; if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) { die(); } $this->setFramemode(false); if (!CModule::IncludeModule("sale")) { ShowError(GetMessage("SALE_MODULE_NOT_INSTALL")); return; } global $APPLICATION, $USER; $APPLICATION->RestartBuffer(); $bUseAccountNumber = Sale\Integration\Numerator\NumeratorOrder::isUsedNumeratorForOrder(); $orderId = urldecode(urldecode($_REQUEST["ORDER_ID"])); $paymentId = $_REQUEST["PAYMENT_ID"] ?? ''; $hash = $_REQUEST["HASH"] ?? null; $returnUrl = $_REQUEST["RETURN_URL"] ?? ''; $registry = Sale\Registry::getInstance(Sale\Registry::REGISTRY_TYPE_ORDER); /** @var Sale\Order $orderClassName */ $orderClassName = $registry->getOrderClassName(); $arOrder = false; $checkedBySession = false; if (!$USER->IsAuthorized() && is_array($_SESSION['SALE_ORDER_ID']) && empty($hash)) { $realOrderId = 0; if ($bUseAccountNumber) { $dbRes = $orderClassName::getList([ 'filter' => [ "LID" => SITE_ID, "ACCOUNT_NUMBER" => $orderId ], 'order' => [ "DATE_UPDATE" => "DESC" ] ]); $arOrder = $dbRes->fetch(); if ($arOrder) { $realOrderId = intval($arOrder["ID"]); } } else { $realOrderId = intval($orderId); } $checkedBySession = in_array($realOrderId, $_SESSION['SALE_ORDER_ID']); } if ($bUseAccountNumber && !$arOrder) { $arFilter = array( "LID" => SITE_ID, "ACCOUNT_NUMBER" => $orderId ); if (empty($hash)) { $arFilter["USER_ID"] = intval($USER->GetID()); } $dbRes = $orderClassName::getList([ 'filter' => $arFilter, 'order' => [ "DATE_UPDATE" => "DESC" ] ]); $arOrder = $dbRes->fetch(); } if (!$arOrder) { $arFilter = array( "LID" => SITE_ID, "ID" => $orderId ); if (!$checkedBySession && empty($hash)) $arFilter["USER_ID"] = intval($USER->GetID()); $dbRes = $orderClassName::getList([ 'filter' => $arFilter, 'order' => [ "DATE_UPDATE" => "DESC" ] ]); $arOrder = $dbRes->fetch(); } if ($arOrder) { /** @var Sale\Payment|null $paymentItem */ $paymentItem = null; /** @var Sale\Order $order */ $order = $orderClassName::load($arOrder['ID']); if ($order) { $guestStatuses = Main\Config\Option::get("sale", "allow_guest_order_view_status", ""); $guestStatuses = ($guestStatuses <> '') ? unserialize($guestStatuses, ['allowed_classes' => false]) : []; if ( !Sale\OrderStatus::isAllowPay($order->getField('STATUS_ID')) || ( !empty($hash) && ( $order->getHash() !== $hash || !Sale\Helpers\Order::isAllowGuestView($order) ) ) ) { LocalRedirect('/'); return; } /** @var Sale\PaymentCollection $paymentCollection */ $paymentCollection = $order->getPaymentCollection(); if ($paymentCollection) { if ($paymentId) { $data = Sale\PaySystem\Manager::getIdsByPayment($paymentId); if ($data[1] > 0) $paymentItem = $paymentCollection->getItemById($data[1]); } if ($paymentItem === null) { /** @var Sale\Payment $item */ foreach ($paymentCollection as $item) { if (!$item->isInner() && !$item->isPaid()) { $paymentItem = $item; break; } } } if ($paymentItem !== null) { $service = Sale\PaySystem\Manager::getObjectById($paymentItem->getPaymentSystemId()); if ($service) { $context = Main\Application::getInstance()->getContext(); if ($returnUrl) { $service->getContext()->setUrl($returnUrl); } $result = $service->initiatePay($paymentItem, $context->getRequest()); if (!$result->isSuccess()) { echo implode('<br>', $result->getErrorMessages()); } } } } } } else { ShowError(GetMessage('SOP_ORDER_NOT_FOUND')); }