Как получить ограничения доставки по платежным системам

431
Алексей,
Как получить ограничения доставки по платежным системам

Понадобилось вне компонента оформления заказа показать какие способы оплаты доступны для той или иной службы доставки. Пришлось лезть в код админки, смотреть как это устроено.

Получить ограничения не сложно, достаточно сделать запрос в таблицу b_sale_service_rstr, но там нет данных по платежным системам. Долго не мог понять как же их получить, пока не залез в ядро. Там нашел метод prepareParamsValues, который и возвращает список платежных систем. Готовый код ниже.

$dbRestr = \Bitrix\Sale\Delivery\Restrictions\Manager::getList(array(
	'filter' => array('SERVICE_ID' => $arDelivery['ID']) // ID службы доставки
));
while ($arRestr = $dbRestr->fetch()) {
	if(!$arRestr["PARAMS"]) { // У ограничений по платежной системе нет параметров
		$arRestr["PARAMS"] = array(); 
	}
	$params = $arRestr["CLASS_NAME"]::prepareParamsValues($arRestr["PARAMS"], $arDelivery['ID']); // Получаем платежные системы
	if ($params['PAY_SYSTEMS']) {
		var_dump($params['PAY_SYSTEMS']);
	}
}
Опубликовано 31 июля 2020
разработчику, готовый код, костыли, примеры d7
Поделиться
Похожие статьи
Замена функций в коде на мультибайтовые аналоги (mb_) 0
В php 7.2 ini-настройка mbstring.func_overload объявлена устаревшей. К тому же битрикс решил её выкл...
Читать дальше »
Алексей,
Конвертация картинок в webp на битриксе 0
Картинки в формате WebP "весят" значительно меньше, а сам формат уже поддерживается многим...
Читать дальше »
Алексей,
Комментарии
Зарегистрируйтесь чтобы получать уведомления об ответе
Понадобилось вне компонента оформления заказа показать какие способы оплаты доступны для той или иной службы доставки. Пришлось лезть в код админки, смотреть как это устроено.