1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-08 04:04:03 +02:00

CDEK: Получение заказа

This commit is contained in:
Anton 2024-10-11 21:10:49 +03:00
parent e008e7d7bf
commit 8f57790e02
7 changed files with 5432 additions and 4999 deletions

File diff suppressed because it is too large Load Diff

View File

@ -91,22 +91,75 @@
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, ТестовыйAPI = Ложь) Экспорт
Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, Знач ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа);
OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин);
URL = СформироватьURL("/orders", ТестовыйAPI);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", ОписаниеЗаказа);
Ответ = OPI_Инструменты.Post(URL, ОписаниеЗаказа, Заголовки);
Возврат Ответ;
КонецФункции
// Получить заказ
// Получает заказ по UUID
//
// Примечание:
// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// UUID - Строка - UUID заказа - uuid
// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция ПолучитьЗаказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID);
URL = СформироватьURL("/orders", ТестовыйAPI) + "/" + UUID;
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
// Получить заказ по номеру
// Получает заказ по номеру СДЭК или внутреннему номеру клиента
//
// Примечание:
// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// НомерЗаказа - Строка - Номер заказа - number
// Внутренний - Булево - Вид номера заказа. Истина > номер в базе клиента, Ложь > номер СДЭК - internal
// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция ПолучитьЗаказПоНомеру(Знач Токен, Знач НомерЗаказа, Знач Внутренний = Ложь, Знач ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Внутренний);
URL = СформироватьURL("/orders", ТестовыйAPI);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
ИмяПараметра = ?(Внутренний, "im_number", "cdek_number");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле(ИмяПараметра, НомерЗаказа, "Строка", Параметры);
Для Каждого ПолеЗаказа Из ОписаниеЗаказа Цикл
OPI_Инструменты.ДобавитьПоле(ПолеЗаказа.Ключ, ПолеЗаказа.Значение, "Текущий", Параметры);
КонецЦикла;
OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", Параметры);
Ответ = OPI_Инструменты.Post(URL, ОписаниеЗаказа, , Ложь);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
@ -330,4 +383,14 @@
КонецФункции
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Возврат Заголовки;
КонецФункции
#КонецОбласти

View File

