17 private $handlerClassName;
18 private array $handlerDescription = [];
19 private array $handlerModeList = [];
25 if (empty(
$fields[
'ACTION_FILE']))
29 'actionFile not found',
37 $this->loadHandlerModeList(
$fields[
'ACTION_FILE']);
38 if (!array_key_exists(
$fields[
'PS_MODE'], $this->handlerModeList))
42 "psMode \"{$fields['PS_MODE']}\" not available",
56 $checkParamsResult = $this->checkParams(
$fields);
57 if (!$checkParamsResult->isSuccess())
59 $this->
addErrors($checkParamsResult->getErrors());
63 $createPaySystemResult = $this->createPaySystem(
$fields);
64 if (!$createPaySystemResult->isSuccess())
66 $this->
addErrors($createPaySystemResult->getErrors());
71 'ID' => $createPaySystemResult->getId(),
85 $actionFile =
$fields[
'ACTION_FILE'];
86 $psMode =
$fields[
'PS_MODE'] ??
'';
91 'ACTION_FILE' => $actionFile,
93 'NEW_WINDOW' =>
$fields[
'NEW_WINDOW'] ?:
'N',
94 'ACTIVE' =>
$fields[
'ACTIVE'] ?:
'Y',
95 'DESCRIPTION' =>
$fields[
'DESCRIPTION'] ??
'',
100 if (isset(
$fields[
'ENTITY_REGISTRY_TYPE']))
102 $paySystemParams[
'ENTITY_REGISTRY_TYPE'] =
$fields[
'ENTITY_REGISTRY_TYPE'];
105 if (isset(
$fields[
'LOGOTYPE']))
107 $paySystemParams[
'LOGOTIP'] = self::saveFile(
$fields[
'LOGOTYPE']);
115 $image =
'/bitrix/images/sale/sale_payments/' . $actionFile .
'/' . $psMode .
'.png';
118 $paySystemParams[
'LOGOTIP'] = \CFile::MakeFileArray($image);
122 if (!isset($paySystemParams[
'LOGOTIP']))
124 $image =
'/bitrix/images/sale/sale_payments/' . $actionFile .
'.png';
127 $paySystemParams[
'LOGOTIP'] = \CFile::MakeFileArray($image);
131 if (isset($paySystemParams[
'LOGOTIP']))
133 $paySystemParams[
'LOGOTIP'][
'MODULE_ID'] =
'sale';
134 \CFile::SaveForDB($paySystemParams,
'LOGOTIP',
'sale/paysystem/logotip');
138 $addResult = Sale\PaySystem\Manager::add($paySystemParams);
139 if ($addResult->isSuccess())
141 $id = $addResult->getId();
142 Sale\PaySystem\Manager::update(
145 'PARAMS' => serialize(
147 'BX_PAY_SYSTEM_ID' => $id,
150 'PAY_SYSTEM_ID' => $id,
154 $personTypeId =
$fields[
'PERSON_TYPE_ID'] ?? 0;
160 Sale\BusinessValue::setMapping(
162 Sale\PaySystem\Service::PAY_SYSTEM_PREFIX . $id,
165 'PROVIDER_KEY' => $value[
'TYPE'] ??
'',
166 'PROVIDER_VALUE' => $value[
'VALUE'] ??
'',
172 if ($personTypeId > 0)
174 static::savePersonTypeId($id, $personTypeId);
181 $result->addErrors($addResult->getErrors());
187 private function getDefaultPaySystemName(
string $actionFile, ?
string $psMode): string
189 $this->loadHandlerDescription($actionFile, $psMode);
191 $name = $this->handlerDescription[
'NAME'] ??
'';
195 $this->loadHandlerModeList($actionFile);
197 $psModeName = $this->handlerModeList[$psMode] ??
'';
199 $name .=
": $psModeName";
202 return $name ?:
'untitled';
205 private function includeHandler(
string $actionFile): void
207 if ($this->handlerClassName)
212 [$this->handlerClassName] = Sale\PaySystem\Manager::includeHandler($actionFile);
215 private function loadHandlerDescription(
string $actionFile, ?
string $psMode): void
217 if ($this->handlerDescription)
222 $this->handlerDescription = Sale\PaySystem\Manager::getHandlerDescription($actionFile, $psMode);
225 private function loadHandlerModeList(
string $actionFile): void
227 if ($this->handlerModeList)
232 $this->includeHandler($actionFile);
234 $this->handlerModeList = $this->handlerClassName::getHandlerModeList();
242 $file[
'MODULE_ID'] =
'sale';
243 return \CFile::SaveFile($file,
'sale');
249 private static function savePersonTypeId($serviceId, $personTypeId): void
253 'SERVICE_ID' => $serviceId,
254 'SERVICE_TYPE' => Sale\Services\Base\RestrictionManager::SERVICE_TYPE_PAYMENT,
255 '=CLASS_NAME' =>
'\\'.Sale\Services\PaySystem\Restrictions\PersonType::class
259 $serviceRestrictionIterator = Sale\Internals\ServiceRestrictionTable::getList(
$params);
260 if ($serviceRestrictionData = $serviceRestrictionIterator->fetch())
262 $restrictionId = $serviceRestrictionData[
'ID'];
270 'SERVICE_ID' => $serviceId,
271 'SERVICE_TYPE' => Sale\Services\Base\RestrictionManager::SERVICE_TYPE_PAYMENT,
273 'PARAMS' => [
'PERSON_TYPE_ID' => [$personTypeId]]
276 Sale\Services\PaySystem\Restrictions\PersonType::save(
$fields, $restrictionId);
foreach(['Bitrix\\Main'=> '/lib', 'Psr\\Container'=> '/vendor/psr/container/src', 'Psr\\Log'=> '/vendor/psr/log/src', 'Psr\\Http\\Message'=> '/vendor/psr/http-message/src', 'Psr\\Http\\Client'=> '/vendor/psr/http-client/src', 'Http\\Promise'=> '/vendor/php-http/promise/src', 'PHPMailer\\PHPMailer'=> '/vendor/phpmailer/phpmailer/src', 'GeoIp2'=> '/vendor/geoip2/geoip2/src', 'MaxMind\\Db'=> '/vendor/maxmind-db/reader/src/MaxMind/Db', 'PhpParser'=> '/vendor/nikic/php-parser/lib/PhpParser', 'Recurr'=> '/vendor/simshaun/recurr/src/Recurr',] as $namespace=> $namespacePath) $documentRoot