Как получить токен алиэкспресс
Перейти к содержимому

Как получить токен алиэкспресс

  • автор:

Интеграция с AliExpress

Для тех, кому важно постоянно быть на связи с покупателями на всех платформах, мы разработали интеграцию с AliExpress. Она позволит вам мгновенно отвечать на вопросы о товаре с aliexpress.ru в приложении Jivo.

Для того, чтобы подключить интеграцию, необходимо быть зарегистрированным продавцом на AliExpress и получить API-токен на сайте платформы.

Перейдите на страницу API-токенов и нажмите на кнопку Создать токен.

Созданный токен моментально появится в этом же окне во вкладке «Активные». Нажмите на него, чтобы скопировать.

Этот токен понадобится вам для подключения интеграции на следующим этапе.

Далее необходимо добавить новый канал в приложении Jivo: раздел Управление -> Каналы связи -> Добавить канал -> найдите AliExpress в списке и нажмите на кнопку Добавить.

На открывшемся баннере нажмите на кнопку Продолжить.

После этого введите имя канала и вставьте полученный ранее API-токен в поле Токен и нажмите на Подключить.

Теперь вы можете вернуться в список каналов в Jivo, чтобы назначить нужных операторов на канал.

Вы великолепны! Теперь вы можете общаться в Jivo с покупателями из AliExpress!

Настройка интеграции с AliExpress

В данной инструкции рассмотрим настройку интеграции между AdvantShop и Aliexpress (Али).

  • Регистрация на Aliexpress
  • Основные настройки
  • Каталог товаров
  • Характеристики
  • Цены и остатки
  • Заказы
  • Логи ошибок запросов

Интеграция позволит вам выгружать каталог в Aliexpress из интернет-магазина, получать и обрабатывать заказы в интернет-магазине из Aliexpress.

Внимание!

Модуль Aliexpress Pro может быть установлен только в магазине версии 12.0 и выше. Если Ваш магазин версии ниже, пожалуйста, обновите магазин до актуальной версии до начала работы с модулем.

Внимание!

Для правильной работы интеграции нужен SSL-сертификат.

Если Вы используйте облако и у Вас уже есть зарегистрированный сертификат либо планируете регистрировать самостоятельно, то для установки SSL воспользуйтесь инструкцией «Подключение SSL сертификата»

Если Вы используете лицензированную версию на хостинге с выделенным сервером и у Вас уже есть зарегистрированный сертификат, посмотрите инструкцию «Установка SSL сертификата на Microsoft IIS 7.x» либо воспользуйтесь услугой установки SSL: «Установка SSL сертификата»

Если необходима регистрация и установка нашими силами, воспользуйтесь услугами установки SSL под ключ: «Услуга регистрации SSL под ключ 1 год» или «Услуга регистрации SSL под ключ 2 года»

Если Вы используете лицензированную версию на shared хостинг, по данному вопросу обратитесь в поддержку Вашего хостинга, также обратите внимание, что в данном случае услуга установки силами специалистов advantshop не доступна.

Регистрация на Aliexpress

Перед началом работы с Aliexpress регистрируемся на сайте business.aliexpress.ru (рис.1).

Настройка интеграции с AliExpress - 2372

Рисунок 1.

Вводим электронную почту, пароль, принимаем пользовательское соглашение, нажимаем «Продолжить» (рис.2).

Настройка интеграции с AliExpress - 1215

Рисунок 2.

На почту направляется письмо с кодом подтверждения, вводим в форму, нажимаем «Отправить» (рис.3).

Настройка интеграции с AliExpress - 7841

Рисунок 3.

Указываем тип организации (из выпадающего списка), ИНН, телефон, нажимаем «Создать магазин» (рис.4).

Настройка интеграции с AliExpress - 1105

Рисунок 4.

Далее проходите по пунктам:

  • Добавление юридической информации;
  • Подписание договора;
  • Добавление адреса для возврата товаров;
  • Вопросы по магазину.

Подробнее по регистрации магазина ознакомьтесь по ссылке.

Основные настройки

Для интеграции магазина с Aliexpress устанавливаем модуль в разделе «Модули» — «Магазин модулей» (рис.5).

Настройка интеграции с AliExpress - 8442

Рисунок 5.

После установки активируем модуль, заполняем вкладку «Настройки» (рис.6).

Настройка интеграции с AliExpress - 2296

Рисунок 6.

API-токен локального API — в консоли AliExpress перейдите на страницу API-токенов. Нажмите «Создать токен». Система создаст токен, который появится на странице, скопируйте его и разместите в модуле (рис.6, п.3).

Выгружать в качестве артикула товара — возможно два варианта: артикул товара и идентификатор товара (внутренний код), рекомендуем выбирать «Артикул товара» (рис.6, п.4).

Выгружать в качестве артикула модификации — возможно два варианта: артикул модификации и идентификатор модификации (внутренний код), рекомендуем выбирать «Артикул модификации» (рис.6, п.5).

