0
Kelleron
26.02.20
✎
15:39
|
Всем добрый день!
Появилась очень интересная задача по интеграции 1с и Яндекс доставки. Но не получается написать корректный запрос, возвращает следующее: "error":"ERROR_WRONG_PARAMS"
Тут читаю хелп: , генерирую ключ и параметры согласно документации, значения параметров по алфавиту собираю в строку, добавляю API ключ, хеширую получившуюся строку в МД5.
вот код (но ключи ненастоящие, я их немного подправил чтобы реальные не выкладывать). Подскажите, пожалуйста, где косяк?
Функция ВыполнитьPOSTЗапрос()
//Тело POST-запроса
Параметр1="";//число
Параметр2="";//число
//Параметр3="";//число
Параметр4="";//сгенерированный
ЗащищенноеСоединение=Истина;
Параметр1 = "1234567";
Параметр2 = "123456";
APIkey = "1234567890f846ca9ebf7e1234567890";
//Параметр3 =
Параметр4 = Параметр1+Параметр2;
Параметр4 = ВычислитьMD5("" + Параметр1 + "" + Параметр2 + "" + APIkey);
ТелоPOSTЗапроса = "";
ТелоPOSTЗапроса = ТелоPOSTЗапроса + "&secret_key=" + Параметр4;
ТелоPOSTЗапроса = ТелоPOSTЗапроса + "&client_id=" + Параметр1;
ТелоPOSTЗапроса = ТелоPOSTЗапроса + "&sender_id=" + Параметр2;
//POST-запрос на сервер-приёмник
СерверПриемник = "delivery.yandex.ru"; //имя сервера без протокола (http) и порта
АдресСтраницыНаСервере = "/api/last/getSenderOrders"; //
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
Таймаут = 120;
SSL = ?(ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
НТТР = Новый HTTPСоединение(СерверПриемник,, , , , Таймаут, SSL);
Попытка
//Формируем HTTP запрос
ЗапросHTTP = Новый HTTPЗапрос(АдресСтраницыНаСервере, ЗаголовкиHTTP);
//HTTPЗапрос = Новый HTTPЗапрос("/test3.php", ЗаголовкиHTTP);
ЗапросHTTP.УстановитьТелоИзСтроки(ТелоPOSTЗапроса, КодировкаТекста.UTF8); //Устанавливает строку, из которого будет прочитано тело POST-запроса.
//Ответ от сервера получим в возвращаемом значении типа HTTPОтвет
ОтветHTTP = НТТР.ОтправитьДляОбработки(ЗапросHTTP);
Возврат ОтветHTTP.ПолучитьТелоКакСтроку();
Исключение
ТекстСообщения = НСтр("ru = 'Неудачная попытка соединения с '") + СерверПриемник + ": " + ОписаниеОшибки();
Сообщить(ТекстСообщения);
КонецПопытки;
КонецФункции // ВыполнитьPOSTЗапрос()
Функция ВычислитьMD5(Данные) Экспорт
ХэшированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
ХэшированиеДанных.Добавить(Данные);
Хэш = НРег(СтрЗаменить(ХэшированиеДанных.ХешСумма, " ", ""));
Возврат Хэш;
КонецФункции
|
|