Дата последнего изменения: 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, то это лучше сделать при помощи вебхуков.