Очищать логи ошибок запросов — если при загрузке заказов, обновлении цен или остатков, выгрузке товаров возникнут какие-то ошибки, то во вкладке «Логи ошибок запросов » будет сформирован текстовый файл с расшифровкой ошибки. Настройка очистки логов позволяет задать оптимальное время хранения файлов. По умолчанию файл хранится неделю.

Каталог товаров

Для формирования каталога товаров в модуле необходимо перейти на вкладку «Каталог товаров» и загрузить дерево категорий (рис.7).

Настройка интеграции с AliExpress - 6560

Рисунок 7.

Существует два варианта загрузки дерева каталога:

Загрузить список корневых категорий — загружаются только главные категории, подкатегории подгружаются дополнительным кликом на иконку загрузки возле категории (рис.8 п.1). Рекомендуем использовать этот способ загрузки, так как он проходит быстрее.

Загрузить полное дерево категорий — загружаются все категории и подкатегории, занимает длительное время.

После импорта слева появятся категории из Aliexpress (рис.8).

Настройка интеграции с AliExpress - 6172

Рисунок 8.

В соответствии с данным деревом категорий нужно будет разместить Ваши товары, т.е. в отличие от других сервисов Вы не категорию загружаете на Aliexpress, а товары заранее связываете с категориями из Aliexpress.

Товары можно добавлять только в категории нижнего уровня. Для этого обязательно выберите последнюю категорию во вложенности (рис.9).

Настройка интеграции с AliExpress - 9170

Рисунок 9.

Далее нажимаем «Добавить товары» (рис.10)

Настройка интеграции с AliExpress - 3399

Рисунок 10.

Откроется окно, где выбираете товары из интернет-магазина, которые должны быть связаны с категорией из Aliexpress. Нажимаете нужную категорию, товары из которой хотите связать с категорией Aliexpress, отмечаете нужные товары. Далее «Выбрать» (рис.11).

Настройка интеграции с AliExpress - 5020

Рисунок 11.

Товары добавятся (рис.12), отображается индикатор готовности выгрузки товара в Aliexpress (1), при клике на знак «?» Вы можете уточнить, что нужно добавить для товара, чтобы он был готов к выгрузке.

Настройка интеграции с AliExpress - 2942

Рисунок 12.

Подробная информация о статусах готовности выгрузки товара можно посмотреть на вкладке «Легенда» (рис.13).

Настройка интеграции с AliExpress - 7901

Рисунок 13.

Дополнительно нужно заполнить вкладку «Настройки» (рис.14).

Настройка интеграции с AliExpress - 2033

Рисунок 14.

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

Шаблон доставки товара — список шаблонов нужно скопировать URL шаблона доставки на стороне Aliexpress. Настраивается в разделе «Магазин» — «Шаблоны доставки»(прямая ссылка на раздел). После создания шаблона в URL-адресе необходимо скопировать ID шаблона доставки(рис 14.1) и добавить на стороне магазина.

Настройка интеграции с AliExpress - 2033

Рисунок 14.1.

Выгружать ссылки на фото без SSL — устанавливается при ошибке проверки сертификата SSL на стороне AliExpress при выгрузке фото

Заметка

Если на стороне Aliexpress товары были ранее загружены, то после загрузки дерева каталога нужно выполнить синхронизацию с каталогом на стороне Aliexpress (рис.7).

Внимание!

При выгрузке полного каталога товаров на Aliexpress выгружается вся информация о товаре, в том числе цена товара (без наценки) и остатки. Наценка на товар выгружается при обновлении цены по расписанию или при ручном запуске выгрузки цены по кнопке «Обновить цены» во вкладке «Цены и остатки» (рис.21).

На этом настройки на вкладке «Каталог товаров» рассмотрены.

Характеристики

При работе с Aliexpress значительную часть работы составляет также работа с характеристиками. Сложность заключается в том, что нужно связать характеристики товара из интернет-магазина с характеристиками из Aliexpress.

Для этого в модуле Aliexpress необходимо переключиться на вкладку «Характеристики».

Слева нужно найти категорию, с которой работали ранее, и нажать на “Загрузить характеристики товаров” (рис.15).

Настройка интеграции с AliExpress - 6785

Рисунок 15.

Загрузятся характеристики из Aliexpress (рис.16). Обязательные характеристики для текущей категории выводятся первыми и выделены жирным шрифтом (рис.16 п.1). Их необходимо привязать к соответствующим свойствам магазина (рис.16 п.2).

Настройка интеграции с AliExpress - 3026

Рисунок 16.

Привязка осуществляется следующим образом (рис.17).

Настройка интеграции с AliExpress - 8091

Рисунок 17.

Свойство — необходимо выбрать свойство товара из справочника свойств, которое будет связано с характеристикой Aliexpress.

Заметка

Если Вы столкнулись с необходимостью массово заполнить свойства у товаров для связки с характеристиками Aliexpress, то сделать это массово можно через экспорт/импорт в формате CSV.

Необязательные характеристики также привязываются к свойствам, если планируется их выгрузка.

Часть характеристик Aliexpress требует передачи значения входящего в их внутренний справочник значений характеристики. Для них предусмотрена загрузка списка значений из Aliexpress (рис.18 п.1), посмотреть список справочника можно по меню (рис.18 п.2).

