- Модуль: 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);
}