AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 3.22.61.174
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/components/bitrix/sale.paysystem.registration.robokassa/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/components/bitrix/sale.paysystem.registration.robokassa/class.php
<?php

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true)
{
	die();
}

use Bitrix\Main\Application;
use Bitrix\Main\Error;
use Bitrix\Main\Loader;
use Bitrix\Main\ErrorCollection;
use Bitrix\Main\Localization\Loc;
use Bitrix\Sale\PaySystem;
use Bitrix\Main\Web\Uri;

Loc::loadLanguageFile(__FILE__);

class SalePaySystemRegistrationRobokassa extends \CBitrixComponent
{
	private ErrorCollection $errorCollection;

	public function onPrepareComponentParams($params)
	{
		$this->errorCollection = new ErrorCollection();

		$this->checkModules();

		$this->initResult();

		return parent::onPrepareComponentParams($params);
	}

	private function checkModules(): void
	{
		$requiredModules = ['sale'];

		foreach ($requiredModules as $requiredModule)
		{
			if (!Loader::includeModule($requiredModule))
			{
				$this->errorCollection->setError(
					new Error(
						Loc::getMessage(
							'SALE_SPRR_COMPONENT_MODULE_ERROR',
							[
								'#MODULE_ID#' => $requiredModule,
							]
						)
					)
				);
			}
		}
	}

	private function hasPermission(): bool
	{
		global $APPLICATION;
		$saleModulePermissions = $APPLICATION->GetGroupRight('sale');

		return $saleModulePermissions >= 'W';
	}

	private function subscribeToPullEvents(): void
	{
		if (Loader::includeModule('pull'))
		{
			global $USER;
			\CPullWatch::Add($USER->GetID(), 'SALE_PAYSYSTEM_ROBOKASSA_REGISTRATION');
		}
	}

	private function printErrors(): void
	{
		foreach ($this->errorCollection as $error)
		{
			ShowError($error);
		}
	}

	private function initResult(): void
	{
		$this->arResult = [
			'SITE_URL' => '',
			'RESULT_URL' => '',
			'SUCCESS_URL' => '',
			'FAIL_URL' => '',
			'CALLBACK_URL' => '',
		];
	}

	private function prepareResult(): void
	{
		$request = Application::getInstance()->getContext()->getRequest();
		$protocol = $request->isHttps() ? 'https' : 'http';
		$domain = "{$protocol}://{$request->getHttpHost()}";
		
		$this->arResult['SITE_URL'] = $domain;
		$this->arResult['RESULT_URL'] = "{$domain}/bitrix/tools/sale_ps_result.php";
		$this->arResult['SUCCESS_URL'] = "{$domain}/bitrix/tools/sale/paysystem/robokassa/redirect.php";
		$this->arResult['FAIL_URL'] = "{$domain}/bitrix/tools/sale/paysystem/robokassa/redirect.php";
		$this->arResult['CALLBACK_URL'] = $this->getCallbackUrl($domain);
	}

	private function getCallbackUrl(string $domain): string
	{
		$callbackUrl = "{$domain}/bitrix/tools/sale/paysystem/robokassa/register_callback.php";

		$signedDomain = (new PaySystem\Robokassa\DomainSigner($domain))->signDomain();

		$callbackUri = new Uri($callbackUrl);
		$callbackUri->addParams(['signed_domain' => $signedDomain]);

		return $callbackUri->getUri();
	}

	public function executeComponent()
	{
		if (!$this->hasPermission())
		{
			return;
		}

		if (!$this->errorCollection->isEmpty())
		{
			$this->printErrors();
			return;
		}

		$this->prepareResult();
		$this->subscribeToPullEvents();

		$this->includeComponentTemplate();
	}
}

Anon7 - 2022
AnonSec Team