• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/restservice.php
  • Класс: BitrixSalePaySystemRestService
  • Вызов: RestService::addPaySystem
static function addPaySystem(array $params, $n, CRestServer $server)
{
	static::checkPaySystemPermission();

	$params = self::preparePaySystemParams($params, $server);

	if (!isset($params['ENTITY_REGISTRY_TYPE']))
	{
		if (IsModuleInstalled('crm'))
		{
			$params['ENTITY_REGISTRY_TYPE'] = REGISTRY_TYPE_CRM_INVOICE;
		}
		else
		{
			$params['ENTITY_REGISTRY_TYPE'] = Registry::REGISTRY_TYPE_ORDER;
		}
	}

	static::checkParamsBeforePaySystemAdd($params);

	$fields = [
		'NAME' => $params['NAME'],
		'PSA_NAME' => $params['NAME'],
		'NEW_WINDOW' => $params['NEW_WINDOW'] ?: 'N',
		'ACTIVE' => $params['ACTIVE'] ?: 'N',
		'PERSON_TYPE_ID' => $params['PERSON_TYPE_ID'],
		'ACTION_FILE' => $params['BX_REST_HANDLER'],
		'HAVE_PREPAY' => 'N',
		'HAVE_RESULT' => 'N',
		'HAVE_ACTION' => 'N',
		'HAVE_PAYMENT' => 'N',
		'HAVE_RESULT_RECEIVE' => 'Y',
		'ENTITY_REGISTRY_TYPE' => $params['ENTITY_REGISTRY_TYPE'],
		'DESCRIPTION' => $params['DESCRIPTION'],
		'XML_ID' => $params['XML_ID'],
	];

	if (isset($params['LOGOTIP']))
	{
		$fields['LOGOTIP'] = self::saveFile($params['LOGOTIP']);
	}

	$result = Manager::add($fields);
	if ($result->isSuccess())
	{
		$id = $result->getId();
		Manager::update($id, array('PAY_SYSTEM_ID' => $id));

		foreach ($params['SETTINGS'] as $key => $value)
		{
			BusinessValue::setMapping(
				$key,
				Service::PAY_SYSTEM_PREFIX.$id,
				$params['PERSON_TYPE_ID'],
				[
					'PROVIDER_KEY' => $value['TYPE'],
					'PROVIDER_VALUE' => $value['VALUE']
				]
			);
		}

		if ($fields['PERSON_TYPE_ID'] > 0)
		{
			static::savePersonTypeId($id, $params['PERSON_TYPE_ID']);
		}

		static::logAnalytics(
			'addPaySystem' . $params['ENTITY_REGISTRY_TYPE'],
			$params['BX_REST_HANDLER'],
			$params['PERSON_TYPE_ID'],
			$server
		);

		return $id;
	}

	$error = implode("n", $result->getErrorMessages());
	throw new RestException($error, self::ERROR_PAY_SYSTEM_ADD);
}