
Интеграция с Яндекс DBS и FBS
для OpenCart
Модули для OpenCart
- Автоматический старт/стоп объявлений Яндекс.Директ
- Интеграция с сервисом Яндекса "Покупка на Маркете"
- Экспорт магазина в Яндекс.Маркет
- Автоматическое отслеживание отправлений Почты России
- Трек-номер заказа и интеграция с сервисом LiveInform.ru
- Интеграция с сервисом рассылок Unisender
- Оплата через Казкоммерцбанк ePay (epay.kkb.kz)
- Интеграция с платежной системой MainPay (A1Lite)
- Накопительные скидки и дисконтные карты
- Хранение изображений магазина в облачном хранилище Cloudinary.com
Для Joomla + Virtuemart
Яндекс запустил партнерский API для моделей продаж DBS и FBS. Существует множество сервисов, которые приводят покупателей на сайт, отслеживают покупки покупателей, взимают комиссию. Однако, у Яндекс.Маркета все иначе. Товары участников "Покупки на маркете" можно будет заказать прямо на сайте Яндекс.Маркета. Яндекс всех загоняет в свой маркетплейс.
На сайте Яндекс.Маркета появилась корзина покупок и форма оформления заказа. Покупателю не обязательно переходить на сайт Интернет-магазина, а значит Интернет-магазину уже не обязательно иметь супердизайн. Достаточно экспортировать товары на Яндекс.Маркет, обеспечить интеграцию с "Покупкой на Маркете". Кроме того, возможность заказа на Яндекс.Маркете - это показатель доверия к магазину.
Раз Яндекс запустил сервис, значит надо делать модуль для интеграции Интернет-магазина с этим сервисом. Рады представить Вам модуль для Интернет-магазина на платформе OpenCart: Yandex CPA "Покупка на маркете".
Технические требования
Основные требования к Интернет-магазину выдвинуты Яндексом. Укажу то, что необходимо для работы модуля.
- Сайт должен быть доступен по протоколу https. Не надо, чтобы весь сайт работал по этому протоколу. Важно, чтобы была возможность доступа к скриптам модуля: https://shop-site.ru/yandexbuy/
- В каталоге товаров на маркете в качестве поля shop-sku (артикул магазина) должен выступать ID товара в OpenCart
- Основной валютой Интернет-магазина должны быть Российские рубли;
- Модуль покупки на Маркете поддерживает опции товаров, но только если вы формируете YML с товарными предложениями при помощи нашего модуля;
- В модуле реализован расчет стоимости доставки товара с использованием модулей доставки OpenCart, а можно задать и свою стоимость доставки;
- Модуль с открытым исходным кодом, и если у вас что-то особенное, то Вы сами можете реализовывать недостающии функции.
Установка и настройка модуля
Прежде чем устанавливать модуль, убедитесь, что ваш сайт работает по https-протоколу. Если этого нет, обратитесь к вашему хостеру. Хостер может потребовать от вас файлы SSL-сертификатов. Бесплатно можно сгенерировать самоподписанные сертификаты. Подробнее читайте здесь.
Сам процесс установки модуля требует некоторых навыков работы с файлами сайта (FTP-клиент).
- Распакуйте архив, содержимое папки uplod через FTP-клиент скопируйте поверх файлов вашего сайта.
- Зайдите на страницу и зарегистрируйте oAuth-приложение с правами Яндекс.Маркет - API Яндекс.Маркета для партнеров, Callback URL = https://адрес_вашего_сайта/yaorder/token.php. Зарегистрировав приложение, вы получите его ID и пароль.
- Откройте в текстовом редакторе файл yaorder/config.php, что вы только что закачали на ваш сайт и укажите там ID и пароль приложения.
- Зайдите в систему администрирования, на странице "Установка дополнений" загрузите OCMOD-файл из архива модуля (например yabuy_1.2-oc2.3.x.ocmod.xml для OpenCart 2.3).
- Перейдите в раздел "Дополнения - Модули", должен появиться модуль Яндекс CPA «Заказ на Маркете», нажмите кнопку "+" - "Установить".
- В корне сайт откройте файл .htaccess, сразу после директивы RewriteBase добавьте строки-правила:
RewriteRule ^yandexbuy/([^?]*)$ index.php?route=yandexbuy/$1 [L,QSA] RewriteRule ^yandexbuy2/([^?]*)$ index.php?route=yandexbuy2/$1 [L,QSA]
Если у вас нет файла .htaccess, то добавьте в корень сайта файл со следующим содержимым:RewriteEngine On RewriteBase / RewriteRule ^yandexbuy2/([^?]*)$ index.php?route=yandexbuy2/$1 [L,QSA]
RewriteRule ^yandexbuy/([^?]*)$ index.php?route=yandexbuy/$1 [L,QSA] Обратите внимание, что строка-правило следует сразу за RewriteBase, перед ней нет других правил. Если вы все правильно настроили, то у вас должен открываться URL: https://shop-site.ru/yandexbuy/cart с содержимым: 'Wrong or empty Yandex Authorization token'. Обратите внимание, что строка-правило должна быть первой среди подобных директив - сразу после 'RewriteBase /'. - Откройте партнерский интерфейс магазином на сайте Яндекс.Маркета. Перейдите в пункт меню 'Настройки' - 'Настройки API заказа':
Сформируйте авторизационный токен (2); укажите URL API - https://shop-site.ru/yandexbuy для FBS или https://shop-site.ru/yandexbuy2 для DBS (3); тип авторизации - URL (5), формат данных - JSON (6). SHA1 fingerprint - это слепок (хэш) вашего SSL-сертификата. Чтобы его узнать - зайдите на свой сайт через https, кликните правой кнопкой мыши, в контекстном меню выбирите "Информация о странице", в появившемся окошке перейдите во вкладку "Безопасность" и нажмите кнопку "Посмотреть сертификат". В новом окошке вы сможете увидеть свой SHA1 Fingerprint.
- Перейдите в систему администрирования Интернет-магазина. Меню 'Дополнения' - 'Модули' - 'Yandex CPA "Покупка на Маркете"':
ID магазина в Яндекс.Маркете (1) - это цифровой код вашего магазина он же номер кампании в Яндекс.Маркете (обратите внимание, что "11-" не входят в ID магазина) ; Яндекс-логин администратора магазина - это ваш логин на Яндексе; авторизационный токен - это тот токен, котороый вы сформировали в настройках API покупки (2). Получите и сохрание токен oAuth - он потребуется для уведомления Маркета об изменении заказов.
Непростой момент - стоимость и срок доставки, которую будет выдавать модуль покупателю. Яндекс различает 3 типа доставки: Курьерская, Почтовая, Самовывоз. Самовывоз задается точками продаж в партнерском Интерфейсе Маркета. Их же необходимо указать в настройках модуля. Идентификаторы пунктов самовывоза можно узнать в настройках Яндекс.Маркета: перейдите в пункт меню 'Настройки' - 'Точки продаж'.
Чтобы указать стоимость доставки для конкретного региона, нужно в поле "Яндекс-код региона" указывать коды согласно классификации Яндекса.
Я узнаю коды следующим образом: в партнерском интерфейсе на странице работы с тестовыми заказами указываю нужный город, актуализирую корзину. В логе запросов к API появляется запрос /cart с примерно следующим содержимым:{ "cart": { "currency": "RUR", "items": [ { "feedId": 1006651, "offerId": "533", "feedCategoryId": "9", "offerName": "Кофеварка рожковая Redmond RCM-1512", "subsidy": 0, "count": 1, "params": "Цвет товара: черный/серебристый", "fulfilmentShopId": 1086235, "sku": "100439579907" } ], "delivery": { "region": { "id": 213, "name": "Москва", "type": "CITY", "parent": { "id": 1, "name": "Москва и Московская область", "type": "SUBJECT_FEDERATION", "parent": { "id": 3, "name": "Центральный федеральный округ", "type": "COUNTRY_DISTRICT", "parent": { "id": 225, "name": "Россия", "type": "COUNTRY" } } } }, "address": { "country": "Россия", "postcode": "117519", "city": "Москва", "street": "Варшавское шоссе", "house": "1к1", "floor": "6", "lon": 37.994592, "lat": 55.775419 } } } }
Т.е. приходит цепочка регионов с их id: 213 - Москва, 1 - Москва и область, 3 - ЦФО, 255 - Россия. -
Теперь можно делать тестовые запросы от Яндекс.Маркета Интернет-магазину. В настройках Яндекс.Маркета перейдите в пункт меню
'Настройки' - 'Отладка API покупки'.
Товары и цены берутся из вашего YML-экспорта товаров в Яндекс.Маркет. Стоимость и способы доставки рассчитывается в зависимости от того, что вы указали в настройках модуля, с учетом адреса. Способы оплаты вы указали в настройках модуля. Не забудьте выбрать хотя бы один способ оплаты для каждого способа доставки. После нажатия на кнопку "Оформить заказ", Яндекс.Маркет отправляет магазину запрос /order/accept, и заказ создается в OpenCart. Но заказ пока невидим, он незавершен. Через некоторое время Яндекс отправляет запрос /order/status, и заказ появляется в OpenCart.
Если в процессы работы возникают ошибки - смотрите "Лог API", по нему можно понять, что не так. -
Если вы правильно установили vQmod, входящий в состав модуля, то на странице заказа, пришедшего с Маркета во вкладке "История" будет дополнительная форма для уведомления Яндекс.Маркета об изменении заказа.
С ее помощью можно поменять статус заказа на Яндекс.Маркете. Это необходимо делать, ведь если Яндекс не видит, что вы работаете с заказами, он понижает рейтинг вашего магазина. При помощи этой же формы вам нужно будет поменять статус заказов в рамках контрольного заказа Яндекс.Маркета.
Если у вас вебсервер Nginx, то эта директива не работает. Вам надо обратиться к хостёру, чтобы он помог настроить преобразование URL в Nginx. Вот така директива может сработать:
server { location / { try_files $uri @opencart; } location @opencart { rewrite ^/yandexbuy2/([^?]*)$ /index.php?route=yandexbuy2/$1 last; } }Если вы настроили все правильно, то при заходе на страницу https://shop-site.ru/yandexbuy2/cart вы должны увидеть "Wrong or empty Yandex Authorization token" и НЕ должно быть редиректа на страницу https://shop-site.ru/index.php?route=yandexbuy2/cart. Если редирект проиходит, значит не полностью сработал OCMOD, который должен внести изменения в файл seo_pro.php. В этом случае, внесите изменения вручную: после строки
function validate() {нужно добавить:
if (isset($this->request->get['route']) && substr($this->request->get['route'], 0, 9) == 'yandexbuy') { return; }
Как работать с настоящими заказами?
После того как взаимодействие Яндекс.Маркета и Интернет-магазина отлажено, можно проходить контрольный заказ. Яндекс создаст несколько тестовых заказов, у нескольких из них вам надо будет поменять статус.
В ответ на этап самопроверки "Отмена заказа по инициативе покупателя" никаких действий производить не требуется.
Весьма странный этап самопроверки "Отмена из-за отсутствия товаров на складе". Маркет делает тестовый заказ на 99999 товаров, модуль как и положено отвечает: 99999 нет, есть столько, сколько есть.
И эта его правильная работа модуля, по документации. Но именно самопроверка считает такой ответ ошибкой. Для прохождения самопроверки, одного этого шага, временно переименуйте файл /catalog/controller/yandexbuy/cart.php или
/catalog/controller/yandexbuy2/cart.php (если DBS) например в cart.php_ и пройдите этот шаг самопроверки. Как пройдете, верните файлу его прежнее имя.
Когда проверка пройдена, Яндекс подключает ваш магазин уже в "боевом" режиме.