Осилил ли кто API Cainiao (Aliexpress ) ?

1. Mi11er 96 09.03.21 17:33 Сейчас в теме
Всем привет.
Может есть какой то очень умный человек, кто осилил интеграцию с Ali ?
В частности вопрос такой, как сделать вложенность параметров в чертовом запросе ?
Если запрос содержит линейные параметры ( то есть по 1 ), то проблем нет, и вопросов к формату
application/x-www-form-urlencoded
нет...
Но как в этом сделать вложенность ?

К примеру
{
  "locale" : "ru_RU" , // Пожалуйста, используйте ru_RU для российского бизнеса 
  "trade_order_param":{
    "trade_order_id" : 1000000 // ID заказа покупателя на AliExpress
  }, 
  "seller_info_param" : { // информация о продавце 
  
  },
  "package_params":[{
    "length" : 1 , // длина посылки в см
    "width" : 2 , // ширина посылки в см
    "height" : 3 , // высота посылки в см
    "weight" : 4 // вес посылки в граммах
  }]
}
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Степной 27 09.03.21 17:58 Сейчас в теме
(1) Такого опыта нет, но предполагаю, что, если использовать метод ЗаписатьJSON, то:

"trade_order_param":{
"trade_order_id" : 1000000 // ID заказа покупателя на AliExpress
}


Это будет структура в структуре.

"package_params":[{
"length" : 1 , // длина посылки в см
"width" : 2 , // ширина посылки в см
"height" : 3 , // высота посылки в см
"weight" : 4 // вес посылки в граммах
}]


А здесь: package_params - структура, в которой массив со структурой со значениями length, width и т.д.
3. Mi11er 96 09.03.21 18:06 Сейчас в теме
(2) я честно пытался =) и JSON и все. но там проблема в том, что строка формируется , как Параметр:Ключ , в целом как и должно быть при form-urlencoded ... Это логично, поэтому у меня в голове просто не складывается, как можно сюда приписать структуру ... а есть где структура в структуре в структуре ... просто адская вложенность ...
И Али не хочет видеть в теле запроса JSON строку...
Причем, есть еще параметр подписи, который формируется на основе всех параметров в алфовитном порядке ... и как тут структуру применить, такой же аху... вопрос...

СтрокаЗапроса = "";
	Для Каждого параметр из ПараметрыЗапроса Цикл
		СтрокаЗапроса = СтрокаЗапроса + параметр.Ключ + "=" + КодироватьСтроку(параметр.Значение,СпособКодированияСтроки.КодировкаURL,"UTF-8") + "&";
	КонецЦикла;		


еще хохма в том, что они выложили модуль для 1С, в котором только часть методом ( которые я сделал ) , а вот где вложенности пошли ... как то они пропустили =)
4. Степной 27 09.03.21 18:14 Сейчас в теме
(3) Есть пример в открытом доступе (ссылка на API)?
5. Mi11er 96 09.03.21 19:23 Сейчас в теме
(4) Да, что то есть =) тыц , но даже там примеры только для SDK, а к примеру CRUL Запрос они не сделали примером толком =)
6. RocKeR_13 1331 10.03.21 08:57 Сейчас в теме
(1)
Стр = Новый Структура;
	Стр.Вставить("locale", "ru_RU");
	Стр.Вставить("trade_order_param", Новый Структура("trade_order_id", 1000000));
	Стр.Вставить("seller_info_param", Новый Структура);
	Массив = Новый Массив;
	Массив.Добавить(Новый Структура("length, width, height, weight", 1, 2, 3, 4));
	Стр.Вставить("package_params", Массив);
	
	ЗаписьJSON = Новый ЗаписьJSON;
   	ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Стр);
    Рез = ЗаписьJSON.Закрыть();
Показать
7. Mi11er 96 10.03.21 10:03 Сейчас в теме
(6)
Рез = ЗаписьJSON.Закрыть();

И что это дает ?

Для понимания =) у меня нет проблем с создаем тела в JSON, любого вида.
У меня конркетно проблема, создать тело в виде строки из form-urlencoded.

