Как получить ограничения доставки по платежным системам
Понадобилось вне компонента оформления заказа показать какие способы оплаты доступны для той или иной службы доставки. Пришлось лезть в код админки, смотреть как это устроено.
Получить ограничения не сложно, достаточно сделать запрос в таблицу 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']); } }
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.