Дата последнего изменения: 22.05.2020
Используется метод marketplace.product.list который позволяет получить отфильтрованный список решений. Выберем готовые интернет-магазины с адаптивной версткой продающиеся с партнерской скидкой:
$result = executePartnerREST('marketplace.product.list', array( 'filter' => array('partnerDiscount' => '1', 'isAdaptive' => 1, 'categoryId' => 14 ))); $items = $result['result']['list'];
Метод marketplace.product.list является списочным и отдает не весь набор подходящих решений, а пакет из одной "страницы" по 20 элементов с сортировкой по умолчанию. Следовательно, нам понадобится обращаться к этому же методу дальше, чтобы получить все данные, подставляя в каждый вызов дополнительный параметр navigation:
$pages = 1; $current_page = 1; while ($current_page < $pages) { $current_page++; $current_result = executePartnerREST('marketplace.product.list', array( 'filter' => array('partnerDiscount' => '1', 'isAdaptive' => 1, 'categoryId' => 14, 'isComposite' => 1), 'navigation' => array('page' => $current_page) )); $items = array_merge($items, $current_result['result']['list'] }
Сведём все результаты в один массив. Если выборка очень большая, то принимайте во внимание факторы доступной памяти и таймаута выполнения скрипта на хите.
Далее в цикле формируется вывод витрины в той верстке, которая нужна (полный текст примера можно загрузить отсюда):
function displayApplication ($item) { ?> <div class= "col-sm-4 col-md-2 col-lg-2"> <div class= "thumbnail" st yle= " min-height: 310px; max-height: 310px"> <img src= " <?=$item['screenshots'][0]?> " alt= " <?=$item['name']?> " st yle= " max-width: 150px; max-height: 150px"> <div class= "caption"> <strong><?=substr($item['name'], 0, 25);?></strong>< /> <?if($item['priceRub'] != 0) echo $item['priceRub']." руб ."; else echo ' халява , сэр ' ?> </div> <?if($item['priceRub'] != 0):?> <div class= "alert alert-info"><a href= "#" class= "btn btn-primary" role= "button">Срочно купить!</a></div> <?endif;?> </div> </div> <? }
На практике рекомендуется заливать данные в торговый каталог и дальше использовать стандартные возможности "1С-Битрикс: Управление сайтом" по управлению каталогом, оформлению заказа и т.д. И не забывать про кэширование и композит в публичной части сайта.
Пример получения информации о текущих зарегистрированных обработчиках событий. В случае необходимости можно зарегистрировать обработчик события add.callback.add.coupon, который будет вызываться в случае добавления купона для решения Маркетплейс:
$result = executePartnerREST('get.callback.list', array()); echo ""; print_r($result); print_r($result['result']['list']); echo ""; if (count($result['result']['list']) == 0) { $result = executePartnerREST('add.callback.add.coupon', array('code' => 'petrov.test', 'url' => 'https://restapi.bx24.net/partner-api/add-coupon-handler.php')); echo ""; print_r($result); echo ""; }
Допустимо использование обработчиков на получение купонов или добавление клиентов только своих решений Маркетплейс.
Если в партнерском кабинете в разделе Маркетплейс 1С-Битрикс выписан купон на модуль (в примере это модуль с кодом 'petrov.test'
), то автоматически будет вызван обработчик по адресу 'https://restapi.bx24.net/partner-api/add-coupon-handler.php'.
add-coupon-handler Array ( [coupon] => MPX-AQTS7H5DSO-ХХХ [code] => petrov.test [isProlongation] => 0 [name] => Василий Пупкин [email] => хх@ххх.ru [partnerId] => 0 [orderId] => 0 [prolongationPeriod] => 0 [prolongationPeriodType] => [seller] => BITRIX [auth] => ххх )
В обработчике события можно среагировать на выписку купона (или на активацию, в зависимости от события). В частности, зарегистрировать купон и клиента в виде лида или сделки CRM. Если использовать для этой цели Битрикс24, то это лучше сделать при помощи вебхуков.