37 private const ERROR_HANDLER_ADD =
'ERROR_HANDLER_ADD';
38 private const ERROR_HANDLER_UPDATE =
'ERROR_HANDLER_UPDATE';
39 private const ERROR_HANDLER_DELETE =
'ERROR_HANDLER_DELETE';
50 private const ALLOWED_PAYSYSTEM_FIELDS = [
99 'HAVE_RESULT_RECEIVE' => [
108 'ALLOW_EDIT_PAYMENT' => [
114 'AUTO_CHANGE_1C' => [
117 'CAN_PRINT_CHECK' => [
120 'ENTITY_REGISTRY_TYPE' => [
130 if (!
Main\Loader::includeModule(
'rest'))
146 $restHandlerResult = Internals\PaySystemRestHandlersTable::getList([
147 'select' => [
'ID',
'CODE'],
149 '=APP_ID' =>
$app[
'CLIENT_ID'],
152 while ($restHandler = $restHandlerResult->fetch())
157 '=ACTION_FILE' => $restHandler[
'CODE'],
160 while ($paySystem = $paySystemResult->fetch())
165 Internals\PaySystemRestHandlersTable::delete($restHandler[
'ID']);
176 'sale.paysystem.handler.add' => [__CLASS__,
'addHandler'],
177 'sale.paysystem.handler.update' => [__CLASS__,
'updateHandler'],
178 'sale.paysystem.handler.delete' => [__CLASS__,
'deleteHandler'],
179 'sale.paysystem.handler.list' => [__CLASS__,
'getHandlerList'],
181 'sale.paysystem.add' => [__CLASS__,
'addPaySystem'],
182 'sale.paysystem.update' => [__CLASS__,
'updatePaySystem'],
183 'sale.paysystem.delete' => [__CLASS__,
'deletePaySystem'],
184 'sale.paysystem.list' => [__CLASS__,
'getPaySystemList'],
186 'sale.paysystem.settings.get' => [__CLASS__,
'getSettings'],
187 'sale.paysystem.settings.update' => [__CLASS__,
'updateSettings'],
189 'sale.paysystem.settings.invoice.get' => [__CLASS__,
'getSettingsByInvoice'],
190 'sale.paysystem.settings.payment.get' => [__CLASS__,
'getSettingsByPayment'],
192 'sale.paysystem.pay.invoice' => [__CLASS__,
'payInvoice'],
193 'sale.paysystem.pay.payment' => [__CLASS__,
'payPayment'],
207 static::checkPaySystemPermission();
211 if (!isset(
$params[
'ENTITY_REGISTRY_TYPE']))
215 $params[
'ENTITY_REGISTRY_TYPE'] = REGISTRY_TYPE_CRM_INVOICE;
223 static::checkParamsBeforePaySystemAdd(
$params);
228 'NEW_WINDOW' => isset(
$params[
'NEW_WINDOW']) &&
$params[
'NEW_WINDOW'] ===
'Y' ?
'Y' :
'N',
229 'ACTIVE' => isset(
$params[
'ACTIVE']) &&
$params[
'ACTIVE'] ===
'Y' ?
'Y' :
'N',
230 'PERSON_TYPE_ID' =>
$params[
'PERSON_TYPE_ID'],
231 'ACTION_FILE' =>
$params[
'BX_REST_HANDLER'],
232 'HAVE_PREPAY' =>
'N',
233 'HAVE_RESULT' =>
'N',
234 'HAVE_ACTION' =>
'N',
235 'HAVE_PAYMENT' =>
'N',
236 'HAVE_RESULT_RECEIVE' =>
'Y',
237 'ENTITY_REGISTRY_TYPE' =>
$params[
'ENTITY_REGISTRY_TYPE'],
238 'DESCRIPTION' =>
$params[
'DESCRIPTION'],
260 'PROVIDER_KEY' => $value[
'TYPE'],
261 'PROVIDER_VALUE' => $value[
'VALUE']
266 if (
$fields[
'PERSON_TYPE_ID'] > 0)
268 static::savePersonTypeId($id,
$params[
'PERSON_TYPE_ID']);
271 static::logAnalytics(
272 'addPaySystem' .
$params[
'ENTITY_REGISTRY_TYPE'],
292 if (empty(
$params[
'BX_REST_HANDLER']))
294 throw new RestException(
'Parameter BX_REST_HANDLER is not defined', self::ERROR_CHECK_FAILURE);
297 $handlerData = self::getHandlerData(
$params[
'BX_REST_HANDLER']);
300 throw new RestException(
'Handler not found', self::ERROR_HANDLER_NOT_FOUND);
303 if (
$params[
'APP_ID'] && !empty($handlerData[
'APP_ID']) && $handlerData[
'APP_ID'] !==
$params[
'APP_ID'])
310 throw new RestException(
'Parameter NAME is not defined', self::ERROR_CHECK_FAILURE);
313 $dbRes = Internals\PersonTypeTable::getList([
315 '=ID' =>
$params[
'PERSON_TYPE_ID'],
316 '=ENTITY_REGISTRY_TYPE' =>
$params[
'ENTITY_REGISTRY_TYPE'],
321 throw new RestException(
'Incorrect person type id!', self::ERROR_PERSON_TYPE_NOT_FOUND);
329 private static function savePersonTypeId($serviceId, $personTypeId)
333 "SERVICE_ID" => $serviceId,
335 "=CLASS_NAME" =>
'\\'.Restrictions\PersonType::class
339 $dbRes = Internals\ServiceRestrictionTable::getList(
$params);
342 $restrictionId =
$data[
'ID'];
350 "SERVICE_ID" => $serviceId,
351 "SERVICE_TYPE" => Restrictions\Manager::SERVICE_TYPE_PAYMENT,
353 "PARAMS" =>
array(
'PERSON_TYPE_ID' =>
array($personTypeId))
356 Restrictions\PersonType::save(
$fields, $restrictionId);
367 static::checkPaySystemPermission();
371 static::checkParamsBeforePaySystemUpdate(
$params);
374 if (isset(
$params[
'FIELDS'][
'NAME']))
379 if (isset(
$params[
'FIELDS'][
'DESCRIPTION']))
384 if (isset(
$params[
'FIELDS'][
'NEW_WINDOW']))
389 if (isset(
$params[
'FIELDS'][
'ACTIVE']))
394 if (isset(
$params[
'FIELDS'][
'PERSON_TYPE_ID']))
399 if (isset(
$params[
'FIELDS'][
'BX_REST_HANDLER']))
404 if (isset(
$params[
'FIELDS'][
'XML_ID']))
409 if (isset(
$params[
'FIELDS'][
'LOGOTIP']))
411 $fields[
'LOGOTIP'] = self::saveFile(
$params[
'FIELDS'][
'LOGOTIP']);
416 if (
$fields[
'PERSON_TYPE_ID'] > 0)
418 static::savePersonTypeId(
$params[
'ID'],
$fields[
'PERSON_TYPE_ID']);
431 $handlerList = Manager::getHandlerList();
433 $handler =
$params[
'FIELDS'][
'BX_REST_HANDLER'] ??
null;
434 if ($handler && !isset($handlerList[
'USER'][$handler]) && !isset($handlerList[
'SYSTEM'][$handler]))
436 throw new RestException(
'Handler not found', self::ERROR_HANDLER_NOT_FOUND);
439 if ((
int)(
$params[
'ID'] ?? 0) === 0)
441 throw new RestException(
'Parameter ID is not defined', self::ERROR_CHECK_FAILURE);
453 throw new RestException(
'Pay system not found', self::ERROR_PAY_SYSTEM_NOT_FOUND);
456 if (!self::hasAccessToPaySystem(
$data,
$params[
'APP_ID']))
461 if (isset(
$params[
'FIELDS'][
'PERSON_TYPE_ID']))
463 $dbRes = Internals\PersonTypeTable::getList([
465 '=ID' =>
$params[
'FIELDS'][
'PERSON_TYPE_ID'],
466 '=ENTITY_REGISTRY_TYPE' =>
$data[
'ENTITY_REGISTRY_TYPE'],
471 throw new RestException(
'Incorrect person type id!', self::ERROR_PERSON_TYPE_NOT_FOUND);
485 static::checkPaySystemPermission();
489 static::checkParamsBeforeSettingsUpdate(
$params);
491 foreach (
$params[
'SETTINGS'] as $field => $value)
493 if (!is_array($value))
495 throw new RestException(
'The value of SETTINGS[' . $field .
'] is not valid', self::ERROR_CHECK_FAILURE);
503 'PROVIDER_KEY' => $value[
'TYPE'],
504 'PROVIDER_VALUE' => $value[
'VALUE']
525 throw new RestException(
'Parameter ID is not defined', self::ERROR_CHECK_FAILURE);
531 throw new RestException(
'Pay system not found', static::ERROR_CHECK_FAILURE);
536 throw new RestException(
'Parameter SETTINGS is not defined or empty', self::ERROR_HANDLER_NOT_FOUND);
539 if (!self::hasAccessToPaySystem($item,
$params[
'APP_ID']))
553 static::checkPaySystemPermission();
557 static::checkParamsBeforeSettingsGet(
$params);
564 foreach ($codes as $field => $value)
573 'TYPE' => $mapping[
'PROVIDER_KEY'],
574 'VALUE' => $mapping[
'PROVIDER_VALUE']
588 if (!isset(
$params[
'PERSON_TYPE_ID']))
590 throw new RestException(
'Parameter PERSON_TYPE_ID is not defined', self::ERROR_CHECK_FAILURE);
595 throw new RestException(
'Parameter ID is not defined', self::ERROR_CHECK_FAILURE);
601 throw new RestException(
'Pay system not found', static::ERROR_CHECK_FAILURE);
604 if (!self::hasAccessToPaySystem($item,
$params[
'APP_ID']))
616 static::checkPaySystemPermission();
620 static::checkParamsBeforePaySystemDelete(
$params);
634 if ((
int)(
$params[
'ID'] ?? 0) === 0)
636 throw new RestException(
'Parameter ID is not defined', self::ERROR_CHECK_FAILURE);
642 throw new RestException(
'Pay system not found', self::ERROR_PAY_SYSTEM_NOT_FOUND);
645 if (!self::hasAccessToPaySystem(
$data,
$params[
'APP_ID']))
660 static::checkPaySystemPermission();
664 self::checkParamsOnAddHandler(
$params);
669 'SORT' =>
$params[
'SORT'] ?? 100,
670 'SETTINGS' =>
$params[
'SETTINGS'],
674 $result = Internals\PaySystemRestHandlersTable::add(
$data);
688 private static function checkParamsOnAddHandler(
array $params)
692 throw new RestException(
'Parameter NAME is not defined', self::ERROR_CHECK_FAILURE);
697 throw new RestException(
'Parameter CODE is not defined', self::ERROR_CHECK_FAILURE);
700 if (!isset(
$params[
'SETTINGS']))
702 throw new RestException(
'Parameter SETTINGS is not defined', self::ERROR_CHECK_FAILURE);
705 if (!isset(
$params[
'SETTINGS'][
'CODES']))
707 throw new RestException(
'Parameter SETTINGS[CODES] is not defined', self::ERROR_CHECK_FAILURE);
711 empty(
$params[
'SETTINGS'][
'FORM_DATA'])
712 && empty(
$params[
'SETTINGS'][
'CHECKOUT_DATA'])
713 && empty(
$params[
'SETTINGS'][
'IFRAME_DATA'])
716 throw new RestException(
717 'Parameter SETTINGS[FORM_DATA] or SETTINGS[CHECKOUT_DATA] or SETTINGS[IFRAME_DATA] is not defined',
718 self::ERROR_CHECK_FAILURE
723 !empty(
$params[
'SETTINGS'][
'FORM_DATA'])
724 && empty(
$params[
'SETTINGS'][
'FORM_DATA'][
'ACTION_URI'])
727 throw new RestException(
'Parameter SETTINGS[FORM_DATA][ACTION_URI] is not defined', self::ERROR_CHECK_FAILURE);
731 !empty(
$params[
'SETTINGS'][
'CHECKOUT_DATA'])
732 && empty(
$params[
'SETTINGS'][
'CHECKOUT_DATA'][
'ACTION_URI'])
735 throw new RestException(
'Parameter SETTINGS[IFRAME_DATA][ACTION_URI] is not defined', self::ERROR_CHECK_FAILURE);
739 !empty(
$params[
'SETTINGS'][
'IFRAME_DATA'])
740 && empty(
$params[
'SETTINGS'][
'IFRAME_DATA'][
'ACTION_URI'])
743 throw new RestException(
'Parameter SETTINGS[IFRAME_DATA][ACTION_URI] is not defined', self::ERROR_CHECK_FAILURE);
747 isset(
$params[
'SETTINGS'][
'CLIENT_TYPE'])
751 throw new RestException(
'Parameter value SETTINGS[CLIENT_TYPE] is invalid', self::ERROR_CHECK_FAILURE);
754 $dbRes = Internals\PaySystemRestHandlersTable::getList([
761 throw new RestException(
'Handler already exists!', self::ERROR_HANDLER_ALREADY_EXIST);
774 static::checkPaySystemPermission();
778 self::checkParamsOnUpdateHandler(
$params);
795 private static function checkParamsOnUpdateHandler(
array $params)
799 throw new RestException(
'Parameter FIELDS is not defined', self::ERROR_CHECK_FAILURE);
803 isset(
$params[
'SETTINGS'][
'CLIENT_TYPE'])
807 throw new RestException(
'Parameter value SETTINGS[CLIENT_TYPE] is invalid', self::ERROR_CHECK_FAILURE);
810 $paySystemRestHandlers = Internals\PaySystemRestHandlersTable::getList(
array(
815 if (!$paySystemRestHandlers)
817 throw new RestException(
'Handler not found', self::ERROR_HANDLER_NOT_FOUND);
820 if (
$params[
'APP_ID'] && !empty($paySystemRestHandlers[
'APP_ID']) && $paySystemRestHandlers[
'APP_ID'] !==
$params[
'APP_ID'])
822 throw new AccessException();
835 static::checkPaySystemPermission();
839 self::checkParamsOnDeleteHandler(
$params);
841 $result = Internals\PaySystemRestHandlersTable::delete(
$params[
'ID']);
855 private static function checkParamsOnDeleteHandler(
$params): void
857 $dbRes = Internals\PaySystemRestHandlersTable::getList(
array(
865 throw new RestException(
'Handler not found', self::ERROR_HANDLER_NOT_FOUND);
876 throw new RestException(
'Pay system with handler '.mb_strtoupper(
$data[
'CODE']).
' exists!', self::ERROR_PAY_SYSTEM_DELETE);
888 static::checkPaySystemPermission();
891 $dbRes = Internals\PaySystemRestHandlersTable::getList([
892 'select' => [
'ID',
'NAME',
'CODE',
'SORT',
'SETTINGS'],
894 while ($item =
$dbRes->fetch())
910 static::checkPaySystemPermission();
912 self::checkParamsBeforePaySystemListGet(
$params);
916 ? array_flip(self::prepareIncomingParams(array_flip(
$params[
'SELECT'])))
917 : array_keys(self::ALLOWED_PAYSYSTEM_FIELDS)
921 $filterFromParams = isset(
$params[
'FILTER']) && is_array(
$params[
'FILTER']) ?
$params[
'FILTER'] : [];
922 if ($filterFromParams)
924 $incomingFieldsMap = self::getIncomingFieldsMap();
925 foreach ($filterFromParams as $rawName => $value)
928 $fieldName = $incomingFieldsMap[$filterField[
'FIELD']] ?? $filterField[
'FIELD'];
935 ? self::prepareIncomingParams(
$params[
'ORDER'])
945 while ($item =
$dbRes->fetch())
947 $result[] = self::prepareOutcomingFields($item);
957 private static function checkParamsBeforePaySystemListGet(
array $params)
962 $select = array_flip(self::prepareIncomingParams(array_flip(
$select)));
963 $diffSelect = array_diff(
965 array_keys(self::ALLOWED_PAYSYSTEM_FIELDS)
971 implode(
', ', $diffSelect) .
' not allowed for select',
972 self::ERROR_CHECK_FAILURE
981 foreach (
$filter as $rawName => $value)
984 if (isset($filterField[
'FIELD']))
991 $diffFilter = array_diff(
993 array_keys(self::ALLOWED_PAYSYSTEM_FIELDS)
997 throw new RestException(
998 implode(
', ', $diffFilter) .
' not allowed for filter',
999 self::ERROR_CHECK_FAILURE
1006 ? self::prepareIncomingParams(
$params[
'ORDER'])
1011 $diffOrder = array_diff(
1013 array_keys(self::ALLOWED_PAYSYSTEM_FIELDS)
1017 throw new RestException(
1018 implode(
', ', $diffOrder) .
' not allowed for order',
1019 self::ERROR_CHECK_FAILURE
1032 public static function getSettingsByInvoice(
array $params,
$n, \CRestServer $server)
1034 static::checkInvoicePermission();
1038 self::checkParamsBeforeSettingsByInvoiceGet(
$params);
1040 if (isset(
$params[
'PAY_SYSTEM_ID']))
1050 throw new RestException(
'Pay system with handler '.
$params[
'BX_REST_HANDLER'].
' not found', self::ERROR_PAY_SYSTEM_NOT_FOUND);
1056 $invoice = Invoice\Invoice::load(
$params[
'INVOICE_ID']);
1073 throw new RestException(
'Invoice #'.
$params[
'INVOICE_ID'].
' not found', self::ERROR_INTERNAL_INVOICE_NOT_FOUND);
1083 public static function getSettingsByPayment(
array $params,
$n, \CRestServer $server)
1085 static::checkOrderPermission();
1089 self::checkParamsBeforeSettingsByPaymentGet(
$params);
1091 [
$orderId, $paymentId] = Manager::getIdsByPayment(
$params[
'PAYMENT_ID']);
1096 $orderClassName = $registry->getOrderClassName();
1110 throw new RestException(
'Order #'.
$orderId.
' not found', self::ERROR_INTERNAL_ORDER_NOT_FOUND);
1122 if (!
Main\Loader::includeModule(
'crm'))
1124 throw new RestException(
'Pay invoice is not supported!', self::ERROR_PAY_INVOICE_NOT_SUPPORTED);
1127 static::checkInvoicePermission();
1131 self::checkParamsForInvoice(
$params);
1134 'select' =>
array(
'ID'),
1136 'ORDER_ID' =>
$params[
'INVOICE_ID'],
1144 throw new RestException(
'Invoice #'.
$params[
'INVOICE_ID'].
' not found', self::ERROR_INTERNAL_INVOICE_NOT_FOUND);
1150 '=ENTITY_REGISTRY_TYPE' => REGISTRY_TYPE_CRM_INVOICE
1153 if (isset(
$params[
'PAY_SYSTEM_ID']))
1169 throw new RestException(
'Pay system not found', static::ERROR_PROCESS_REQUEST_RESULT);
1172 $params[
'PAY_SYSTEM_ID'] = $item[
'ID'];
1174 return self::payPaymentInternal(
$params, $server);
1185 static::checkOrderPermission();
1189 self::checkParamsForPayment(
$params);
1191 return self::payPaymentInternal(
$params, $server);
1202 $context = Main\Context::getCurrent();
1216 static::logAnalytics(
1217 'payPayment' .
$service->getField(
'ENTITY_REGISTRY_TYPE'),
1219 $service->getField(
'PERSON_TYPE_ID'),
1231 private static function arrayChangeKeyCaseRecursive(
array $data, $case = CASE_UPPER)
1233 return array_map(
static function ($item) use ($case) {
1234 if (is_array($item))
1236 $item = self::arrayChangeKeyCaseRecursive($item, $case);
1239 }, array_change_key_case(
$data, $case));
1248 return self::replaceIncomingKeys(self::arrayChangeKeyCaseRecursive(
$data));
1256 private static function prepareHandlerParams(
array $data, \CRestServer $server):
array
1258 $data = self::replaceIncomingKeys(array_change_key_case(
$data, CASE_UPPER));
1264 private static function preparePaySystemParams(
array $data, \CRestServer $server):
array
1276 private static function checkParamsForInvoice(
array $params)
1278 if (!isset(
$params[
'BX_REST_HANDLER']) && !isset(
$params[
'PAY_SYSTEM_ID']))
1280 throw new RestException(
'Empty field BX_REST_HANDLER and PAY_SYSTEM_ID', self::ERROR_CHECK_FAILURE);
1283 if (isset(
$params[
'PAY_SYSTEM_ID']))
1288 throw new RestException(
'Pay system with ID='.
$params[
'PAY_SYSTEM_ID'].
' not found', static::ERROR_CHECK_FAILURE);
1292 if (isset(
$params[
'BX_REST_HANDLER']))
1294 $dbRes = Internals\PaySystemRestHandlersTable::getList(
array(
1296 '=CODE' =>
$params[
'BX_REST_HANDLER']
1301 throw new RestException(
'Incorrect rest handler code', static::ERROR_CHECK_FAILURE);
1305 if (empty(
$params[
'INVOICE_ID']))
1307 throw new RestException(
'Empty field INVOICE_ID!', self::ERROR_CHECK_FAILURE);
1316 private static function checkParamsBeforeSettingsByInvoiceGet(
array $params)
1318 if (!isset(
$params[
'BX_REST_HANDLER']) && !isset(
$params[
'PAY_SYSTEM_ID']))
1320 throw new RestException(
'Empty field BX_REST_HANDLER and PAY_SYSTEM_ID', self::ERROR_CHECK_FAILURE);
1323 if (empty(
$params[
'INVOICE_ID']))
1325 throw new RestException(
'Empty field INVOICE_ID', self::ERROR_CHECK_FAILURE);
1328 if (isset(
$params[
'PAY_SYSTEM_ID']))
1333 throw new RestException(
'Pay system with ID='.
$params[
'PAY_SYSTEM_ID'].
' not found', static::ERROR_CHECK_FAILURE);
1336 if (!self::hasAccessToPaySystem(
$data,
$params[
'APP_ID']))
1338 throw new AccessException();
1342 if (isset(
$params[
'BX_REST_HANDLER']))
1344 $dbRes = Internals\PaySystemRestHandlersTable::getList(
array(
1346 '=CODE' =>
$params[
'BX_REST_HANDLER']
1350 $handlerData =
$dbRes->fetch();
1353 throw new RestException(
'Incorrect rest handler code', static::ERROR_CHECK_FAILURE);
1356 if (
$params[
'APP_ID'] && !empty($handlerData[
'APP_ID']) && $handlerData[
'APP_ID'] !==
$params[
'APP_ID'])
1358 throw new AccessException();
1368 private static function checkParamsForPayment(
array $params)
1370 if (empty(
$params[
'PAY_SYSTEM_ID']))
1372 throw new RestException(
'Empty field PAY_SYSTEM_ID!', self::ERROR_CHECK_FAILURE);
1378 throw new RestException(
'Pay system not found', static::ERROR_CHECK_FAILURE);
1381 if (empty(
$params[
'PAYMENT_ID']))
1383 throw new RestException(
'Empty field PAYMENT_ID', self::ERROR_CHECK_FAILURE);
1389 $paymentClassName = $registry->getPaymentClassName();
1390 $dbRes = $paymentClassName::getList([
1391 'select' => [
'ID',
'PAY_SYSTEM_ID'],
1393 '=ID' =>
$params[
'PAYMENT_ID'],
1394 '=PAY_SYSTEM_ID' =>
$params[
'PAY_SYSTEM_ID']
1400 throw new RestException(
1403 .
' and PAY_SYSTEM_ID='.
$params[
'PAY_SYSTEM_ID']
1404 .
' not found', self::ERROR_CHECK_FAILURE
1414 private static function checkParamsBeforeSettingsByPaymentGet(
array $params)
1416 if (empty(
$params[
'PAY_SYSTEM_ID']))
1418 throw new RestException(
'Empty field PAY_SYSTEM_ID!', self::ERROR_CHECK_FAILURE);
1421 if (empty(
$params[
'PAYMENT_ID']))
1423 throw new RestException(
'Empty field PAYMENT_ID', self::ERROR_CHECK_FAILURE);
1429 throw new RestException(
'Pay system not found', static::ERROR_CHECK_FAILURE);
1432 if (!self::hasAccessToPaySystem($item,
$params[
'APP_ID']))
1434 throw new AccessException();
1440 $paymentClassName = $registry->getPaymentClassName();
1441 $dbRes = $paymentClassName::getList([
1442 'select' => [
'ID',
'PAY_SYSTEM_ID'],
1444 '=ID' =>
$params[
'PAYMENT_ID'],
1445 '=PAY_SYSTEM_ID' =>
$params[
'PAY_SYSTEM_ID']
1451 throw new RestException(
1454 .
' and PAY_SYSTEM_ID='.
$params[
'PAY_SYSTEM_ID']
1455 .
' not found', self::ERROR_CHECK_FAILURE
1470 $crmUserPermissions = Container::getInstance()->getUserPermissions()->entityType();
1472 !$crmUserPermissions->canAddItems(\CCrmOwnerType::Order)
1473 && !$crmUserPermissions->canUpdateItems(\CCrmOwnerType::Order)
1499 $crmUserPermissions = Container::getInstance()->getUserPermissions()->entityType();
1501 !$crmUserPermissions->canUpdateItems(\CCrmOwnerType::Invoice)
1502 && !$crmUserPermissions->canAddItems(\CCrmOwnerType::Invoice)
1537 $file[
'MODULE_ID'] =
'sale';
1538 return \CFile::SaveFile($file,
'sale');
1547 private static function getIncomingFieldsMap():
array
1550 'LOGOTYPE' =>
'LOGOTIP',
1551 'TARIFF' =>
'TARIF',
1558 private static function getOutcomingFieldsMap():
array
1561 'LOGOTIP' =>
'LOGOTYPE',
1562 'TARIF' =>
'TARIFF',
1568 return self::replaceOutcomingKeys(
1569 static::castOutcomingFieldsData(
$data)
1573 private static function getFieldNamesOfType(
string $type):
array
1577 self::ALLOWED_PAYSYSTEM_FIELDS,
1578 static function ($field) use (
$type)
1580 return isset($field[
'TYPE']) && $field[
'TYPE'] ===
$type;
1590 $stringFields = self::getFieldNamesOfType(
'string');
1591 foreach ($stringFields as $stringField)
1593 if (!array_key_exists($stringField,
$data))
1599 ? (string)
$data[$stringField]
1604 $intFields = self::getFieldNamesOfType(
'integer');
1605 foreach ($intFields as $intField)
1607 if (!array_key_exists($intField,
$data))
1613 ? (int)
$data[$intField]
1627 return self::replaceKeys(
$data, self::getIncomingFieldsMap());
1636 return self::replaceKeys(
$data, self::getOutcomingFieldsMap());
1655 isset(
$data[
'FIELDS'])
1656 && is_array(
$data[
'FIELDS'])
1657 && array_key_exists(
$key,
$data[
'FIELDS'])
1668 private static function logAnalytics(
$action, $handler, $personType, \CRestServer $restServer) : bool
1672 if ($restServer->
getAuthType() === \Bitrix\Rest\OAuth\Auth::AUTH_TYPE)
1674 $app = \Bitrix\Rest\AppTable::getByClientId($restServer->
getClientId());
1689 $tag = uniqid(
$code,
true);
1716 private static function hasAccessToPaySystem(
array $paySystemData,
string $appId =
null): bool
1718 $handlerCode = $paySystemData[
'ACTION_FILE'];
1721 $handlerData = self::getHandlerData($handlerCode);
1722 if ($appId && !empty($handlerData[
'APP_ID']) && $handlerData[
'APP_ID'] !== $appId)
1735 private static function getHandlerData(
string $code): ?
array
1744 $handlerData = Internals\PaySystemRestHandlersTable::getList([
1745 'filter' => [
'=CODE' =>
$code],
1748 if (is_array($handlerData))