Сдэк Фулфилмент: интеграция с RetailCRM

Изменено Fri, 27 Jan 2023 на 04:32 PM

Для интеграции Сдэк Фулфилмент и RetailCRM потребуется следующее:

  • RetailCRM с настроенным модулем интеграции СДЭК
  • Хостинг с поддержкой языка PHP
  • Доступ к личному кабинету Сдэк Фулфилмент


Описание работы интеграции

  • Срабатывает триггер с определенным условием (подробнее про настройку триггера написано ниже)
  • Триггер отправляет запрос к модулю, тот создаёт заказ в ЛК Фулфилмент
  • Заказ в RetailCRM переходит в другой статус (в зависимости от результаты работы модуля). Про настройку статусов написано ниже



Настройка товаров


Для сопоставления товаров используется поле Артикул. Убедитесь, что артикулы в системах совпадают.


Создание наборов

Если вы одной карточкой продаёте целый набор товаров (например, набор из 2 журналов), то набору следует задать артикул "набор 123,456", где 123 и 456 - артикулы товаров, входящих в набор (их может быть больше двух, сколько угодно через запятую). Набор будет автоматически разбит на отдельные товары и в ФФ в заказе будут находиться все товары, входящие в набор.



Настройка модуля интеграции

Перенесите на ваш хостинг файлы интеграции, доступные по ссылке (для скачивания нажмите на зелёную кнопку Code, затем Download ZIP). Подробнее о настройке хостинга можно прочитать в этой статье


Откройте файл order.php. В третьей строке вместо значения e804b0dadc8981c107cc70502891327a напишите любой длинный код и запомните его. Сгенерировать код можно здесь.


Откройте файл base.php. Заполните в нём следующие строки (значения нужно писать внутри кавычек):


Строка 2: retail_api_key - ключ API RetailCRM с правами получения и редактирования заказов. Найти и создать можно в RetailCRM в разделе Настройки > Интеграция > Ключи доступа к API


Строки 3 и 4: cdek_key_1 и cdek_key_2 - ключи СДЭК (найти можно в ЛК СДЭК в разделе "Интеграция")


Строки 5 и 6: oa_login - логин от ЛК ФФ, oa_password - пароль от ЛК ФФ. Если у вас есть ключи API от ЛК ФФ, можно использовать их вместо логина и пароля
Так же смотрите: Получение логина и пароля от ЛК ФФ


Строка 7: oa_shop - id магазина ФФ (ЛК > Настройки > Виртуальные магазины) (нужно заменить 0 на ваш номер)


Строки 8-10: oa_warehouses - соответствия склада RetailCRM и склада и отправителя из ЛК ФФ. Можно добавлять столько строк, сколько у вас складов. Перед стрелкой указывается символьный код склада в кавычках. После стрелки до запятой указывается id склада, после запятой id отправителя (уже без кавычек).

Схема заполнения:


Строка 12: retail_base - нужно изменить, если у вас кастомный поддомен офиса RetailCRM

Строка 15: status_success - символьный код статуса в RetailCRM, в который перейдёт заказ после создания в ФФ. Статусы, группы и переходы можно найти в Настройки > Статусы


Строка 16: status_failed - символьный код статуса в RetailCRM, в который перейдёт заказ после ошибки создания в ФФ (в комментарии к статусу будет указана причина ошибки)


Строка 17: tracking_number_field - символьный код пользовательского поля, в котором появится трек-номер после отправки заказа (при настроенной синхронизации статусов)


Строки 18 - 28: statuses - соответствие статусов в ФФ и статусов RetailCRM (если используется периодическая синхронизация статусов). Слева в кавычках находится статус из ФФ, справа - соответствующий ему тариф в RetailCRM. Список статусов ФФ можно найти в этой статье. Более подробную информацию по заполнению аналогичной структуры данных можно найти в этой статье в разделе "Настройка модуля интеграции" -> "Строки 16-19"


Пример заполненного файла base.php (до function send_request):

<?php
$retail_api_key = '1234';
$cdek_key1 = '5678';
$cdek_key2 = '9012';
$oa_login = 'test@ff.cdek.ru';
$oa_password = 'myfulfilmentpassword';
$oa_shop = 93212;
$oa_warehouses = [
    'sklad-1' => [5432, 20321],
];

$retail_base = 'https://retail.retailcrm.ru/api/v5/';
$cdek_base = 'https://api.cdek.ru/v2/';
$oa_base = 'https://cdek.orderadmin.ru/api/';
$status_success = 'ff-created';
$status_failed = 'ff-not-created';
$tracking_number_field = 'ff_tracking_number';
$statuses = [
    'pending_error' => 'delyvery-did-not-suit',
    'pending' => 'no-product',
    'partly_reserved' => 'no-product',
    'assembling' => 'assembling',
    'assembled' => 'assembling-complete',
    'delivery' => 'send-to-delivery',
    'processing' => 'delivering',
    'complete' => 'complete',
    'cancel' => 'cancel-other'
];




Настройка периодической синхронизации статусов заказов и получения трек-номеров отправленных заказов

В данной инструкции описывается хостинг reg.ru и панель управления хостингом ISP Manager. Если вы пользуетесь услугами другой компании или ваш хостер использует другую панель управление - обратитесь к документации на сайте вашего хостинг-провайдера.


В панели управления откройте "Планировщик CRON". Создайте новое задание.


В поле "Команда" укажите: /opt/php/7.4/bin/php www/*путь к скрипту check_statuses.php*. Например - /opt/php/7.4/bin/php www/example.com/check_statuses.php


Настройте расписание. Вполне оптимально указать тип "Базовый" и установить ежечасное выполнение задачи.


Настройка триггеров в RetailCRM

В RetailCRM в разделе Настройки > Триггеры создайте триггер, который будет отправлять запрос на создание заказа в ФФ. Событие и условие настраивается в соответствии с вашими нуждами, пример на скриншоте ниже


Установите действие триггера - HTTP-запрос типа POST на адрес, по которому будет доступен загруженный на хостинг скрипт order.php. Передавать параметры - в теле запроса.

Поля:

  • code со значением, которое вы записали (строка 2 файла order.php)
  • action со значением create
  • orderId со значением {{ order.id }}

Пример настроенного действия:

Также вы можете настроить другой триггер, у которого аналогично настраивается действие, только у параметра action значение cancel. При срабатывании этого триггера будет отменяться заказ в ФФ


Статья помогла?

Отлично!

Спасибо за ваш отзыв

Извините, что не удалось помочь!

Спасибо за ваш отзыв

Расскажите, как мы можем улучшить эту статью!

Выберите хотя бы одну причину
Требуется проверка CAPTCHA.

Комментарий отправлен

Мы ценим вашу помощь и постараемся исправить статью