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

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

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

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

Получить ограничения не сложно, достаточно сделать запрос в таблицу 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
Поделиться
Похожие статьи
Как проверить USER_CHECKWORD
В базе данных у пользователей есть поле CHECKWORD, но оно не равно той строке, что отправляется поль...
Читать дальше » 0
Алексей,
Конвертация картинок в webp на битриксе
Картинки в формате WebP "весят" значительно меньше, а сам формат уже поддерживается многим...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
24 окт 2022
спасибо, очень помогло!
Понадобилось вне компонента оформления заказа показать какие способы оплаты доступны для той или иной службы доставки. Пришлось лезть в код админки, смотреть как это устроено.