September 20th, 2020

Автоматизация Aliexpress для продавцов на Python

Есть желание автоматизировать работу с aliexpress для своего магазина.

Регистрируемся как разработчик на портале https://developers.aliexpress.com/en/doc.htm?docId=108970&docType=1
Надо выбрать, что у вас 1 магазин и вы хотите доступ для него.

Добавляете приложение


Получаете appKey и appSecret.

Скачиваете свежее SDK

Распаковываем SDK в корень вашего Python проекта.

Открывая любой пример, видим много непонятного:

https://developers.aliexpress.com/en/doc.htm?docId=42270&docType=2

# -*- coding: utf-8 -*-
import top.api

req=top.api.AliexpressSolutionOrderGetRequest(url,port)
req.set_app_info(top.appinfo(appkey,secret))

req.param0=""
try:
resp= req.getResponse(sessionkey)
print(resp)
except Exception,e:
print(e)


Приходится идти в исходники и искать ответы.
Ответы:
url - "gw.api.taobao.com"
port - 80. Если 443й, то https соединение. У меня не работает. Наверняка, потому что у меня Python3, а не 2.
param0 - параметры запроса. У каждого они могут быть разные. К примеру, у запроса заказов в данном параметре json с полями "дата начала", "дата конца", "статус" и др. Все аргументы описаны на странице запроса https://developers.aliexpress.com/en/doc.htm?docId=42270&docType=2.

sessionkey - Ключ, который мы должны получить после авторизации.Есть 2 пути его получения: авторизация через OAuth 2.0 или "браузер". Т.к. пока есть цель написать локальный Питон скрипт без сервера, выберем 2й вариант.

Откроем в браузере https://oauth.aliexpress.com/authorize?response_type=token&client_id=111111111&state=1212&view=web&sp=ae, где 111111111 - ваш appKey

Соглашаемся с Соглашением и видим access_token. Его и пишем в sessionkey.

Далее, есть проблема с тем, что скрипт поддерживает только Python 2.. Пройдя по base.py и поменяв вызовы на Python 3, мы получим рабочий пример.


Итоговый пример:

# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
from top import api, appinfo
import pprint

url = 'gw.api.taobao.com'
port = 80

appkey = 'xxxxxxxx'
secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

req = api.AliexpressSolutionOrderGetRequest(url, port)
req.set_app_info(appinfo(appkey, secret))

req.param0 = {
'create_date_start': (datetime.utcnow() - timedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S'),
'page_size': 10,
'current_page': 1
}

#https://oauth.aliexpress.com/authorize?response_type=token&client_id=xxxxxxxx&state=1212&view=web&sp=ae
sessionkey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

resp = req.getResponse(sessionkey)
pprint.pprint(resp['aliexpress_solution_order_get_response']['result'])


Поздравляю, первый шаг в автоматизации сделан!

Напишите в комментариях, какие еще бывают примеры автоматизации маркетплейсов, платные/бесплатные.