К примеру вот строка, где параметры линейные, не с вложенностью
app_key=ТУТ_КЛЮЧ&format=json&method=aliexpress.logistics.redefining.getonlinelogisticsservicelistbyorderid&session=wspedhgrdpW103081fbwCkdPk4fUTGlbEwQdQx2TPuy1U5YyzDNQL&sign_method=md5×tamp=2021-03-10%2010%3A02%3A18&v=2.0&locale=ru_RU&order_id=5006902681638741&sign=4D61BB51151B7BCD982B3C5278F1CC14


То есть, видим что каждому ключу, есть значение ... как будет выглядеть вложенность .. у меня фантазии не хватает.
8. RocKeR_13 1331 10.03.21 10:15 Сейчас в теме
(7) Ну в нормальных API можно передавать параметры в качестве тела запроса, а не только через адрес запроса...
Типа этого:
Запрос = Новый HTTPЗапрос(Адрес, Заголовки);
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);

Хорошо бы, конечно, хотя бы на английском API глянуть...
9. Mi11er 96 10.03.21 10:53 Сейчас в теме
(8) давайте покажу листинг функции, формирующий запрос
Функция СформироватьЗапрос(Метод,ДополнительныеПараметры = Неопределено)
	
	хСоединение = Новый HTTPСоединение(Боевой,443,,,,30,Новый ЗащищенноеСоединениеOpenSSL);
	
	//КодироватьСтроку(Строка,СпособКодированияСтроки.КодировкаURL,"UTF-8");
	ПараметрыЗапроса = Новый Структура;
		ПараметрыЗапроса.Вставить("app_key"			,	app_key);
		ПараметрыЗапроса.Вставить("format"			, 	"json");
		ПараметрыЗапроса.Вставить("method"			, 	Метод);
		ПараметрыЗапроса.Вставить("session"			, 	access_token);
		ПараметрыЗапроса.Вставить("sign_method"		,	"md5");
		ПараметрыЗапроса.Вставить("timestamp"		, 	Формат(ТекущаяДата(),"ДФ=yyyy-MM-dd") + ?(Час(ТекущаяДата()) < 10," 0"," ") +Формат(ТекущаяДата(),"ДЛФ=T"));
		ПараметрыЗапроса.Вставить("v"				,	"2.0");
		Если ДополнительныеПараметры <> Неопределено Тогда
			Для каждого ДП из ДополнительныеПараметры Цикл
				ПараметрыЗапроса.Вставить(ДП.Ключ,ДП.Значение);
			КонецЦикла;
		КонецЕсли;
		ПараметрыЗапроса.Вставить("sign"			, 	СоздатьПодпись(ПараметрыЗапроса));
		
	Заголовки = Новый Соответствие;
		Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
		Заголовки.Вставить("charset", "utf-8");
		
	СтрокаЗапроса = "";
	Для Каждого параметр из ПараметрыЗапроса Цикл
		СтрокаЗапроса = СтрокаЗапроса + параметр.Ключ + "=" + КодироватьСтроку(параметр.Значение,СпособКодированияСтроки.КодировкаURL,"UTF-8") + "&";
	КонецЦикла;		
	
	СтрокаЗапроса = Лев(СтрокаЗапроса,СтрДлина(СтрокаЗапроса)-1);
	
	Попытка
		хЗапрос = Новый HTTPЗапрос(АдресЗапроса,Заголовки);
		хЗапрос.УстановитьТелоИзСтроки(СтрокаЗапроса,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.Авто);	
		хОтвет =  хСоединение.ВызватьHTTPМетод("POST",хЗапрос);
		Возврат хОтвет;
	Исключение
		ЗаписьЖурналаРегистрации("API.Aliexpress.Установка соединения",УровеньЖурналаРегистрации.Ошибка,,,ОписаниеОшибки());
		Возврат Неопределено;
	КонецПопытки;
КонецФункции
Показать