Настройка интеграции с AliExpress - 4018

Рисунок 18.

При нажатии на кнопку «Загрузить значения» из Aliexpress подгрузятся значения свойств со своими ID, сопоставление со значениями свойств, которые Вы указывали у товаров, будет осуществляться по их названию.

Важно

Может возникнуть ситуация, когда в процессе привязки характеристик к категориям для разных категорий будет подгружаться одна характеристика, например «Тип». Обратите внимание, что для разных категорий товаров эта характеристика одна и та же, т.е. у Вас для работы с Aliexpress не может быть заведено два свойства «Тип» для товаров. Должно использоваться одно свойство для всех категорий, если оно там встречается.

Есть два варианта заполнения свойств цвет, размер и производитель.

Если необходимо чтобы цвет и размер подтягивались из модификаций товара, то во вкладке «Специальные» необходимо активировать настройку для «Атрибут «Размер» » — «Использовать значение «Размер модификации» «, для «Атрибут «Цвет» » — «Использовать значение «Цвет модификации» » (рис.19). В противном случае для свойств цвет/размер из Aliexpress нужно будет в карточке товара создать отдельное свойство и привязать его в характеристиках (рис.17).

Настройка интеграции с AliExpress - 3032

Рисунок 19.

Производителя можно брать из справочника, для этого во вкладке «Специальные» нужно активировать настройку «Атрибут «Название бренда» » — «Использовать значение «Производитель» «. Если указанная настройка не активна, то производитель будет искаться по привязанному свойству.

Если цвет/размер берутся из модификаций, то значения связываются модулем автоматически в том случае, если в справочнике магазина есть такое же значение цвета/размера, как в справочнике Aliexpress. В противном случае цвет/размер можно связать с другим нужным значением (рис.20). В Aliexpress в таком случае товар выгрузится с тем значением, что доступно по справочнику.

Настройка интеграции с AliExpress - 9078

Рисунок 20.

На этом настройки на вкладке «Характеристики» рассмотрены.

Цены и остатки

Для настройки выгрузки цен и остатков в модуле Aliexpress необходимо перейти в раздел «Цены и остатки». Далее выставить настройки (рис.21).

Настройка интеграции с AliExpress - 5410

Рисунок 21.

Кнопка выгрузки — доступно 3 варианта: обновить цены и остатки, обновить цены, обновить остатки.

Загружать по расписанию — опция позволит обновлять цены и остатки автоматически.

Интервал запуска, Время запуска — вам необходимо будет указать интервал запуска в часах или днях.

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

Наценка % — позволяет указать наценку на товар в %, в рублях или сумму.

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

Выгружать по расписанию только остатки — при выгрузке по расписанию будут обновляться только остатки, без обновления цен.

Заказы

Для настройки заказов в модуле нужно переключиться во вкладку «Заказы» и выставить настройки (рис.22).

Настройка интеграции с AliExpress - 9101

Рисунок 22.

Кнопка загрузки — доступны три варианта загрузки заказов: загрузка заказов и статусов, загрузка новых заказов, загрузка доставок и отмен.

Загружать по расписанию — опция позволит выгружать заказы и обновлять статусы автоматически.

Интервал запуска, Время запуска — вам необходимо будет указать интервал запуска в часах или днях.

Далее необходимо выставить опции загрузки заказов (рис.23).

Настройка интеграции с AliExpress - 3113

Рисунок 23.

Источник заказа при загрузке — выбираете источник, который будет проставляться для заказов из Aliexpress. Если не нашли подходящий источник, создать можно согласно инструкции.

Привязывать заказы к покупателю — выбираете пользователя, к которому будут привязываться заказы из Aliexpress.

Создать нового покупателя — новый заказ при загрузке будет привязываться к покупателю с указанным номером телефона, или будет создан новый покупатель, если такой телефон не найден. Т.к. email не передается — покупатель создается с логином вида @ и тегом источника для отбора в списке.

Номер заказа при создании — есть два варианта: Внешний номер заказа — тот что присвоится заказу в Aliexpress; Внутренний номер заказа — тот что по умолчанию присваивается заказам в магазине.

Использовать префикс/суффикс номера — позволяет при необходимости добавлять заказам в начало или в конец номера заказа спецсимволы.

Записывать заказ с датой и временем — записать дату заказа из Aliexpress можно в одном из вариантов: с датой и временем размещения заказа покупателем на Aliexpress или с датой и временем загрузки в магазин (вручную или по расписанию).

Смещение времени при загрузке заказов, часов — при загрузке заказов из Aliexpress в магазин действительное время создания заказа может не совпадать с временем создания заказа, которое установится в магазине. Для исправления ситуации, после первой загрузки заказа в магазин, нужно проверить есть ли расхождение во времени и при необходимости устранить его, указав разницу времени.

Метод доставки по умолчанию — метод доставки, который будет присваиваться для заказов из Aliexpress.

Метод оплаты по умолчанию — метод оплаты, который будет присваиваться для заказов из Aliexpress.

