Yandex market class php

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

PHP-библиотека партнерского API Яндекс.Маркета

License

totalcrm/yandex-market-php-sdk

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

PHP-библиотека партнерского API Яндекс.Маркета для моделей ADV и DBS

С помощью партнерского API Яндекс.Маркета для моделей DBS (Delivery by Seller, продажи с доставкой продавца) и ADV (Advertising, рекламная модель) внешние приложения могут получать сведения о своих магазинах и предложениях и управлять ими. Библиотека написана на языке PHP и содержит методы для работы с партнерским API.

  • PHP 5.6 или выше.
  • Зарегистрированный магазин на Яндекс.Маркете.
  • Зарегистрированное приложение с авторизационным токеном.

Подробнее см. раздел С чего начать в Wiki.

Лицензия и условия использования

Библиотека распространяется по лицензии MIT.

Использование партнерского API регулируется пользовательским соглашением.

Библиотека устанавливается с помощью пакетного менеджера Composer.

    Добавьте библиотеку в файл composer.json вашего проекта:

< "require": < "yandex-market/yandex-market-php-partner": "*" > >
require __DIR__ . '/vendor/autoload.php';

Выведем на экран список всех магазинов пользователя Яндекса, на которого зарегистрировано приложение:

// Указываем авторизационные данные $clientId = '9876543210fedcbaabcdef0123456789'; $token = '01234567-89ab-cdef-fedc-ba9876543210'; // Создаем экземпляр клиента с базовыми методами $baseClient = new \Yandex\Market\Partner\Clients\BaseClient($clientId, $token); // Магазины возвращаются постранично $pageNumber = 0; do < $pageNumber++; // Получаем страницу магазинов с номером pageNumber $campaignsObject = $baseClient->getCampaigns(['page' => $pageNumber,]); // Получаем итератор по магазинам на странице $campaignsPage = $campaignsObject->getCampaigns(); // Получаем количество магазинов на странице $campaignsCount = $campaignsPage->count(); // Получаем первый магазин $campaign = $campaignsPage->current(); // Печатаем идентификатор и URL магазина, затем переходим к следующему for ($i = 0; $i < $campaignsCount; $i++) < echo 'ID: ' . $campaign->getId(); echo 'Domain: ' . $campaign->getDomain(); $campaign = $campaignsPage->next(); > // Получаем информацию о страницах. Возвращаемое количество страниц может увеличиваться // по мере увеличения номера страницы. Последняя страница будет достигнута, // когда вернется количество страниц, равное номеру текущей страницы $campaignsTotalPages = $campaignsObject->getPager()->getPagesCount(); > while ($pageNumber != $campaignsTotalPages);

Подробнее см. Wiki и документацию партнерского API Маркета для моделей:

Читайте также:  Python os path file type

Источник

Экспорт товаров в Яндекс.Маркет в формате YML при помощи PHP-класса

Клиент попросил сделать выгрузку данных с его интернет-магазина в Яндекс.Маркет. В результате чего родился этот простой класс для создания YML-файла. Сразу замечу: класс не поддерживает выгрузку в форматах для книг, CD-дисков и т.п. Поддерживается только формат «vendor.model».