Тело , как раз состоит из данных параметров =) Такая длинная строка.
11. RocKeR_13 1331 10.03.21 11:15 Сейчас в теме
(9) Ну, блин, китайцы...) Неужто не реализовано у них в JSON-формате передавать параметры?
12. Mi11er 96 10.03.21 11:17 Сейчас в теме
(11) На то и китайцы ... Самое смешное, что ответ в JSON приходит =) А вот запрос, ипись как хочешь...
Буду сегодня с их прогрерами общаться, пуская пример CURL Запроса приводят...
Иначе придется прокладку делать на питоне / шарпе ... чего бы не хотелось
10. Степной 27 10.03.21 11:13 Сейчас в теме
(5) Попробуйте варианты отсюда.

Что-то типа: package_params[0][length]=1&package_params[0][width]=2 и т.д.
13. Mi11er 96 10.03.21 11:19 Сейчас в теме
(10)с массивом вроде выглядит не плохо. А как будет со вложенностью 3ех уровней. , где не массив, а объекты...
Вобщем. не оч тривиально все оказалось (
14. Степной 27 10.03.21 11:50 Сейчас в теме
(13) Нужно пробовать, вложенные массивы и т.д.
15. Mi11er 96 11.03.21 11:51 Сейчас в теме
Если кто нарвется, пока что работает вот так, с 1им уровнем вложенности точно.


Функция Логистика_CD_СписокЛогистическихРешений() Экспорт
	
	допПараметры = Новый Структура;
		допПараметры.Вставить("locale", "ru_RU");
		
		trade_order_param = Новый Структура;
			trade_order_param.Вставить("trade_order_id", "5006902681638741");
			
		допПараметры.Вставить("trade_order_param", СтруктураВДжисон(trade_order_param));
		допПараметры.Вставить("seller_info_param", "{}");
		
		package_params = Новый Структура;
			package_params.Вставить("length",1);
			package_params.Вставить("width"	,1);
			package_params.Вставить("height",1);
			package_params.Вставить("weight",1);
		
		допПараметры.Вставить("package_params", СтруктураВДжисон(package_params));
		
	ответ = СформироватьЗапрос("cainiao.global.solution.inquiry",допПараметры);
	
	Сообщить(Ответ.ПолучитьТелоКакСтроку());
	
КонецФункции
	
#КонецОбласти


#Область СлужебныеФункции
Функция СтруктураВДжисон(Структура)
	
	Если ТипЗнч(Структура) <> Тип("Структура") Тогда
		Возврат "";
	КонецЕсли;
	
	ЗаписьДжисон = Новый ЗаписьJSON();
		ЗаписьДжисон.УстановитьСтроку();
	
	ЗаписатьJSON(ЗаписьДжисон,Структура);
	
	Возврат ЗаписьДжисон.Закрыть();
	
КонецФункции


Показать
16. user672680_sas.moskva 30.06.21 15:27 Сейчас в теме
Могу сказать, что работает ! Получилось из заказа на Алиэкспресс создать программно логистическое задание в Cainiao.
Но помучиться пришлось много, последовательно надо вызывать кучу методов, чтобы получить необходимые параметры для создания логистического задания а потом уже можно и бирку с данными задания получить !
17. user1629426 14.07.21 08:01 Сейчас в теме
Привет. Не поделитесь кодом создания логистических заказов. Остальные методы (печать, создание листа и т.д.) на уже созданном заказе работают.
19. Ivan_Pshenichniy 20.09.21 15:28 Сейчас в теме
Вот пример того как работа с api aliexpress реализована у меня.



Функция ПодготовитьЗапросКотправке()
	
	ПараметрыПодключения = ПолучитьПараметрыПодключения(); // Ваши данные API
	
	
	Метод = "aliexpress.solution.batch.product.inventory.update";
	Ответ = СтрЗаменить(Метод,".","_") + "_response"; 
	// Если есть основной параметр (в данном случае param1)
	РеквизитыДокумента = Новый Структура("order_id",12345678);	
	ТекстJSON = В_JSON(РеквизитыДокумента); // используйте - В_JSON_СимволыВнеASCII(РеквизитыДокумента); если в предоваемой структуре или соответствии в значениях есть символы +-?&% // Aliexpress их не принимает и выпадает в ошибку	
	ПараметрыЗапроса = ПолучитьТаблицуПараметров(Метод, "param1", ТекстJSON, ПараметрыПодключения);
	ДобавитьВТаблицаПараметровЗапроса(ПараметрыЗапроса, "locale", "ru_Ru");
	
	// Если есть основной параметр отсутсвует то: 
	ПараметрыЗапроса = ПолучитьТаблицуПараметров(Метод, , , ПараметрыПодключения);
	ДобавитьВТаблицаПараметровЗапроса(ПараметрыЗапроса, "order_id", 12345678);
	ДобавитьВТаблицаПараметровЗапроса(ПараметрыЗапроса, "locale", "ru_Ru");

	Попытка
		
		JSONОтвет = УстановитьСоединение(ПараметрыЗапроса,ПараметрыПодключения);
		СоответствиеОтвет = ПрочитатьJSON(JSONОтвет,Истина);
		
	Исключение
		СоответствиеОтвет = неопределено;
	КонецПопытки;
	
	
	Если СоответствиеОтвет <> неопределено Тогда
		Если СоответствиеОтвет["error_response"] = Неопределено Тогда 
				РезультатОтвета = СоответствиеОтвет[Ответ]["update_success"];
				Возврат РезультатОтвета;
		КонецЕсли;	
	КонецЕсли;
	
	Возврат Неопределено;

КонецФункции


#Область ФормированиеЗапросаИОтправкаАлиекспресс

Функция УстановитьСоединение(ЗапросПараметров, ПараметрыПодключения)	
	
	СтрокаОтправки = ПолучитьСтрокаДанные(ЗапросПараметров, ПараметрыПодключения);
	HTTP = Новый HTTPСоединение("api.taobao.com", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL);
	URLЗапроса = "/router/rest";     
	HTTPЗапрос = Новый HTTPЗапрос(URLЗапроса);
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
	HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаОтправки);                              
	Попытка
		Ответ = HTTP.ОтправитьДляОбработки(HTTPЗапрос);
		ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
		Чтение = Новый ЧтениеJSON;
		Чтение.УстановитьСтроку(ТекстОтвета);   
	Исключение
		Соединение = Неопределено;
		Возврат Соединение;
	КонецПопытки;
	
	
	Возврат Чтение;
КонецФункции

Функция ПолучитьТаблицуПараметров(Метод, ОсновнойПараметр, ТекстJSON, ПараметрыПодключения) 
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Ключ");
	ТЗ.Колонки.Добавить("Значение");
	

	ДобавитьВТаблицаПараметровЗапроса(ТЗ, "method", Метод);
	ДобавитьВТаблицаПараметровЗапроса(ТЗ, "app_key", ПараметрыПодключения.КлючПриложения); // КлючПриложения
	ДобавитьВТаблицаПараметровЗапроса(ТЗ, "session", ПараметрыПодключения.КлючСессии); // КлючСессии   
	ДобавитьВТаблицаПараметровЗапроса(ТЗ, "timestamp", Формат(ТекущаяДата() + 3*60*60, "ДФ='гггг-ММ-дд ЧЧ:мм:сс'"));
	ДобавитьВТаблицаПараметровЗапроса(ТЗ, "format", "json");
	ДобавитьВТаблицаПараметровЗапроса(ТЗ, "v", "2.0");
	ДобавитьВТаблицаПараметровЗапроса(ТЗ, "sign_method", "md5");
	Если Не ОсновнойПараметр = "" Тогда
		ДобавитьВТаблицаПараметровЗапроса(ТЗ, ОсновнойПараметр, ТекстJSON);
	КонецЕсли;
	
	Возврат ТЗ;
	
КонецФункции

Процедура ДобавитьВТаблицаПараметровЗапроса(ТЗ, Ключ, Значение)
	НоваяСтрокаТЗ = ТЗ.Добавить();
	НоваяСтрокаТЗ.Ключ = Ключ;
	НоваяСтрокаТЗ.Значение = Значение;
КонецПроцедуры	

Функция ПолучитьСтрокаДанные(ТЗ, ПараметрыПодключения)
	
	СтрокаДанные = "";
	
	Для каждого СтрТ Из ТЗ Цикл
		СтрокаДанные = СтрокаДанные + СтрТ.Ключ + "=" + СтрТ.Значение + "&";
	КонецЦикла;
	
	СтрокаХеш = СтрЗаменить(Строка(ПолучитьХешТаблицыПараметров(ТЗ, ПараметрыПодключения))," ","");
	
	СтрокаДанные = СтрокаДанные + "sign=" + СтрокаХеш;
	
	Возврат СтрокаДанные;
	
КонецФункции

Функция ПолучитьХешТаблицыПараметров(ТЗ, ПараметрыПодключения)
	
	ТЗ.Сортировать("Ключ");
	
	СтрокаДанные = "";
	
	СтрокаДанные = СтрокаДанные + ПараметрыПодключения.СекретныйКлюч;
	
	Для каждого СтрТ Из ТЗ Цикл
		
		Если СтрТ.Ключ = "image_bytes" Тогда
			Продолжить;
		КонецЕсли;
		
		СтрокаДанные = СтрокаДанные + СтрТ.Ключ + СтрТ.Значение;
		
	КонецЦикла;
	
	СтрокаДанные = СтрокаДанные + ПараметрыПодключения.СекретныйКлюч;
	
	Возврат MD5ХешСтрока(СтрокаДанные);
	
КонецФункции

Функция MD5ХешСтрока(тСтрока)
	Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
	
	Хеш.Добавить(тСтрока);
	
	Возврат Хеш.ХешСумма; 
КонецФункции

Функция  ПолучитьПараметрыПодключения()
	
	ПараметрыПодключения = Новый Структура();
	ПараметрыПодключения.Вставить("СекретныйКлюч", "ВашСекретныйКлюч");
	ПараметрыПодключения.Вставить("КлючСессии"   ,"ВашКлючСесии"); 
	ПараметрыПодключения.Вставить("КлючПриложения", "ВашКлючПриложения");
	
КонецФункции

#КонецОбласти

#Область ЗаменаСимволовАски

//Процедуры и функции необходимые для обработки символов +-?&% которые не принимает алиекспресс
Функция В_JSON_СимволыВнеASCII(СоответствиеДанные, Отказ = Ложь) Экспорт
	
	ИспользоватьДвойныеКавычки = Истина;
	ЭкранироватьСлэш = Ложь;
	
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,,,ЭкранированиеСимволовJSON.СимволыВнеASCII);
	Попытка
		
		ЗаписьJSON = Новый ЗаписьJSON;
		ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
		
		ЗаписатьJSON(ЗаписьJSON, СоответствиеДанные);
		
		СтрокаДанные = ЗаписьJSON.Закрыть();
		
		ЗаменитьНаЮникодСпецСимволы(СтрокаДанные);
		
		Возврат СтрокаДанные;
		
	Исключение
		
		Отказ = Истина;
		Сообщить(ОписаниеОшибки());
		
		Возврат Неопределено;
		
	КонецПопытки;
	
КонецФункции

Процедура ЗаменитьНаЮникодСпецСимволы(Строка)
		
	СтрокаСпецСимволов = "+-?&%";
	
	Для Счетчик = 1 По СтрДлина(СтрокаСпецСимволов) Цикл      
		
		СпецСивол = Сред(СтрокаСпецСимволов, Счетчик, 1);
		
		Если СтрНайти(Строка, СпецСивол) > 0 Тогда
			
			СимволЮникод = DecToAny(КодСимвола(СпецСивол), 16);
			
			СимволЮникод = "00000" + СимволЮникод;
			СимволЮникод = Прав(СимволЮникод, 4);
			СимволЮникод = "\u" + СимволЮникод;
			
			Строка = СтрЗаменить(Строка, СпецСивол, СимволЮникод);
			
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

Функция DecToAny(Знач тЗначение, тОснование)
   тРезультат = "";
 
   Пока тЗначение > 0 Цикл
      тРезультат = Сред("0123456789abcdefghijklmnopqrstuvwxyz", тЗначение%тОснование + 1, 1) + тРезультат;
      тЗначение = Цел(тЗначение/тОснование) ;
   КонецЦикла;
 
   Возврат тРезультат;
КонецФункции

#КонецОбласти

#Область ПреброзованиеВ_ИЗ_JSON


Функция В_JSON(СоответствиеДанные, Отказ = Ложь) Экспорт
	
	ИспользоватьДвойныеКавычки = Истина;
	ЭкранироватьСлэш = Ложь;
	
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто,Символы.Таб);
	Попытка
		ЗаписьJSON = Новый ЗаписьJSON;
		//ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, "");
		ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
		ЗаписатьJSON(ЗаписьJSON,СоответствиеДанные);
		ТекстJSON = ЗаписьJSON.Закрыть();
		
		Возврат ТекстJSON;
		
	Исключение
		
		Отказ = Истина;
		Сообщить(ОписаниеОшибки());
		
		Возврат Неопределено;
		
	КонецПопытки;
	
КонецФункции

Функция ИЗ_JSON(Строка_JSON, Отказ = Ложь) Экспорт
	
	Попытка
		
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(Строка_JSON);
		
		Возврат ПрочитатьJSON(ЧтениеJSON, Истина);
		
	Исключение
		Отказ = Истина;
		Сообщить(ОписаниеОшибки());
		
		Возврат Неопределено;
		
	КонецПопытки;
	
	
КонецФункции

#КонецОбласти

#Область ОбработкаОтвета

Функция ВыполнитьОбработкуJSONКИЛогЗаказ(СтруктураДанных, SuccessКИ = Неопределено,ИскомоеЗначение)
	Если ТипЗнч(СтруктураДанных) = Тип("Соответствие") Тогда
		Если СтруктураДанных[ИскомоеЗначение] = Неопределено Тогда
			Для Каждого СтрокаКИ Из СтруктураДанных Цикл
				Если ТипЗнч(СтрокаКИ.Значение) = Тип("Соответствие") 
					ИЛИ ТипЗнч(СтрокаКИ.Значение) = Тип("Массив") Тогда
					SuccessКИ = ВыполнитьОбработкуJSONКИЛогЗаказ(СтрокаКИ.Значение,,ИскомоеЗначение);
				КонецЕсли;		
			КонецЦикла;	
		Иначе	
			SuccessКИ = СтруктураДанных;
		КонецЕсли;
	Иначе
		Для Каждого СтрокаКИ Из СтруктураДанных Цикл 
			Если ТипЗнч(СтрокаКИ) = Тип("Соответствие") 
				ИЛИ ТипЗнч(СтрокаКИ) = Тип("Массив") Тогда
				Success = ВыполнитьОбработкуJSONКИЛогЗаказ(СтрокаКИ,,ИскомоеЗначение);
			КонецЕсли;	
		КонецЦикла;	
	КонецЕсли;
	
	Возврат ?(SuccessКИ = Неопределено, Неопределено, SuccessКИ)
КонецФункции
#КонецОбласти




Показать
20. user1694717 08.11.21 22:20 Сейчас в теме
Всем привет! Не могу разобраться, как работать по API шаблоном "FBS: Почта России и AliExpress". Мне нужно научится получать ярлык и накладную для отправления. Ни один из испробованных методов(aliexpress.logistics.redefining.getprintinfos, cainiao.global.handover.pdf.get) не отрабатывает. Может кто то подсказать, как решить данную проблему!? Спасибо!
21. Sofia9876 12.12.21 22:44 Сейчас в теме
(20)здравствуйте, у Вас получилось чтото? у меня ошибка с этим методом aliexpress.logistics.redefining.getprintinfos

{"code":41,"msg":"Invalid arguments:warehouse_order_query_d_t_os.id","request_id":"15pa3ea07jr5g"}