Отправлять уведомление о загрузке заказов из Aliexpress — опция активирует возможность получения уведомлений о заказе из Aliexpress.

Далее необходимо произвести настройку опций обработки заказов (рис.24).

Настройка интеграции с AliExpress - 8101

Рисунок 24.

Соответствие статусов проставляете в зависимости от Ваших бизнес-процессов. Можете соотнести со статусами как с Вашими, так и завести отдельные.

Устанавливать признак оплаты при завершении заказа — при переводе заказа в конечный статус, соответствующий статусу AliExpress «Завершен» может быть автоматически установлен признак оплаты.

Отправлять уведомление о смене статуса в Aliexpress — при загрузке статусов может быть отправлено дополнительное уведомление на email магазина.

На этом настройка данного раздела завершена.

Логи ошибок запросов

На вкладке «Логи ошибок запросов» можно получить информацию по возникающим ошибкам при: загрузке заказов; обновлении цен; обновлении остатков; выгрузке товаров; загрузке категорий, атрибутов, товаров.

Настройка интеграции с AliExpress - 8101

Рисунок 25.

В таблице выводятся ссылки на текстовый файл, при клике на ссылку происходит скачивание, просмотреть файл можно в любом текстовом редакторе.

Готово. В данной инструкции рассмотрели настройку интеграции между AdvantShop и AliExpress.

Другие статьи по теме

  • Предварительная настройка канала продаж AliExpress
  • Предварительная настройка каталога AliExpress
  • Работа с товарами для выгрузки на AliExpress
  • Настройка выгрузки остатков, цен и заказов

Как получить токен алиэкспресс

Фриланс маркетплейс

Пользователей онлайн: 2992

Последний заказ: 1 мин. назад

Логотип и брендинг

Презентации и инфографика

Арт и иллюстрации

Веб и мобильный дизайн

Маркетплейсы и соцсети

Интерьер и экстерьер

Обработка и редактирование

Полиграфия

Промышленный дизайн

Наружная реклама

Доработка и настройка сайта

Создание сайтов

Десктоп программирование

Скрипты и боты

Мобильные приложения

Сервера и хостинг

Юзабилити, тесты и помощь

Тексты и наполнение сайта

Набор текста

Продающие и бизнес тексты

Резюме и вакансии

Статистика и аналитика

Соцсети и SMM

Контекстная реклама

Базы данных и клиентов

E-mail рассылки

Маркетплейсы и доски объявлений

Реклама и PR

Аудиозапись и озвучка

Музыка и песни

Редактирование аудио

Интро и анимация логотипа

Видеоролики

Персональный помощник

Бухгалтерия и налоги

Обзвоны и продажи

Юридическая помощь

Продажа сайтов

Подбор персонала

Презентация

Обучение и консалтинг

Стройка и ремонт

Логотип и брендинг

Презентации и инфографика

Арт и иллюстрации

Веб и мобильный дизайн

Маркетплейсы и соцсети

Интерьер и экстерьер

Обработка и редактирование

Полиграфия

Промышленный дизайн

Наружная реклама

Доработка и настройка сайта

Создание сайтов

Десктоп программирование

Скрипты и боты

Мобильные приложения

Сервера и хостинг

Юзабилити, тесты и помощь

Тексты и наполнение сайта

Набор текста

Продающие и бизнес тексты

Резюме и вакансии

Статистика и аналитика

Соцсети и SMM

Контекстная реклама

Базы данных и клиентов

E-mail рассылки

Маркетплейсы и доски объявлений

Реклама и PR

Аудиозапись и озвучка

Музыка и песни

Редактирование аудио

Интро и анимация логотипа

Заметки по API Aliexpress. Экспорт заказов в Bitrix24, RetailCRM, amoCRM

Хочу поделиться опытом автоматизации экспорта заказов из Aliexpress в несколько CRM. Приведенные примеры написаны на PHP, но библиотеки для работы с Aliexpress есть и для других языков. Структура запросов и ответов аналогична. Если перед вами стоит задача интеграции Aliexpress, надеюсь, эта статья будет вам полезна.

Итак, предположим, что у вас уже есть магазин на Aliexpress. И вы выбрали пункт меню «Разработчикам». На момент публикации наблюдались сбои в локализации консоли разработчика, возможно, они будут исправлены в будущем, но если в консоли не отображаются уже созданные приложения или вход в консоль из кабинета продавца не срабатывает, есть пара советов:

  1. Заходите по ссылке https://seller.aliexpress.ru/login?return_url=https%3A%2F%2Fseller.aliexpress.ru Это исправит глюк с редиректом на китайскую версию консоли, в которой создать приложение невозможно
  2. Перед входом, разлогиньтесь из под покупателя. Хотя вход будет произведен отдельно, консоль каким-то образом, может оказаться пустой. Т.е. вы войдете не под тем логином, под которым ожидали. Тот же глюк может быть позже, когда доступ для приложения может быть запрещён с ошибкой «main account not auth subAccount»

В консоли можно скачать SDK для разных языков и создать приложение. В результате у вас в распоряжении окажутся два из трех нужных для работы значения — App Key и App Secret. С третьим значением – access_token все немного сложнее. Тут необходимо небольшое пояснение. В терминах консоли значения называются App Key, App Secret и access_token, а в терминах SDK, по крайней мере PHP-версии, эти же значения называются appkey, secretKey и sessionKey. Ключ сессии, он же access_token можно получить двумя способами:

  1. Применив редирект обратно на свой сервер. Т.е. вы пишите приложение для менеджера, который по мере необходимости импортирует заказы из Aliexpress в CRM. Каждый раз он будет переходить из приложения на сайт Aliexpress, нажимать кнопку предоставления полномочий и возвращаться в приложение. При возврате будет получен параметр code, который с помощью curl вызова на https://oauth.aliexpress.com/token можно будет обменять на access_token
  2. Парсинг страницы после перехода по ссылке https://oauth.aliexpress.com/authorize. Ну или однократный вызов с ручным копированием access_token

Оба метода подробно описаны в документации. Там же упомянуто, что срок жизни access_token – 1 год. Но не тут то было. Приложение созданное в консоли остается в стадии «testing». А для нее срок жизни — 1 сутки. Чтобы опубликовать приложение, нужно отсканировать паспорт через приложение AliPay (российский загранпаспорт подошел). Но и это вам не поможет, т.к. следующий шаг – введение номера кредитной карты и телефона, которые, видимо, должны быть выданы в Китае, т.к. ни то ни другое ввести не удается. Обращение в техподдержу Aliexpress в марте 2020 год осталось без ответа.

Надеюсь в будущем локализация будет доведена до конца и публикация для россиян станет доступна. Таким образом для дальнейшей работы подходит первый способ с нажатием кнопки каждый раз при импорте заказов, но передо мной была поставлена задача — сделать автоматический импорт без участия менеджера.

Я упомяну парсинг с помощью Selenium в конце стать, т.к. проблема с жизнью access_token может перед вами не стоять или решиться исправлением международного механизма публикации приложения.

Думаю, стоит начать с импорта справочника товаров Ailexpress в промежуточную таблицу, чтобы присвоить им идентификаторы из CRM.

include "TopSdk.php"; date_default_timezone_set('Asia/Shanghai'); $c = new TopClient; $c->appkey = 'xxxxxxxxxxx'; $c->secretKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'; $sessionKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $i = 1; $req = new AliexpressSolutionProductListGetRequest; $aeop_a_e_product_list_query = new ItemListQuery; $aeop_a_e_product_list_query->current_page=$i; $aeop_a_e_product_list_query->product_status_type="onSelling"; $req->setAeopAEProductListQuery(json_encode($aeop_a_e_product_list_query)); $rez = $c->execute($req, $sessionKey); var_dump($rez);

Получаем в $rez список товаров. Обратите внимание на счетчик $i. При первом запросе он будет равен 1, затем его нужно увеличивать, пока он не достигнет $rez->result->total_page и получать следующие страницы с товарами. Предлагаю вам ознакомиться с выводом скрипта. Первое что бросается в глаза – машинный перевод названий товаров на английский язык. Это можно исправить на следующем шаге. Или сориентироваться по ссылкам на фотографию. А если товаров не много и перевод однозначный, то английские названия вас тоже могут устроить. Выведем эти названия и id (если ответ на запрос разбивается на несколько страниц, роцедуру нужно повторить для каждой из них)

foreach($rez->result->aeop_a_e_product_display_d_t_o_list->item_display_dto as $item)< echo $item->product_id."\t".$item->subject."\n"; >

Если по каждой позиции предусмотрен выбор вариантов (размер, комплектация и т.д.), то нужно для каждого id вызвать метод, возвращающий эти варианты. Этим же методом можно получить оригинальное название товара на русском языке.

$req = new AliexpressSolutionProductInfoGetRequest; $req->setProductId($id); $rez = $c->execute($req, $sessionKey); var_dump ($rez);

В выводе содержится, много полезной информации, мы возьмём только идентификатоы и строки характеристик.

foreach($rez->result->aeop_ae_product_s_k_us->global_aeop_ae_product_sku as $sku)< echo $sku ->id."\t".$sku ->sku_code."\n"; >

На этом этапе я столкнулся c небольшой проблемой. Надписи в категориях товаров, которые видит покупатель, не возвращаются через API и доступны только через личный кабинет. Я имею ввиду, надписи, которые появляются при наведении на картинку с подвидом товара или надписи, которые сами определяют подвид.

На скриншоте пример с обувью. В карточке товара покупатель видит размер, а в заказ падает часть строки характеристик, по этой части можно понять какой именно Product code выбран. Обычно это штрих код товара. Я предполагаю, что те, кто заводят товар в личном кабинете продавца, ведут учет подкатегорий товара и их соответствие Product code.

Я сделал первую сверку товаров и написал несколько простых страничек для пополнения и редактирования таблицы. Осталось получить список заказов и загрузить их в CRM.