#################################################### # class for generation YML (yandex market language) #################################################### class yml < var $from_charset = 'windows-1251'; var $shop = array('name'=>'', 'company'=>'', 'url'=>''); var $currencies = []; var $categories = []; var $offers = []; # конструктор function yml($from_charset = 'windows-1251') < $this->from_charset = trim(strtolower($from_charset)); > # преобразование массива в тег function convert_array_to_tag($arr) < $s = ''; foreach($arr as $tag=>$val) < $s .= ''.$val.''; > $s .= "\r\n"; return $s; > # преобразование массива в атрибуты function convert_array_to_attr($arr, $tagname, $tagvalue = '') < $s = '$attrval) < $s .= $attrname . '="'.$attrval.'" '; >$s .= ($tagvalue!='') ? '>'.$tagvalue.'' : '/>'; $s .= "\r\n"; return $s; > # подготовка текстового поля в соответствии с требованиями Яндекса function prepare_field($s) < $from = array('"', '&', '>', '', 'from_charset!='windows-1251') $s = iconv($this->from_charset, 'windows-1251//IGNORE//TRANSLIT', $s); $s = preg_replace('#[\x00-\x08\x0B-\x0C\x0E-\x1F]+#is', ' ', $s); return trim($s); > # указать данные магазина # @name - название интернет-магазина # @company - официальное название компании # @url - адрес сайта function set_shop($name, $company, $url) < $this->shop['name'] = $this->prepare_field($name); $this->shop['name'] = substr($this->shop['name'], 0, 20); $this->shop['company'] = $this->prepare_field($company); $this->shop['url'] = $this->prepare_field($url); > # добавить валюту магазина # @id - код валюты (RUR, USD, EUR. ) # @rate - CBRF или свой курс # @plus учитывается только в случае rate = CBRF и означает насколько увеличить курс в процентах от ЦБ РФ function add_currency($id, $rate = 'CBRF', $plus = 0) < $rate = strtoupper($rate); $plus = str_replace(',', '.', $plus); if ($rate=='CBRF' && $plus>0) $this->currencies[] = array('id'=>$this->prepare_field(strtoupper($id)), 'rate'=>'CBRF', 'plus'=>(float)$plus); else < $rate = str_replace(',', '.', $rate); $this->currencies[] = array('id'=>$this->prepare_field(strtoupper($id)), 'rate'=>(float)$rate); > return true; > # добавление категории товаров # @id - id рубрики # @parent_id - id родительской рубрики, если нет, то -1 # @name - название рубрики function add_category($name, $id, $parent_id = -1) < if ((int)$id<1||trim($name)=='') return false; if ((int)$parent_id>0) $this->categories[] = array('id'=>(int)$id, 'parentId'=>(int)$parent_id, 'name'=>$this->prepare_field($name)); else $this->categories[] = array('id'=>(int)$id, 'name'=>$this->prepare_field($name)); return true; > # добавление позиции # @id - id товара # @available - товар доступен сейчас (true) или на заказ (false) # @data - массив остальных параметров (звездочкой помечены обязательные) # *url - URL-адрес страницы товара # *price - цена товара # *currencyId - идентификатор валюты товара (RUR, USD, UAH. )значением цены. # *categoryId - идентификатор категории товара (целое число не более 18 знаков). Товарное предложение может принадлежать только одной категории # picture - Ссылка на картинку соответствующего товарного предложения. Недопустимо давать ссылку на "заглушку", т.е. на картинку где написано "картинка отсутствует" или на логотип магазина # *delivery - элемент, обозначающий возможность доставить соответствующий товар. "false" данный товар не может быть доставлен("самовывоз"). "true" товар доставляется на условиях, которые указываются в партнерском интерфейсе http://partner.market.yandex.ru на странице "редактирование". # *name - наименование товарного предложения # vendor - производитель # vendorCode - Код товара (указывается код производителя) # *description - Описание товарного предложения # country_of_origin - Элемент предназначен для указания страны производства товара. # downloadable - Элемент предназначен обозначения товара, который можно скачать. function add_offer($id, $data, $available = true) < $allowed = array('url', 'price', 'currencyId', 'categoryId', 'picture', 'delivery', 'name', 'vendor', 'vendorCode', 'description', 'sales_notes', 'country_of_origin', 'downloadable'); foreach($data as $k=>$v) < if (!in_array($k, $allowed)) unset($data[$k]); $data[$k] = strip_tags($this->prepare_field($v)); > $tmp = $data; $data = []; foreach($allowed as $key) < if (isset($tmp[$key])) $data[$key] = $tmp[$key]; # Порядок важен для Я.Маркета. >$this->offers[] = array('id'=>(int)$id, 'data'=>$data, 'available'=>($available)?'true':'false'); > # шапка документа function get_xml_header() < return ''; > # тело документа function get_xml_shop() < $s = '' . "\r\n"; # shop info $s .= $this->convert_array_to_tag($this->shop); # currencies $s .= '' . "\r\n"; foreach($this->currencies as $currency) < $s .= $this->convert_array_to_attr($currency, 'currency'); > $s .= '' . "\r\n"; # categories $s .= '' . "\r\n"; foreach($this->categories as $category) < $category_name = $category['name']; unset($category['name']); $s .= $this->convert_array_to_attr($category, 'category', $category_name); > $s .= '' . "\r\n"; # offers $s .= '' . "\r\n"; foreach($this->offers as $offer) < $data = $offer['data']; unset($offer['data']); $s .= $this->convert_array_to_attr($offer, 'offer', $this->convert_array_to_tag($data)); > $s .= '' . "\r\n"; $s .= ''; return $s; > # футер документа function get_xml_footer() < return ''; > # получить весь XML код function get_xml() < $xml = $this->get_xml_header(); $xml .= $this->get_xml_shop(); $xml .= $this->get_xml_footer(); return $xml; > >

