Добрый день.
УТП. Необходимо отправить запрос на возврат средств по платежу. Документация [необходимо зарегистрироваться для просмотра ссылки]
Проблема - в ответ получаю - "{"code":"err_missing","err_code":"err_missing","err_description":"Required parameter not passed data","key":"data","result":"error","status":"error"}"
Фрагмент кодаУРЛСайта = "liqpay.ua";
ПутьЗапроса = "/api/request";
СтруктураЗапроса = Новый Структура;
СтруктураЗапроса.Вставить("public_key",public_key);
СтруктураЗапроса.Вставить("version","3");
СтруктураЗапроса.Вставить("action","refund");
СтруктураЗапроса.Вставить("amount","100");
СтруктураЗапроса.Вставить("order_id","order_id_1");
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет)); ЗаписатьJSON(ЗаписьJSON,СтруктураЗапроса);
СтрокаJSON = ЗаписьJSON.Закрыть();
ДвоичныеДанныеСтроки = ПолучитьДвоичныеДанныеИзСтроки(СтрокаJSON);
ДатаBase64 = Base64Строка(ДвоичныеДанныеСтроки);
ДатаBase64 = СтрЗаменить(ДатаBase64, Символы.ВК, ""); // убираем ВК
ДатаBase64 = СтрЗаменить(ДатаBase64, Символы.ПС, ""); // убираем ПС
ХД = Новый ХешированиеДанных(ХешФункция.SHA1);
ХД.Добавить(private_key);
ХД.Добавить(ДатаBase64);
ХД.Добавить(private_key);
ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "base64Binary");
ДвоичныеДанные = ФабрикаXDTO.Создать(ТипДвоичныеДанные,ХД.ХешСумма);
СигнатураBase64 = ДвоичныеДанные.ЛексическоеЗначение;
Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
Соединение = Новый HTTPСоединение(УРЛСайта, , , , , , Новый ЗащищенноеСоединениеOpenSSL());
HTTPЗапрос =
Новый HTTPЗапрос(
ПутьЗапроса
, Заголовки
)
;
HTTPЗапрос.УстановитьТелоИзСтроки("data="+ДатаBase64+"&signature="+СигнатураBase64);
HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
СтрокаОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Сообщить(СтрокаОтвета);
Думаю что проблема именно в передаче параметров, потому как та же ошибка и для других "action" - получение реестра или создание платежа
Может у кого-то есть опыт и может дать пример правильного составления запроса ?
Заранее спасибо !
dravva @ Сегодня, 17:42

,
похоже разобрался сам
вместо
HTTPЗапрос.УстановитьТелоИзСтроки("data="+ДатаBase64+"&signature="+СигнатураBase64);
нужно (добавить &)
HTTPЗапрос.УстановитьТелоИзСтроки("&data="+ДатаBase64+"&signature="+СигнатураBase64);
Сообщение отредактировал Vofka - 04.08.21, 8:48