$req = new AliexpressSolutionOrderGetRequest; $param0 = new OrderQuery; $param0->create_date_end="2221-12-31 12:12:12"; $param0->create_date_start="2021-03-30 12:12:12"; $param0->order_status_list = array("PLACE_ORDER_SUCCESS","IN_CANCEL","WAIT_SELLER_SEND_GOODS","SELLER_PART_SEND_GOODS","WAIT_BUYER_ACCEPT_GOODS","FUND_PROCESSING","IN_ISSUE","IN_FROZEN","WAIT_SELLER_EXAMINE_MONEY","RISK_CONTROL", "FINISH"); $param0->current_page=$i; $req->setParam0(json_encode($param0)); $rez = $c->execute($req, $sessionKey);

Ответ, так же как и в случае со справочником товаров, разбивается на страницы. Обратите внимание на order_status_list. Он описан в документации, которую я упоминал. Насколько я понял, список в моем коде является полным, что может пригодиться, если вы захотите экспортировать заказы во всех статусах.

Информацию по каждому новому заказу нужно получать отдельно. Строки идентифицирующие покупателей как «RU shopper» и т.п., довольно бесполезны, поэтому полное имя лучше брать из блока доставки. Примерно половина покупателей пишет свои контакты транслитом и не полностью, однако в нашем распоряжении есть номер телефона. По нему можно найти покупателя в накопленной, до начала работы с Aliexpress, базе и привязать соответствующий заказ.

При следующем получении списка заказов, можно проверить оплату неоплаченных заказов. В таблице загруженных ранее заказов таких записей может быть много, но Aliexpress заказы которые долго были не оплачены, через какое-то время перестает отображать в консоли в статусе «ожидает оплаты». Думаю это связано с фиксацией цены. Менеджер, работающий около года с Aliexpress, сказал, что стоит проверять заказы, которым не более 20 дней.

$req = new AliexpressSolutionOrderInfoGetRequest; $param1 = new OrderDetailQuery; $param1->ext_info_bit_flag="11111"; $param1->order_id=$order; $req->setParam1(json_encode($param1)); $rez = $c->execute($req, $sessionKey); $n = str_replace("'","''",$rez->result->data->receipt_address->contact_person); // мягкий знак в ФИО $p = $rez->result->data->receipt_address->phone_country . $rez->result->data->receipt_address->mobile_no; //$p = normalize_phone($p) // здесь могут быть варианты с лишней восьмёркой и т.д. $zi = $rez->result->data->receipt_address->zip; $gor = $rez->result->data->receipt_address->city; $pro = $rez->result->data->receipt_address->province; $adr = $rez->result->data->receipt_address->detail_address; if(isset ($rez->result->data->receipt_address->address2)) $adr .=$rez->result->data->receipt_address->address2; foreach($rez->result->data->child_order_ext_info_list->global_aeop_tp_order_product_info_dto as $item)< $pid = $item->product_id; $j=json_decode($item->sku); $s = ""; if(isset ($j->sku[0])) < $s = $j->sku[0]->pValueId; > $cn =$item->quantity; $pr =$item->unit_price->amount ; echo $pid."\t". $s." \t " .$cn ." \t ".$pr."\n"; >

Этот запрос возвращает данные и о скидке, если вы проводите в вашем магазине на Aliexpress промоакцию.

В заключении, хочу привести еще несколько фрагментов кода. По одному для каждой CRM с которыми мне доводилось работать. Я делаю это, чтобы вся информация по интеграции была в одном месте. Детальные разборы добавления заказов ищутся проще, чем информация по Aliexpress, но если кому-то нужно будет быстро сделать интеграцию, можно взять эти наработки.

Я взял их из своих проектов и отвязал от интеграций (в том числе Алиэкспресса). Каждый пример создает контакт, затем лид/сделку, привязывает к ней контакт и добавляет один товар. Я с удовольствием помогу вам c интеграцией за небольшую плату, если вы решите начать продажи на Алиэкспресс. Тем более, что приближается пора отпусков и дополнительные деньги не помешают ни мне, ни вам. Почта для связи tlx list.ru. Есть большой опыт по интеграции фулфилментов, телефонии и прочего API c различными CRM и общий навык автоматизации.