@ -2003,6 +2003,9 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token" , ПараметрыТеста);
CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста);
CDEK_СоздатьЗаказ(ПараметрыТеста);
CDEK_ПолучитьЗаказ(ПараметрыТеста);
CDEK_ПолучитьЗаказПоНомеру(ПараметрыТеста);
КонецПроцедуры
@ -13644,6 +13647,125 @@
КонецПроцедуры
Процедура CDEK_СоздатьЗаказ(ПараметрыФункции)
Токен = ПараметрыФункции["CDEK_Token"];
ОписаниеЗаказа = Новый Структура;
ЛокацияОтправления = Новый Структура;
ЛокацияОтправления.Вставить("code" , "44");
ЛокацияОтправления.Вставить("city" , "Москва");
ЛокацияОтправления.Вставить("address", "пр. Ленинградский, д.4");
ЛокацияНазначения = Новый Структура;
ЛокацияНазначения.Вставить("code" , "270");
ЛокацияНазначения.Вставить("city" , "Новосибирск");
ЛокацияНазначения.Вставить("address", "ул. Блюхера, 32");
Получатель = Новый Структура;
Телефоны = Новый Массив;
Телефоны.Добавить(Новый Структура("number", "+79134637228"));
Получатель.Вставить("phones", Телефоны);
Получатель.Вставить("name" , "Иванов Иван");
Отправитель = Новый Структура("name", "Петров Петр");
Услуги = Новый Массив;
Услуги.Добавить(Новый Структура("code", "SECURE_PACKAGE_A2"));
Пакеты = Новый Массив;
Пакет = Новый Структура;
Позиции = Новый Массив;
Позиция = Новый Структура;
Оплата = Новый Структура;
Оплата.Вставить("value", 3000);
Позиция.Вставить("payment" , Оплата);
Позиция.Вставить("ware_key", "00055");
Позиция.Вставить("name" , "Товар");
Позиция.Вставить("cost" , 300);
Позиция.Вставить("amount" , 2);
Позиция.Вставить("weight" , 700);
Позиция.Вставить("url" , "www.item.ru");
Позиции.Добавить(Позиция);
Пакет.Вставить("items" , Позиции);
Пакет.Вставить("number" , "bar-001");
Пакет.Вставить("comment", "Упаковка");
Пакет.Вставить("height" , 10);
Пакет.Вставить("length" , 10);
Пакет.Вставить("weight" , "4000");
Пакет.Вставить("width" , 10);
Пакеты.Добавить(Пакет);
ОписаниеЗаказа.Вставить("from_location", ЛокацияОтправления);
ОписаниеЗаказа.Вставить("to_location" , ЛокацияНазначения);
ОписаниеЗаказа.Вставить("packages" , Пакеты);
ОписаниеЗаказа.Вставить("recipient" , Получатель);
ОписаниеЗаказа.Вставить("sender" , Отправитель);
ОписаниеЗаказа.Вставить("services" , Услуги);
ОписаниеЗаказа.Вставить("number" , "ddOererre7450813980068");
ОписаниеЗаказа.Вставить("comment" , "Новый заказ");
ОписаниеЗаказа.Вставить("tariff_code", 139);
ОписаниеЗаказа.Вставить("delivery_recipient_cost" , Новый Структура("value", 50));
ОписаниеЗаказа.Вставить("delivery_recipient_cost_adv", Новый Структура("sum,threshold", 3000, 200));
Результат = OPI_CDEK.СоздатьЗаказ(Токен, ОписаниеЗаказа, Истина, Истина);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьЗаказ", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат);
UUID = Результат["entity"]["uuid"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderUUID", UUID);
OPI_Инструменты.ДобавитьПоле("CDEK_OrderUUID", UUID, "Строка", ПараметрыФункции);
КонецПроцедуры
Процедура CDEK_ПолучитьЗаказ(ПараметрыФункции)
Токен = ПараметрыФункции["CDEK_Token"];
UUID = ПараметрыФункции["CDEK_OrderUUID"];
Результат = OPI_CDEK.ПолучитьЗаказ(Токен, UUID, Истина);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаказ", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат);
ВнутреннийНомер = Результат["entity"]["number"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderIMN", ВнутреннийНомер);
OPI_Инструменты.ДобавитьПоле("CDEK_OrderIMN", ВнутреннийНомер, "Строка", ПараметрыФункции);
КонецПроцедуры
Процедура CDEK_ПолучитьЗаказПоНомеру(ПараметрыФункции)
Токен = ПараметрыФункции["CDEK_Token"];
НомерЗаказа = ПараметрыФункции["CDEK_OrderIMN"];
Результат = OPI_CDEK.ПолучитьЗаказПоНомеру(Токен, НомерЗаказа, Истина, Истина);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаказПоНомеру", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -1765,6 +1765,21 @@
КонецПроцедуры
Процедура Проверка_СдэкЗаказ(Знач Результат) Экспорт
ОжидаетЧто(Результат["entity"]["uuid"]).Заполнено();
ОжидаетЧто(Результат["requests"]).ИмеетТип("Массив").Заполнено();
ОжидаетЧто(Результат["requests"][0]["state"]).Равно("ACCEPTED");
КонецПроцедуры
Процедура Проверка_СдэкДанныеЗаказа(Знач Результат) Экспорт
ОжидаетЧто(Результат["entity"]["uuid"]).Заполнено();
ОжидаетЧто(Результат["entity"]["number"]).Заполнено();
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -91,22 +91,75 @@
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, ТестовыйAPI = Ложь) Экспорт
Функция СоздатьЗаказ(Знач Токен, Знач ОписаниеЗаказа, Знач ИнтернетМагазин = Ложь, Знач ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьКоллекцию(ОписаниеЗаказа);
OPI_ПреобразованиеТипов.ПолучитьБулево(ИнтернетМагазин);
URL = СформироватьURL("/orders", ТестовыйAPI);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", ОписаниеЗаказа);
Ответ = OPI_Инструменты.Post(URL, ОписаниеЗаказа, Заголовки);
Возврат Ответ;
КонецФункции
// Получить заказ
// Получает заказ по UUID
//
// Примечание:
// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// UUID - Строка - UUID заказа - uuid
// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция ПолучитьЗаказ(Знач Токен, Знач UUID, Знач ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(UUID);
URL = СформироватьURL("/orders", ТестовыйAPI) + "/" + UUID;
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
Ответ = OPI_Инструменты.Get(URL, , Заголовки);
Возврат Ответ;
КонецФункции
// Получить заказ по номеру
// Получает заказ по номеру СДЭК или внутреннему номеру клиента
//
// Примечание:
// Метод в документации API: [Информация о заказе](@api-docs.cdek.ru/29923975.html)
//
// Параметры:
// Токен - Строка - Токен авторизации - token
// НомерЗаказа - Строка - Номер заказа - number
// Внутренний - Булево - Вид номера заказа. Истина > номер в базе клиента, Ложь > номер СДЭК - internal
// ТестовыйAPI - Булево - Флаг использования API для тестовых запросов - testapi
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от CDEK
Функция ПолучитьЗаказПоНомеру(Знач Токен, Знач НомерЗаказа, Знач Внутренний = Ложь, Знач ТестовыйAPI = Ложь) Экспорт
OPI_ПреобразованиеТипов.ПолучитьБулево(Внутренний);
URL = СформироватьURL("/orders", ТестовыйAPI);
Заголовки = СоздатьЗаголовкиЗапроса(Токен);
ИмяПараметра = ?(Внутренний, "im_number", "cdek_number");
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле(ИмяПараметра, НомерЗаказа, "Строка", Параметры);
Для Каждого ПолеЗаказа Из ОписаниеЗаказа Цикл
OPI_Инструменты.ДобавитьПоле(ПолеЗаказа.Ключ, ПолеЗаказа.Значение, "Текущий", Параметры);
КонецЦикла;
OPI_Инструменты.ДобавитьПоле("type", ?(ИнтернетМагазин, 1, 2), "Число", Параметры);
Ответ = OPI_Инструменты.Post(URL, ОписаниеЗаказа, , Ложь);
Ответ = OPI_Инструменты.Get(URL, Параметры, Заголовки);
Возврат Ответ;
@ -330,4 +383,14 @@
КонецФункции
Функция СоздатьЗаголовкиЗапроса(Знач Токен)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Возврат Заголовки;
КонецФункции
#КонецОбласти

View File

@ -1765,6 +1765,21 @@
КонецПроцедуры
Процедура Проверка_СдэкЗаказ(Знач Результат) Экспорт
ОжидаетЧто(Результат["entity"]["uuid"]).Заполнено();
ОжидаетЧто(Результат["requests"]).ИмеетТип("Массив").Заполнено();
ОжидаетЧто(Результат["requests"][0]["state"]).Равно("ACCEPTED");
КонецПроцедуры
Процедура Проверка_СдэкДанныеЗаказа(Знач Результат) Экспорт
ОжидаетЧто(Результат["entity"]["uuid"]).Заполнено();
ОжидаетЧто(Результат["entity"]["number"]).Заполнено();
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -2003,6 +2003,9 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("CDEK_Token" , ПараметрыТеста);
CDEK_ПолучитьОписаниеЗаказа(ПараметрыТеста);
CDEK_СоздатьЗаказ(ПараметрыТеста);
CDEK_ПолучитьЗаказ(ПараметрыТеста);
CDEK_ПолучитьЗаказПоНомеру(ПараметрыТеста);
КонецПроцедуры
@ -13644,6 +13647,125 @@
КонецПроцедуры
Процедура CDEK_СоздатьЗаказ(ПараметрыФункции)
Токен = ПараметрыФункции["CDEK_Token"];
ОписаниеЗаказа = Новый Структура;
ЛокацияОтправления = Новый Структура;
ЛокацияОтправления.Вставить("code" , "44");
ЛокацияОтправления.Вставить("city" , "Москва");
ЛокацияОтправления.Вставить("address", "пр. Ленинградский, д.4");
ЛокацияНазначения = Новый Структура;
ЛокацияНазначения.Вставить("code" , "270");
ЛокацияНазначения.Вставить("city" , "Новосибирск");
ЛокацияНазначения.Вставить("address", "ул. Блюхера, 32");
Получатель = Новый Структура;
Телефоны = Новый Массив;
Телефоны.Добавить(Новый Структура("number", "+79134637228"));
Получатель.Вставить("phones", Телефоны);
Получатель.Вставить("name" , "Иванов Иван");
Отправитель = Новый Структура("name", "Петров Петр");
Услуги = Новый Массив;
Услуги.Добавить(Новый Структура("code", "SECURE_PACKAGE_A2"));
Пакеты = Новый Массив;
Пакет = Новый Структура;
Позиции = Новый Массив;
Позиция = Новый Структура;
Оплата = Новый Структура;
Оплата.Вставить("value", 3000);
Позиция.Вставить("payment" , Оплата);
Позиция.Вставить("ware_key", "00055");
Позиция.Вставить("name" , "Товар");
Позиция.Вставить("cost" , 300);
Позиция.Вставить("amount" , 2);
Позиция.Вставить("weight" , 700);
Позиция.Вставить("url" , "www.item.ru");
Позиции.Добавить(Позиция);
Пакет.Вставить("items" , Позиции);
Пакет.Вставить("number" , "bar-001");
Пакет.Вставить("comment", "Упаковка");
Пакет.Вставить("height" , 10);
Пакет.Вставить("length" , 10);
Пакет.Вставить("weight" , "4000");
Пакет.Вставить("width" , 10);
Пакеты.Добавить(Пакет);
ОписаниеЗаказа.Вставить("from_location", ЛокацияОтправления);
ОписаниеЗаказа.Вставить("to_location" , ЛокацияНазначения);
ОписаниеЗаказа.Вставить("packages" , Пакеты);
ОписаниеЗаказа.Вставить("recipient" , Получатель);
ОписаниеЗаказа.Вставить("sender" , Отправитель);
ОписаниеЗаказа.Вставить("services" , Услуги);
ОписаниеЗаказа.Вставить("number" , "ddOererre7450813980068");
ОписаниеЗаказа.Вставить("comment" , "Новый заказ");
ОписаниеЗаказа.Вставить("tariff_code", 139);
ОписаниеЗаказа.Вставить("delivery_recipient_cost" , Новый Структура("value", 50));
ОписаниеЗаказа.Вставить("delivery_recipient_cost_adv", Новый Структура("sum,threshold", 3000, 200));
Результат = OPI_CDEK.СоздатьЗаказ(Токен, ОписаниеЗаказа, Истина, Истина);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьЗаказ", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_СдэкЗаказ(Результат);
UUID = Результат["entity"]["uuid"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderUUID", UUID);
OPI_Инструменты.ДобавитьПоле("CDEK_OrderUUID", UUID, "Строка", ПараметрыФункции);
КонецПроцедуры
Процедура CDEK_ПолучитьЗаказ(ПараметрыФункции)
Токен = ПараметрыФункции["CDEK_Token"];
UUID = ПараметрыФункции["CDEK_OrderUUID"];
Результат = OPI_CDEK.ПолучитьЗаказ(Токен, UUID, Истина);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаказ", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат);
ВнутреннийНомер = Результат["entity"]["number"];
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("CDEK_OrderIMN", ВнутреннийНомер);
OPI_Инструменты.ДобавитьПоле("CDEK_OrderIMN", ВнутреннийНомер, "Строка", ПараметрыФункции);
КонецПроцедуры
Процедура CDEK_ПолучитьЗаказПоНомеру(ПараметрыФункции)
Токен = ПараметрыФункции["CDEK_Token"];
НомерЗаказа = ПараметрыФункции["CDEK_OrderIMN"];
Результат = OPI_CDEK.ПолучитьЗаказПоНомеру(Токен, НомерЗаказа, Истина, Истина);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаказПоНомеру", "CDEK");
OPI_ПолучениеДанныхТестов.Проверка_СдэкДанныеЗаказа(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти