- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/controller/action/paysystem/addpaysystemaction.php
- Класс: BitrixSaleControllerActionPaySystemAddPaySystemAction
- Вызов: AddPaySystemAction::createPaySystem
private function createPaySystem(array $fields): SaleResult
{
$result = new SaleResult();
$name = $fields['NAME'] ?? '';
if (empty($name))
{
$name = $this->getDefaultPaySystemName($fields['ACTION_FILE'], $fields['PS_MODE'] ?? null);
}
$actionFile = $fields['ACTION_FILE'];
$psMode = $fields['PS_MODE'] ?? '';
$paySystemParams = [
'NAME' => $name,
'PSA_NAME' => $name,
'ACTION_FILE' => $actionFile,
'PS_MODE' => $psMode,
'NEW_WINDOW' => $fields['NEW_WINDOW'] ?: 'N',
'ACTIVE' => $fields['ACTIVE'] ?: 'Y',
'DESCRIPTION' => $fields['DESCRIPTION'] ?? '',
'XML_ID' => $fields['XML_ID'] ?? SalePaySystemManager::generateXmlId(),
'ENTITY_REGISTRY_TYPE' => $fields['ENTITY_REGISTRY_TYPE'] ?? SaleRegistry::REGISTRY_TYPE_ORDER
];
if (isset($fields['ENTITY_REGISTRY_TYPE']))
{
$paySystemParams['ENTITY_REGISTRY_TYPE'] = $fields['ENTITY_REGISTRY_TYPE'];
}
if (isset($fields['LOGOTYPE']))
{
$paySystemParams['LOGOTIP'] = self::saveFile($fields['LOGOTYPE']);
}
else
{
$documentRoot = MainApplication::getDocumentRoot();
if ($psMode)
{
$image = '/bitrix/images/sale/sale_payments/' . $actionFile . '/' . $psMode . '.png';
if (MainIOFile::isFileExists($documentRoot . $image))
{
$paySystemParams['LOGOTIP'] = CFile::MakeFileArray($image);
}
}
if (!isset($paySystemParams['LOGOTIP']))
{
$image = '/bitrix/images/sale/sale_payments/' . $actionFile . '.png';
if (MainIOFile::isFileExists($documentRoot . $image))
{
$paySystemParams['LOGOTIP'] = CFile::MakeFileArray($image);
}
}
if (isset($paySystemParams['LOGOTIP']))
{
$paySystemParams['LOGOTIP']['MODULE_ID'] = 'sale';
CFile::SaveForDB($paySystemParams, 'LOGOTIP', 'sale/paysystem/logotip');
}
}
$addResult = SalePaySystemManager::add($paySystemParams);
if ($addResult->isSuccess())
{
$id = $addResult->getId();
SalePaySystemManager::update(
$id,
[
'PARAMS' => serialize(
[
'BX_PAY_SYSTEM_ID' => $id,
]
),
'PAY_SYSTEM_ID' => $id,
]
);
$personTypeId = $fields['PERSON_TYPE_ID'] ?? 0;
if (isset($fields['SETTINGS']) && is_array($fields['SETTINGS']))
{
foreach ($fields['SETTINGS'] as $key => $value)
{
SaleBusinessValue::setMapping(
$key,
SalePaySystemService::PAY_SYSTEM_PREFIX . $id,
$personTypeId,
[
'PROVIDER_KEY' => $value['TYPE'] ?? '',
'PROVIDER_VALUE' => $value['VALUE'] ?? '',
]
);
}
}
if ($personTypeId > 0)
{
static::savePersonTypeId($id, $personTypeId);
}
$result->setId($id);
}
else
{
$result->addErrors($addResult->getErrors());
}
return $result;
}