$subdomain = "xxxxxxxxx"; function amo_call($access_token, $link, $data) < $headers = [ 'Authorization: Bearer ' . $access_token ]; $curl = curl_init(); //Сохраняем дескриптор сеанса cURL curl_setopt($curl,CURLOPT_RETURNTRANSFER, true); curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0'); curl_setopt($curl,CURLOPT_URL, $link); curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST'); curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($data)); curl_setopt($curl,CURLOPT_HTTPHEADER, $headers); curl_setopt($curl,CURLOPT_HEADER, false); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2); $out = curl_exec($curl); //Инициируем запрос к API и сохраняем ответ в переменную $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); $code = (int)$code; $errors = [ 400 =>'Bad request', 401 => 'Unauthorized', 403 => 'Forbidden', 404 => 'Not found', 500 => 'Internal server error', 502 => 'Bad gateway', 503 => 'Service unavailable', ]; try < if ($code < 200 || $code >204) < return -1; >> catch(\Exception $e) < return -1; >$response = json_decode($out, true); return $response; > /* //Это упрощенный способ получения $access_token. Подробнее о получении, вермени жизни и обновлении, см. документацию $link = 'https://' . $subdomain . '.amocrm.ru/oauth2/access_token'; //Формируем URL для запроса $data = [ 'client_id' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'client_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'grant_type' => 'authorization_code', 'code' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'redirect_uri' => 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, ]; $curl = curl_init(); //Сохраняем дескриптор сеанса cURL curl_setopt($curl,CURLOPT_RETURNTRANSFER, true); curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0'); curl_setopt($curl,CURLOPT_URL, $link); curl_setopt($curl,CURLOPT_HTTPHEADER,['Content-Type:application/json']); curl_setopt($curl,CURLOPT_HEADER, false); curl_setopt($curl,CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl,CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2); $out = curl_exec($curl); //Инициируем запрос к API и сохраняем ответ в переменную $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); $code = (int)$code; $errors = [ 400 => 'Bad request', 401 => 'Unauthorized', 403 => 'Forbidden', 404 => 'Not found', 500 => 'Internal server error', 502 => 'Bad gateway', 503 => 'Service unavailable', ]; try < if ($code < 200 || $code >204) < throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undefined error', $code); >> catch(\Exception $e) < die("Ошибка: ' . $e->getMessage() . PHP_EOL . 'Код ошибки: ' . $e->getCode()); > $response = json_decode($out, true); var_dump($response); $access_token = $response['access_token']; //Access токен $refresh_token = $response['refresh_token']; //Refresh токен $token_type = $response['token_type']; //Тип токена $expires_in = $response['expires_in']; //Через сколько действие токена истекает */ $access_token ="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // создаем контакт. В рабочей версии лучше перед этим поискать контакт по номеру телефона. Методом /api/v4/contacts с параметром filter[custom_fields_values] //тестовые данные $p ="+79000000000"; $n= "Петр Петров"; $qnt = 1; $ord = "xxxxxxxxxxxxxxxxx"; $link='https://'.$subdomain.'.amocrm.ru/api/v2/contacts'; $data = array ( 'add' => array ( 0 => array ( 'name' => $n, 'custom_fields'=>array( array( 'id' => '953127', 'values' => array( array( "value"=>$p, "enum"=> "MOB" ), ), ), ), ) , ) , ) ; $response = amo_call($access_token, $link, $data); if ($response==-1) < die("что-то пошло не так при добавлении контакта /n"); >else < var_dump($response); $cid = $response["_embedded"]["items"][0]["id"]; // создаем сделку с привязкой к найденному или созданному контакту $pipeline_id = '4188580'; $lead_status_id = '39384853'; $lead_name ="Заказ из Aliexpress № " . $ord; $link='https://'.$subdomain.'.amocrm.ru/api/v2/leads'; $data = array ( 'add' =>array ( 0 => array ( 'name' => $lead_name, 'status_id' => $lead_status_id, //id статуса 'pipeline_id' => $pipeline_id, 'contacts_id'=> array ( $cid ), ), ), ); $response = amo_call($access_token, $link, $data); if ($response==-1) < die("что-то пошло не так при добавлении сделки /n"); >else < $did = $response["_embedded"]["items"][0]["id"]; var_dump($response); // добавляем товары в сделку $link='https://'.$subdomain.'.amocrm.ru/api/v4/leads/'.$did.'/link'; $data = array ( 0 =>array ( 'to_entity_id' => 327219, //id товара можно посмореть методами api или в html коде страницы товара (не путать с артикулом) 'to_entity_type' =>'catalog_elements', 'metadata' => array( "quantity" => $qnt, "catalog_id" => 5321 // id каталога, виден в адресной строке при входе в каталог ), ), ); $response = amo_call($access_token, $link, $data); if ($response==-1) < die("что-то пошло не так при добавлении товаров в сделку /n"); >else < var_dump($response); //сообщить об успешно выполнной операции >>
function b24_call($queryUrl, $queryData) < $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_SSL_VERIFYPEER =>0, CURLOPT_POST => 1, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $queryUrl, CURLOPT_POSTFIELDS => $queryData, )); $out = curl_exec($curl); $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($code < 200 || $code >204) < return -1; >curl_close($curl); $response = json_decode($out, true); return $response; > $p ="+79000000000"; $n= "Петр Петров"; $zi = "111111"; $pro = "Ньюйорская область"; $gor = "Ньюджерси"; $adr = "ул. Линкольна дом 1"; $qnt = 1; $ord = "xxxxxxxxxxxxxxxxx"; //Перед созданием контакта лучше поискать его методом crm.contact.list с параметром array('filter' => array('PHONE' => $ph)) $queryUrl = 'https://xxxxxxxxxx.ru/rest/48/xxxxxxxxxxxxxxxxx/crm.contact.add.json'; $queryData = http_build_query(array( 'fields' => array( "NAME"=> $n, "PHONE" => array(array('VALUE' =>$p, 'VALUE_TYPE' => 'MOBILE')), ), 'params' => array("REGISTER_SONET_EVENT" => "N") )); $response= b24_call($queryUrl, $queryData); if ($response==-1) < die("что-то пошло не так при добавлении контакта /n"); >else < var_dump($response); $cid = $response["result"]; echo "!".$cid."!\n"; $queryUrl = 'https://xxxxxxxxxx.ru/rest/48/xxxxxxxxxxxxxxxxx/crm.requisite.add.json'; $queryData = http_build_query(array( 'fields'=>array( "PRESET_ID"=> 3, "ENTITY_TYPE_ID"=> 3, "ENTITY_ID"=> $cid, "NAME"=>"Реквизит", "ACTIVE"=>"Y", "SORT"=>100 ) )); $response= b24_call($queryUrl, $queryData); if ($response==-1) < die("что-то пошло не так при добавлении реквизита /n"); >else < var_dump($response); $rid = $response["result"]; $queryUrl = 'https://xxxxxxxxxx.ru/rest/48/xxxxxxxxxxxxxxxxx/crm.address.add.json'; $queryData = http_build_query(array( 'fields'=>array( "TYPE_ID"=> 1, "ENTITY_TYPE_ID"=> 8, "ENTITY_ID"=> $rid, "POSTAL_CODE"=> "$zi", "PROVINCE"=> "$pro", "CITY"=> "$gor", "ADDRESS_1"=> "$adr", "COUNTRY"=> "Россия" ) )); $response= b24_call($queryUrl, $queryData); if ($response==-1) < die("что-то пошло не так при добавлении адреса в реквизит /n"); >else < var_dump($response); $lead_name = "Заказ из Aliexpress № " . $ord; $queryUrl = 'https://xxxxxxxxxx.ru/rest/48/xxxxxxxxxxxxxxxxx/crm.lead.add.json'; $queryData = http_build_query(array( 'fields' =>array( "TITLE" => $lead_name, "TYPE_ID" => "GOODS", "STAGE_ID" => "NEW", "CONTACT_ID"=> $cid, "CURRENCY_ID"=> "RUB", ), 'params' => array("REGISTER_SONET_EVENT" => "Y") )); $response= b24_call($queryUrl, $queryData); if ($response==-1) < die("что-то пошло не так при добавлении сделки /n"); >else < var_dump($response); $did = $response["result"]; $items = array(); $items[] = array('PRODUCT_ID' =>"2968", 'PRICE' => "1.00", 'QUANTITY' => $qnt); $queryUrl = 'https://xxxxxxxxxx.ru/rest/48/xxxxxxxxxxxxxxxxx/crm.lead.productrows.set.json'; $queryData = http_build_query(array( "id" => $did, "rows"=>$items )); $response= b24_call($queryUrl, $queryData); if ($response==-1) < die("что-то пошло не так при добавлении товаров в сделку /n"); >else < var_dump($response); //сообщить об успешно выполнной операции >> > > > 
$crmKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; function retail_call($url, $postData) < $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $postData); $out = curl_exec($curl); $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($code < 200 || $code >204) < return -1; >curl_close($curl); $response = json_decode($out, true); return $response; > $p ="+79000000000"; $n= "Петр Петров"; $zi = "111111"; $pro = "Ньюйорская область"; $gor = "Ньюджерси"; $adr = "ул. Линкольна дом 1"; $qnt = 1; $ord = "xxxxxxxxxxxxxxxxx"; $url = 'https://xxxxxxxxxx..ru/api/v5/customers/create'; $postData = array( 'site' =>'xxxxxxxxxx.ru', 'customer' => json_encode(array( 'firstName' =>$n, )), 'apiKey' => $crmKey, ); $rez = retail_call($url, $postData); var_dump($rez); $cid = $rez["id"]; $url = 'https://xxxxxxxxxx.ru/api/v5/orders/create'; $postData = array( 'site' =>'xxxxxxxxxx.ru', 'order' => json_encode(array( 'customer'=> array( 'id' => $cid, ), 'items' => array( array( 'quantity' => 6, 'offer'=> array( 'externalId' => 'xxxxxxxxxxx', ) ), ))), 'apiKey' => $crmKey, ); $rez = retail_call($url, $postData); var_dump($rez); echo "\n".$rez["id"]."\n"; 

Selenium (для получения access_token)

from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get("https://seller.aliexpress.ru/") sleep(5) driver.switch_to.frame(browser.find_element_by_css_selector("iframe.iframe-with-loader_iframe__QQc_0")) e = driver.find_element_by_id("fm-login-id") e.send_keys("xxxxxx@xxxxxxxx.ru") e = driver.find_element_by_id("fm-login-password") e.send_keys("xxxxxxxxxxxxx") e = driver.find_element_by_id("fm-login-submit") e.click() sleep(15) driver.get("https://oauth.aliexpress.com/authorize?&response_type=token&client_id=XXXXXXXX&state=1212&view=web&sp=ae") sleep(5) try: e = driver.find_element_by_id("sub") e.click() except Exception: print('Session login') sleep(5) txt = "-1" try: e = driver.find_element_by_id("wrap") txt = e.get_attribute('innerHTML') except Exception: print('Session login') x = txt.split("access_token: ") y = x[1].split("
") print y[0]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *