Как настроить сервис «Покупка на Маркете» и интернет-магазин на 1С-Битрикс

Дмитрий Рубцов

Технический консультант

Как настроить сервис «Покупка на Маркете» и интернет-магазин на 1С-Битрикс

Несмотря на наличие модуля и подробного описания от 1С-Битрикс, остаются подводные камни о которых стоит знать, перед тем как начать интеграцию.

Вначале нужно включить тестовый режим на Маркете, это делается в разделе Настройки, Параметры размещения, пункт «Подключение к программе «Покупка на Маркете».

Содержание

  1. О сервисе
  2. Настройки сайта и Маркета
  3. Проведение тестирования через интерфейс Маркета
  4. Особенности настройки
  5. Источники

О сервисе «Покупка на Маркете»

Сервис Яндекс.Маркет помимо оплаты за переходы, предложил модель оплаты за клики — «Покупка на Маркете». Для того чтобы подключиться к новой системе (возможна работа двумя способами сразу), нужно произвести ряд настроек как на стороне сервиса, так и на стороне сайта. Для облегчения этой задачи, Яндекс договорился с разработчиками популярных ЦМС об интеграции необходимого модуля в «коробку». На данный момент есть решения для 1C-Битрикс, UMI-CMS и InSales.

Настройки

Настройки на стороне Маркета выполняются в меню НастройкиНастройки API покупки. Тут сложности могут возникнуть с полем «SHA1 fingerprint». Обязательное требование сервиса — наличие у сайта ssl-сертификата. Сертификаты могут быть двух видов: подписанный центом сертификации и самоподписанный. Получение сертификата первого типа — отдельная песня, сделать это бывает сложно и долго даже при участии посредников (хостинга, например). В общем случае вам нужно подать заявку на сертификат, оплатить его, подтвердить принадлежность домена компании, получить сертификат и установить его. В случае же самоподписанного сертификата, нужно только сгенерировать и установить его на сервер. Какой тип выбрать, зависит от возможностей, предоставляемых хостингом — не везде дадут сделать самоподписанный. С точки зрения Маркета разница только в настройках — если сертификат от центра сертификации, то поле можно оставить пустым, если же он самодельный, то нужно изготовить слепок, процедура получения которого описана в руководстве Яндекса.

Поле «Авторизационный токен» позволяет сгенерировать строку, которую нужно разместить в соответствующее поле в настройках сайта.

Типа авторизации должен обязательно совпадать с типом, указанным на сайте.

Настройки на стороне сайта находятся в разделе МагазинНастройкиПокупки на Маркете. К каждому полю дано подробное описание, сложностей возникнуть не должно. Стоит отметить что если в блоке «Службы доставки» используется самовывоз, то обязательно должны быть указаны коды пунктов выдачи. Получить их можно только на странице редактирования пункта выдачи на Маркете, скопировав из браузера. Перейти в этот раздел можно по цепочке НастройкиТочки продажнужный пункт.

После того как начальные настройки заданы, можно подумать какие товары размещать по новой системе. Номенклатура Покупки может быть либо равна тому что размещается по старой схеме, либо быть уже. Это значит, что не получится разместить товар которого нет в обычном Маркете, только тот что участвует в оплате за клики.

По умолчанию, все товары из файла участвуют в программе, для того чтобы исключить какой-либо файл (если их несколько), либо предложение, нужно отредактировать файл, предоставляемый Маркету. Размещением управляет тег <cpa> — он может быть как в элементе <offer>, так и <shop>. Если тег присутствует в обоих блоках, то приоритет отдаётся тому что в <offer>. Подробнее о приоритетах можно прочесть в документации Яндекса.

Тестирование функционала

Для проверки работоспособности есть специальный раздел в партнёрском интерфейсе (НастройкиОтладка API покупки, вкладка «Новый заказ»). С его помощью можно протестировать передачу информации на сайт и обратно. На вкладке «Лог API» можно проследить все запросы, сделанные сервисом к сайту и их результаты. Причём отображается детальная информация о том, что происходит.

В случае если вы решите тестировать на функционал на копии сайта (на отдельном домене), то использовать функционал Отладки не получится — даже на тестовой версии Яндексу нужен ssl. Выходом становится создание имитации запросов от сервиса к сайту.

Для этого был сделан скрипт, суть которого в подстановке необходимых параметров, отправке их на сервер и отображении ответа. С помощью него вы сможете настроить работу по получению информации о заказах ещё до того, как подключитесь к сервису (получите ssl-сертификат для сайта).

Разберём что есть в скрипте и что он может

Интерфейс состоит из следующих полей:

  • Токен для запросов
    Код который должен совпадать в настройках магазина на Яндексе и в настройках сайта (/bitrix/admin/sale_ymarket.php?lang=ru параметр «Токен для запросов Яндекса к магазину»). В данном примере он установлен в 1234567890000000, но вы можете использовать любой другой.
  • ID товара
    Код товара который попадёт в тестовый заказ. В данном скрипте, в заказе может быть только один товар, на практике их может быть любое число. Вводить нужно обязательно существующий код, т.к. после увода фокуса из поля, скрипт подгрузит поля «Название товара» и «Цена товара»
  • Название товара
    Подгружается после ввода кода товара
  • Цена товара
    Подгружается после ввода кода товара
  • Количество товара
    Можно указать любое число

