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

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

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

Получить ограничения не сложно, достаточно сделать запрос в таблицу 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 объявлена устаревшей. К тому же битрикс решил её выкл...
Читать дальше »
Алексей,
Как проверить USER_CHECKWORD 0
В базе данных у пользователей есть поле CHECKWORD, но оно не равно той строке, что отправляется поль...
Читать дальше »
Алексей,
Комментарии
Зарегистрируйтесь чтобы получать уведомления об ответе