Источник

PHP SDK

Внимание. Маркет постепенно перестает поддерживать XML. Поэтому мы рекомендуем переходить на JSON. Сейчас XML можно использовать, если добавить в запрос Content-Type: application/xml . Без этого будут ошибки.

Требования

Зарегистрированное приложение с авторизационным токеном. Токен можно получить вручную или с помощью библиотеки для работы с OAuth yandex-market-php-oauth.

Установка

Библиотека устанавливается с помощью пакетного менеджера Composer.

require __DIR__ . '/vendor/autoload.php'; >\">

Пример использования

Выведем на экран список всех магазинов пользователя Яндекса, на которого зарегистрировано приложение:

// Указываем авторизационные данные\n$clientId = '9876543210fedcbaabcdef0123456789'\n$token = '01234567-89ab-cdef-fedc-ba9876543210';\n\n// Создаем экземпляр клиента с базовыми методами\n$baseClient = new \\Yandex\\Market\\Partner\\Clients\\BaseClient($clientId, $token);\n\n// Магазины возвращаются постранично\n$pageNumber = 0;\ndo \n \n // Получаем информацию о страницах. Возвращаемое количество страниц может \n // увеличиваться по мере увеличения номера страницы. Последняя страница будет \n // достигнута, когда вернется количество страниц, равное номеру текущей страницы \n $campaignsTotalPages = $campaignsObject->getPager()->getPagesCount();\n> while ($pageNumber != $campaignsTotalPages);

PHP SDK

Внимание. Маркет постепенно перестает поддерживать XML. Поэтому мы рекомендуем переходить на JSON. Сейчас XML можно использовать, если добавить в запрос Content-Type: application/xml . Без этого будут ошибки.

Требования

Зарегистрированное приложение с авторизационным токеном. Токен можно получить вручную или с помощью библиотеки для работы с OAuth yandex-market-php-oauth.

Установка

Библиотека устанавливается с помощью пакетного менеджера Composer.

require __DIR__ . '/vendor/autoload.php'; 
>">
Скопировано

Пример использования

Выведем на экран список всех магазинов пользователя Яндекса, на которого зарегистрировано приложение:

// Указываем авторизационные данные $clientId = '9876543210fedcbaabcdef0123456789' $token = '01234567-89ab-cdef-fedc-ba9876543210'; // Создаем экземпляр клиента с базовыми методами $baseClient = new \Yandex\Market\Partner\Clients\BaseClient($clientId, $token); // Магазины возвращаются постранично $pageNumber = 0; do < $pageNumber++; // Получаем страницу магазинов с номером pageNumber $campaignsObject = $baseClient->getCampaigns(['page' => $pageNumber,]); // Получаем итератор по магазинам на странице $campaignsPage = $campaignsObject->getCampaigns(); // Получаем количество магазинов на странице $campaignsCount = $campaignsPage->count(); // Получаем первый магазин $campaign = $campaignsPage->current(); // Печатаем идентификатор и URL магазина, затем переходим к следующему for ($i = 0; $i < $campaignsCount; $i++) < echo 'ID: ' . $campaign->getId(); echo 'Domain: ' . $campaign->getDomain(); $campaign = $campaignsPage->next(); > // Получаем информацию о страницах. Возвращаемое количество страниц может // увеличиваться по мере увеличения номера страницы. Последняя страница будет // достигнута, когда вернется количество страниц, равное номеру текущей страницы $campaignsTotalPages = $campaignsObject->getPager()->getPagesCount(); > while ($pageNumber != $campaignsTotalPages);

Источник

Оцените статью