• Модуль: crmmobile
  • Путь к файлу: ~/bitrix/modules/crmmobile/lib/Terminal/PaymentSystemRepository.php
  • Класс: BitrixCrmMobileTerminalPaymentSystemRepository
  • Вызов: PaymentSystemRepository::preparePaySystemList
static function preparePaySystemList(array $paySystemList): array
{
	$result = [];

	$requiredPaySystemList = self::getRequiredPaySystemList();

	foreach ($paySystemList as $paySystemItem)
	{
		$result[] = [
			'handler' => (string)$paySystemItem['ACTION_FILE'],
			'type' => (string)$paySystemItem['PS_MODE'],
			'connected' => true,
			'id' => (int)$paySystemItem['ID'],
			'title' => $paySystemItem['NAME'],
			'sort' => (int)$paySystemItem['SORT'],
		];
	}

	foreach ($requiredPaySystemList as $requiredPaySystemItem)
	{
		$isFound = false;

		foreach ($result as $paySystem)
		{
			if (
				$requiredPaySystemItem['handler'] === $paySystem['handler']
				&& $requiredPaySystemItem['type'] === $paySystem['type']
			)
			{
				$isFound = true;
				break;
			}
		}

		if (!$isFound)
		{
			$result[] = $requiredPaySystemItem;
		}
	}

	$yandexCheckoutCode = self::getYandexCheckoutHandlerCode();
	foreach ($result as $index => $resultItem)
	{
		if ($resultItem['handler'] === $yandexCheckoutCode)
		{
			if ($resultItem['type'] === YandexCheckoutHandler::MODE_SBP)
			{
				$result[$index]['sort'] = -20;
			}
			elseif ($resultItem['type'] === YandexCheckoutHandler::MODE_SBERBANK_QR)
			{
				$result[$index]['sort'] = -10;
			}

			$result[$index]['sort'] = (int)$result[$index]['sort'];
		}
	}

	usort($result, static function ($item1, $item2) {
		return $item1['sort'] <=> $item2['sort'];
	});

	return $result;
}