Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Liqpay API (интеграция)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
dravva
Добрый день.
УТП. Необходимо отправить запрос на возврат средств по платежу. Документация необходимо зарегистрироваться для просмотра ссылки
Проблема - в ответ получаю - "{"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);
Chernivcipss
У меня не получилось.
Ошибка {"code":"err_missing","err_code":"err_missing","err_description":"Required parameter not passed id","key":"id","result":"error","status":"error"}
am_1c
dravva @ 03.08.21, 19:36 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо, полностью рабочий фрагмент с учетом нижней корректировки "data=" -> "&data="
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.