Блок информации по заказу. Так как запросы accept и status требуют дополнительных параметров, их нужно указать в соответствующих полях.

  • Xml-код заказа
    При создании заказа на Яндексе, заказу присваивается код, который не совпадает с кодом на сайте. В этом поле можно указать любое число. Если вы указываете ранее указанное число, то это означает что идёт работа с уже созданным заказом (для запроса status). После увода фокуса из поля, скрипт проверит что это за код и если такой заказ уже был, подставит данные в нижние поля.
  • Дата заказа
    Для уже созданного заказа, подгружается по xml-коду заказа
  • Сумма товаров в заказе
    Для уже созданного заказа, подгружается по xml-коду заказа
  • Общая сумма заказа
    Для уже созданного заказа, подгружается по xml-коду заказа
  • Ссылки подстановки кода
    Описание ниже
  • Кнопка отправки запроса
    Отправляет запрос на сайт
  • Поле с текстом запроса
    В поле отображается запрос, сгенерированный ссылками для подстановки кода
  • Поле с ответом запроса
    В поле отображается ответ сайта на запрос

Ссылки подстановки кода

Их всего три. Первая — «Подставить код на корзину» — позволяет протестировать механизм запроса актуальных данных о товаре, доставке и способах оплаты.

Ссылки подстановки кода. Сервис «Покупка на Маркете»

Вторая — «Подставить код Accept» — позволяет сформировать заказ на сайте. Для этого нам нужно указать данные из первого блока и дополнительно указать xml-код заказа (произвольное, уникальное число). После чего нажать на «Подставить код Accept».

Пример реализации. Сервис «Покупка на Маркете»

После этих приготовлений можно отправлять запрос на сайт через кнопку «Отправить запрос на сайт». В случае успеха сервер укажет код созданного заказа, а так же подставит нужные данные для следующего запроса (status).

Пример реализации. Сервис «Покупка на Маркете»

Если после этого перейти в админку сайта, то мы увидим, что появился заказ № 10 с данными указанными в запросе.

Появился заказ № 10 с данными указанными в запросе. Сервис «Покупка на Маркете»

Тут важно то на этом этапе Маркет не отдаёт нам информацию о покупателе, т.е. у нас нет его имени, телефона и точного адреса. Такой запрос отправляется пока пользователь не подтвердил заказ на Маркете. Сайт в этот момент резервирует товары, но если в течение десяти минут не будет подтверждения (следующего запроса, status), то заказ автоматически расформируется.

Третья ссылка — «Подставить код Status» — подтверждает заказ, с этого момента его можно обрабатывать. Экран скрипта тестирования почти ничем не отличается от экрана после запроса accept. Мы передаём данные о созданном заказе, только их стало больше.

Экран скрипта тестирования почти ничем не отличается от экрана после запроса accept. Сервис «Покупка на Маркете»

В ответ мы получаем пустой массив, что означает что данные обновились. Теперь просмотрев заказ мы увидим все данные которых не было изначально.

Теперь просмотрев заказ мы увидим все данные которых не было изначально. Сервис «Покупка на Маркете»

Таким образом мы получаем простую систему отладки узких мест, без необходимости производить все операции на живом сайте. Стоит отметить что тестирование проводилось на свежеразвёрнутом битриксе, соответственно, все свойства называются так как это предполагается в модуле взаимодействия с Покупкой. Если в вашем случае это не так, сайт уже рабочий, то нужно учитывать следующее.

Особенности настройки

С первого взгляда кажется, что всё готово, и настройка не отнимет много времени, но часто это бывает не так. При интеграции нужно учитывать специфику реализации модуля в 1С-Битрикс, который не всегда работает так как этого ожидаешь. Вот моменты которые могут вызвать сложности.

При получении списка доставок, не учитывается сумма заказа. Т.е. выбираются все возможные способы, фильтр доставок выглядит следующим образом:

array(
    "ID" => $deliveryId,
    "LID" => $this->siteId,
    "ACTIVE" => "Y",
    "LOCATION" => $locationId
);

Для того чтобы данные пришедшие с Покупки были верно разложены по свойствам, они должны иметь строго определённые коды, а именно: контактное лицо — FIO, телефон — PHONE, индекс — ZIP, город (альтернативный, ручной ввод) — CITY, город — LOCATION, адрес без города — ADDRESS. Заказы создаются на анонимного пользователя, который будет автоматически создан при первом заказе, возможности указать конкретного пользователя нет.

Если выбран пункт выдачи при покупке на Яндексе, то он не пробросится в специальное поле заказа.

В Покупке есть чётко описанные правила смены статуса заказа, у системы свой взгляд на этот счёт — статус DELIVERY устанавливается, когда заказу присваивается статус F (доставлен), либо P (отказ). Т.е. промежуточных вариантов нет. Сразу же после этого выставляется DELIVERED (заказ доставлен). Напомню, что комиссию Яндекс списывает при выставлении статуса DELIVERY, возврата средств не предусмотрено ни по каким причинам. Блокируются деньги на счёту ещё раньше, при выставлении статуса PROCESSING.

Весь код отвечающий за логику работы можно найти в файле /bitrix/modules/sale/general/ym_handler.php.

Итог

Модуль работает; в обновлениях 1С-Битрикс исправили ошибки, которые были в первой редакции. Но по-прежнему остаётся много узких мест, где нет никаких настроек и возможностей изменения базового поведения.

Источники

  1. help.yandex.ru/partnermarket/purchase/faq.xml
  2. dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=42&LESSON_ID=5802
  3. api.yandex.ru/market/partner/doc/dg/concepts/ssl-certificate.xml
  4. help.yandex.ru/partnermarket/cpa.xml

Комментарии

Тут без вас никак. Поделитесь с нами вашими мыслями

  • Покупки не работают с автоматизированными службами доставки из Битрикс. Поэтому расчет стомости доставки для покупателя на Маркете будет невозможным. Тут нужно выбрать, или Маркет с настраиваемыми доставками, никакой автоматизации, либо отказ от Маркета, зато все автоматически.
  • Как-нибудь удалось решить этот вопрос? Почему то нигде ни слова об этом.
  • По прежнему не работают :(
Горячие вакансии