Получение расчетной стоимости доставки по API Яндекс.Доставка (b2b.taxi.yandex.net)

1. rid636674 53 22.09.21 19:50 Сейчас в теме
На сайте яндекса есть описание: https://yandex.ru/dev/logistics/api/ref/v1/estimate/IntegrationV1CheckPrice­.html

Я имею 2 пары координат, это откуда взять товар(долгота и широта) и куда отвезти(долгота и широта).

Токен я получил.

Вот тестовая процедура:
&НаКлиенте
Процедура ПолучитьЦенуДоставки(Команда)
	
	Сервер  = "b2b.taxi.yandex.net";
	Адрес   = "b2b/cargo/integration/v1/check-price";

	
	ТелоЗапроса = "{
	|	""items"": [
	|	{
	|	""quantity"": 1,
	|	""size"": {
	|	""height"": 0.05,
	|	""length"": 0.15,
	|	""width"": 0.1
	|	},
	|	""weight"": 2.105
	|	}
	|	],
	|	""requirements"": {
	|	""cargo_loaders"": 1,
	|	""cargo_type"": ""lcv_m"",
	|	""pro_courier"": false,
	|	""taxi_class"": ""cargo""
	|	},
	|	""skip_door_to_door"": false
	|}";
	
	Oauth = "OAuth oauth_token=""AQAAAAADUfO2AAdkUhSK1tBqW0Unrm-_SYKwKzc"", oauth_client_id=""46ed3c09bd99497299662bf8cc8df260""";
	ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
	Соединение = Новый HTTPСоединение(Сервер,,,,,,ЗащищенноеСоединение);
	
	Заголовки = Новый Соответствие;
	
	Заголовки.Вставить("Accept-Language", "string");   
	Заголовки.Вставить("Authorization", Oauth);  
	
	Запрос = Новый HTTPЗапрос(Адрес, Заголовки);
	Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
	
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
	Если Ответ.КодСостояния = 200 Тогда
		
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
		
		Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
		
		Для Каждого стр Из Данные Цикл
			Результат =""+ Результат+стр.Значение+"="+стр.Ключ+Символы.ВК;   
		КонецЦикла;	 
		Сообщить("Результат:"+Результат);
	Иначе
		Если Ответ.КодСостояния = 401  Тогда
			Сообщить("Ресурс API вызван без авторизационных данных, сервер Маркета возвратил HTTP-статус 401 Unauthorized");
		Иначе
			Сообщить(Ответ.КодСостояния);
		КонецЕсли;	
		
	КонецЕсли;
КонецПроцедуры
Показать


Нужна помощь по следующим вопросам:
1) Возвращает все время 401 ошибку.
2) Куда и как мне в примере ввести координаты откуда и куда.
Вознаграждение за ответ
Показать полностью
Найденные решения
6. jenekstar 03.10.21 02:49 Сейчас в теме +10 $m
Здравствуйте,
Тут 2 варианта т.к. ошибка говорит о том, что вы не можете авторизоваться:
1. В параметрах Http-соединения укажите логин и пароль от личного кабинета, скорее всего в этом ошибка, т.к. токен вы передаете для доступа к самой функции откуда запрашиваете данные, а на сервере не проходите по логину и паролю.
[Скрин.png]
2. Некорректный токен, попробуйте проделать все еще раз по инструкции и получить рабочий токен.

Проверьте сначала 1 потом 2, я думаю у вас все получится. Обработку для проверки прилагаю [РассчетЯндексДоставки.epf].
Прикрепленные файлы:
РассчетЯндексДоставки.epf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 22.09.21 20:14 Сейчас в теме +3 $m
(1)
Oauth = "OAuth oauth_token=""AQAAAAADUfO2AAdkUhSK1tBqW0Unrm-_SYKwKzc"", oauth_client_id=""46ed3c09bd99497299662bf8cc8df260""";

Это не правильно. От этого ошибка 401.
Должно быть так:
Oauth = "Bearer AQAAAAADUfO2AAdkUhSK1tBqW0Unrm-_SYKwKzc";


Координаты вводятся в массиве, перед ""skip_door_to_door"".
"route_points": [
    {
      "coordinates": [
        Долгота1,
        Широта1
      ]
    },
     {
      "coordinates": [
        Долгота2,
        Широта2
      ]
    }
  ],
Показать

Соответственно вместо Долгота и Широта подставить нужные координаты.


Еще вот это не правильно:
Заголовки.Вставить("Accept-Language", "string");

в документации string означает строковый тип, а не значение string. Т.е. должно быть строковое значение языка.
Можно попробовать так:
Заголовки.Вставить("Accept-Language", "ru");
3. rid636674 53 22.09.21 21:58 Сейчас в теме
Спасибо, за подсказу, но к сожалению все равно выходит 401.
Прикрепленные файлы:
тестAPIЯндексДоставка.epf
4. spacecraft 22.09.21 23:30 Сейчас в теме +1 $m
(3) токен актуальный ?
Токен вообще от яндекс.доставка? Токен от других сервисов яндекса не подходит.
Инструкция получения нужного токе описана в документации:
https://yandex.ru/dev/logistics/api/about/access.html
5. slavyan_arena 23.09.21 06:04 Сейчас в теме
(1)
Здравствуйте.

Если у вас передаются координаты то они должны иметь примерно такой вид: "[[0.1,0.2],[0.11,0.12]]"
первая точка отправления, вторая точка доставки.

Ответ.КодСостояния = 200


в коде состояния разве не строка?

и я бы поставил точку останова на этой строке и посмотрел что содержится в ответе, там можно результат смотреть возвращаемого запроса от яндекса
7. jenekstar 03.10.21 03:33 Сейчас в теме
(1)
Куда и как мне в примере ввести координаты откуда и куда.


Координаты в обработке [РассчетЯндексДоставки.epf](6) добавляйте в таблицу координат первая строка откуда забрать, вторая куда отвезти.
6. jenekstar 03.10.21 02:49 Сейчас в теме +10 $m
Здравствуйте,
Тут 2 варианта т.к. ошибка говорит о том, что вы не можете авторизоваться:
1. В параметрах Http-соединения укажите логин и пароль от личного кабинета, скорее всего в этом ошибка, т.к. токен вы передаете для доступа к самой функции откуда запрашиваете данные, а на сервере не проходите по логину и паролю.
[Скрин.png]
2. Некорректный токен, попробуйте проделать все еще раз по инструкции и получить рабочий токен.

Проверьте сначала 1 потом 2, я думаю у вас все получится. Обработку для проверки прилагаю [РассчетЯндексДоставки.epf].
Прикрепленные файлы:
РассчетЯндексДоставки.epf
8. rid636674 53 03.10.21 13:45 Сейчас в теме
Спасибо! Вся проблема была в токене, я делал какой то другой.
Оставьте свое сообщение

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