пытаюсь получить этикетку
23. user1756929 16.03.22 08:15 Сейчас в теме
(20) Привет! Занялись тоже интеграцией с Aliexpress. Оказалось, что для Почты России методов API нет! Они только в разработке, это ответила тех.поддержка. У вас как-то получилось создать "отправление" ?
22. user1730676 02.02.22 17:29 Сейчас в теме
Добрый день!
Пробовал создать в постмане логистический заказ методом "cainiao.global.logistic.order.create". В параметре "order_param" получилась длинная строка (там ведь JSON с массивом товаров, и товаров там немало) в результате сервер AliExpress выдал ошибку "413 FULL head" (The request is larger than the server is willing or able to process).
Попытка переместить содержимое параметра в тело запроса или в заголовок успеха не принесла - если из числа параметров исчезает "order_param", то AE ругается на его отсутствие, если же он там есть и в нём много товаров, то AE ругается на длину. Как вы обошли это ограничение? У меня нет 1С, поэтому не могу посмотреть в вашей обработке - может быть подскажете здесь?
Прикрепленные файлы:
24. bulaas 12.07.22 11:55 Сейчас в теме
Всем привет! Делаем интеграцию с Алиэкспресс Цайняо. Осталась единственная проблема с созданием логистического заказа. Может кто сталкивался или сможет подсказать. Метод cainiao.global.logistic.order.create
Вот такой JSON отправляем в параметре order_param

{
 "locale": "ru_RU",
 "trade_order_param": {
  "trade_order_id": 5030214802576570
 },
 "solution_param": {
  "solution_code": "AE_RU_MP_PUDO_PH3",
  "service_params": [
   {
    "code": "DOOR_PICKUP",
    "features": {
     "warehouse_code": "TRAN_STORE_30228135"
    }
   }
  ]
 },
 "package_params": [
  {
   "item_params": [
    {
     "item_id": "1005004038510516",
     "quantity": 1,
     "english_name": "Item",
     "local_name": "Товар 1,
     "unit_price": 104900,
     "sku": "4607039272376",
     "weight": 1,
     "currency": "RUB",
     "total_price": 104900,
     "item_features": [
      "cf_normal"
     ]
    }
   ]
  }
 ],
 "seller_info_param": {},
 "sender_param": {
  "seller_address_id": 410000092802
 },
 "returner_param": {
  "seller_address_id": 410000063544
 },
 "receiver_param": {
  "name": "Иванов_иван_иванович",
  "telephone": "9263821111",
  "address_param": {
   "country_code": "RU",
   "province": "Moskovskaya_obl",
   "city": "Mytishchi_g",
   "street": "",
   "detail_address": "5Post_(Пятерочка)___постамат_Мытищи,_4_я_Парковая_ул,_7_",
   "country_name": "Russia",
   "zip_code": "141011"
  }
 },
 "pickup_info_param": {
  "seller_address_id": 410000092802
 }
}
Показать


В ответ получаем такую ошибку:

{
 "cainiao_global_logistic_order_create_response": {
  "error_info": {
   "error_code": "P-011-0202-12-15-001",
   "error_msg": "solution [AE_RU_MP_PUDO_PH3] service line [PUDO] can not delivery from [917477839526000000] to [174]"
  },
  "request_id": "15rlidxakfvb6"
 }
}
Показать


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

Вот например данные лог заказа почти такого же заказа:
{
 "aliexpress_logistics_redefining_getonlinelogisticsinfo_resp­onse": {
  "current_page": 1,
  "result_list": {
   "result": [
    {
     "channel_code": "",
     "international_logistics_type": "AE_RU_MP_PUDO_PH3_30228135",
     "internationallogistics_id": "99880009164540",
     "lm_resource_code": "DISTRIBUTOR_30136016",
     "logistics_fee": {
      "amount": "0.00",
      "cent": 0,
      "currency_code": "CNY"
     },
     "logistics_fee_list": {},
     "logistics_service_list": {
      "logistics_service_dto": [
       {
        "code": "DOOR_PICKUP",
        "resource_code": "TRAN_STORE_30228135"
       }
      ]
     },
     "logistics_status": "pickup_transfer",
     "lp_number": "LP992430216874843",
     "online_logistics_id": 3200013113692,
     "order_id": 5030246575246570,
     "original_international_logistics_id": "99880009164540",
     "solution_code": "AE_RU_MP_PUDO_PH3"
    }
   ]
  },
  "total_page": 1,
  "request_id": "15s6ap227k868"
 }
}
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот