Осилил ли кто API Cainiao (Aliexpress ) ?
Всем привет.
Может есть какой то очень умный человек, кто осилил интеграцию с Ali ?
В частности вопрос такой, как сделать вложенность параметров в чертовом запросе ?
Если запрос содержит линейные параметры ( то есть по 1 ), то проблем нет, и вопросов к формату
нет...
Но как в этом сделать вложенность ?
К примеру
Может есть какой то очень умный человек, кто осилил интеграцию с 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 // вес посылки в граммах
}]
}
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Такого опыта нет, но предполагаю, что, если использовать метод ЗаписатьJSON, то:
Это будет структура в структуре.
А здесь: package_params - структура, в которой массив со структурой со значениями length, width и т.д.
"trade_order_param":{
"trade_order_id" : 1000000 // ID заказа покупателя на AliExpress
}
"trade_order_id" : 1000000 // ID заказа покупателя на AliExpress
}
Это будет структура в структуре.
"package_params":[{
"length" : 1 , // длина посылки в см
"width" : 2 , // ширина посылки в см
"height" : 3 , // высота посылки в см
"weight" : 4 // вес посылки в граммах
}]
"length" : 1 , // длина посылки в см
"width" : 2 , // ширина посылки в см
"height" : 3 , // высота посылки в см
"weight" : 4 // вес посылки в граммах
}]
А здесь: package_params - структура, в которой массив со структурой со значениями length, width и т.д.
(2) я честно пытался =) и JSON и все. но там проблема в том, что строка формируется , как Параметр:Ключ , в целом как и должно быть при form-urlencoded ... Это логично, поэтому у меня в голове просто не складывается, как можно сюда приписать структуру ... а есть где структура в структуре в структуре ... просто адская вложенность ...
И Али не хочет видеть в теле запроса JSON строку...
Причем, есть еще параметр подписи, который формируется на основе всех параметров в алфовитном порядке ... и как тут структуру применить, такой же аху... вопрос...
еще хохма в том, что они выложили модуль для 1С, в котором только часть методом ( которые я сделал ) , а вот где вложенности пошли ... как то они пропустили =)
И Али не хочет видеть в теле запроса JSON строку...
Причем, есть еще параметр подписи, который формируется на основе всех параметров в алфовитном порядке ... и как тут структуру применить, такой же аху... вопрос...
СтрокаЗапроса = "";
Для Каждого параметр из ПараметрыЗапроса Цикл
СтрокаЗапроса = СтрокаЗапроса + параметр.Ключ + "=" + КодироватьСтроку(параметр.Значение,СпособКодированияСтроки.КодировкаURL,"UTF-8") + "&";
КонецЦикла;
еще хохма в том, что они выложили модуль для 1С, в котором только часть методом ( которые я сделал ) , а вот где вложенности пошли ... как то они пропустили =)
(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.Закрыть();
Показать
(6)
И что это дает ?
Для понимания =) у меня нет проблем с создаем тела в JSON, любого вида.
У меня конркетно проблема, создать тело в виде строки из form-urlencoded.
К примеру вот строка, где параметры линейные, не с вложенностью
То есть, видим что каждому ключу, есть значение ... как будет выглядеть вложенность .. у меня фантазии не хватает.
Рез = Запись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
То есть, видим что каждому ключу, есть значение ... как будет выглядеть вложенность .. у меня фантазии не хватает.
(7) Ну в нормальных API можно передавать параметры в качестве тела запроса, а не только через адрес запроса...
Типа этого:
Хорошо бы, конечно, хотя бы на английском API глянуть...
Типа этого:
Запрос = Новый HTTPЗапрос(Адрес, Заголовки);
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);
Хорошо бы, конечно, хотя бы на английском API глянуть...
(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.Установка соединения",УровеньЖурналаРегистрации.Ошибка,,,ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
КонецФункции
ПоказатьТело , как раз состоит из данных параметров =) Такая длинная строка.
Если кто нарвется, пока что работает вот так, с 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(ЗаписьДжисон,Структура);
Возврат ЗаписьДжисон.Закрыть();
КонецФункции
Показать
Могу сказать, что работает ! Получилось из заказа на Алиэкспресс создать программно логистическое задание в Cainiao.
Но помучиться пришлось много, последовательно надо вызывать кучу методов, чтобы получить необходимые параметры для создания логистического задания а потом уже можно и бирку с данными задания получить !
Но помучиться пришлось много, последовательно надо вызывать кучу методов, чтобы получить необходимые параметры для создания логистического задания а потом уже можно и бирку с данными задания получить !
Вот пример того как работа с 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КИ)
КонецФункции
#КонецОбласти
Показать
Всем привет! Не могу разобраться, как работать по API шаблоном "FBS: Почта России и AliExpress". Мне нужно научится получать ярлык и накладную для отправления. Ни один из испробованных методов(aliexpress.logistics.redefining.getprintinfos, cainiao.global.handover.pdf.get) не отрабатывает. Может кто то подсказать, как решить данную проблему!? Спасибо!
Добрый день!
Пробовал создать в постмане логистический заказ методом "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С, поэтому не могу посмотреть в вашей обработке - может быть подскажете здесь?
Пробовал создать в постмане логистический заказ методом "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С, поэтому не могу посмотреть в вашей обработке - может быть подскажете здесь?
Прикрепленные файлы:
Всем привет! Делаем интеграцию с Алиэкспресс Цайняо. Осталась единственная проблема с созданием логистического заказа. Может кто сталкивался или сможет подсказать. Метод cainiao.global.logistic.order.create
Вот такой JSON отправляем в параметре order_param
В ответ получаем такую ошибку:
Пробовали в итоге и разные склады и разные логистические решение и остальные поля изменяли.
Вот например данные лог заказа почти такого же заказа:
Вот такой 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"
}
}
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот