Имя: Пароль:
1C
1С v8
HTTP запрос из 1с АПИ Приват 24
0 ildarian
 
09.10.15
16:18
Добрый день.
Такая проблема. Пишу запрос на приват 24 согласно их мануала в итоге получаю ошибку
"
Ошибка работы с Интернет:  Couldn't resolve host name
"
впервые столкнулся с подобной задачей.
вот исходный код
  АдресСкрипта = "https://api.privatbank.ua/p24api/rest_yur";;
  Запрос = "<?xml version=1.0 encoding=""UTF-8""?>
  |<request version=""1.0"">
  |  <merchant>
  |  <id>112371</id>
  |  <signature>oxJO5wyf2GG95783v6q39I8A47Z32571</signature>
  |  </merchant>
  |  <data>
  |  <oper>cmt</oper>
  |  <wait>0</wait>
  |  <test>0</test>
  |  <payment id=""112371"">
  |  <prop name=""year"" value=""2015"" />
  |  <prop name=""month"" value=""08"" />
  |  </payment>
  |  </data>
  |</request>";
  
  HTTPЗапрос = Новый HTTPЗапрос(Запрос);
  HTTPСоединение = Новый HTTPСоединение(АдресСкрипта);
  Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
В конечном итоге я должен получить xml в виде текста с параметрами. Может кто делал что-то подобное, помогите советом.
1 ildarian
 
09.10.15
16:20
поправка.

Вот код

    АдресСкрипта = "https://api.privatbank.ua/p24api/rest_yur";;
    Запрос = "<?xml version=1.0 encoding=""UTF-8""?>
    |<request version=""1.0"">
    |    <merchant>
    |        <id>112371</id>
    |        <signature>oxJO5wyf2GG95783v6q39I8A47Z32571</signature>
    |    </merchant>
    |    <data>
    |            <oper>cmt</oper>
    |            <wait>0</wait>
    |            <test>0</test>
    |        <payment id=""112371"">
    |            <prop name=""year"" value=""2015"" />
    |            <prop name=""month"" value=""08"" />
    |        </payment>
    |    </data>
    |</request>";
    
    HTTPЗапрос = Новый HTTPЗапрос(Запрос);
    HTTPСоединение = Новый HTTPСоединение(АдресСкрипта);
    Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
2 ДенисЧ
 
09.10.15
16:20
ping api.privatbank.ua
что говорит?
3 arccos6pi
 
09.10.15
16:21
(2) да какая разница,если у него код неверный
4 ildarian
 
09.10.15
16:22
не пингуется. мм, ладно. спасибо
5 arccos6pi
 
09.10.15
16:23
(4) ну не пингуется,и что?
при этом в браузере прекрасно открывается
6 sash-ml
 
09.10.15
16:25
прокси?
7 ildarian
 
09.10.15
16:26
(6) нет
8 arccos6pi
 
09.10.15
16:26
(0) где вы вообще пример отправки запроса такой нашли?
9 ildarian
 
09.10.15
16:27
сам написал, в интернете не нашел нужного примера
10 sash-ml
 
09.10.15
16:27
в HTTPСоединение не указано что нужно ssl, не?
11 arccos6pi
 
09.10.15
16:28
(9)  АдресСкрипта = "https://api.privatbank.ua/p24api/rest_yur";;
HTTPСоединение = Новый HTTPСоединение(АдресСкрипта);
это сразу не верно
12 arccos6pi
 
09.10.15
16:28
(10) да там и адрес целиком писать не надо
13 Redkiy
 
09.10.15
16:32
сервис откликается на GET из браузера
ответ: <error>empty request</error>

проверь
14 arccos6pi
 
09.10.15
16:33
(9)АдресСкрипта = "/p24api/rest_yur";
Запрос = "<?xml version=1.0 encoding=""UTF-8""?>

    |<request version=""1.0"">

    |    <merchant>

    |        <id>112371</id>

    |        <signature>oxJO5wyf2GG95783v6q39I8A47Z32571</signature>

    |    </merchant>

    |    <data>

    |            <oper>cmt</oper>

    |            <wait>0</wait>

    |            <test>0</test>

    |        <payment id=""112371"">

    |            <prop name=""year"" value=""2015"" />

    |            <prop name=""month"" value=""08"" />

    |        </payment>

    |    </data>

    |</request>";
HTTPСоединение = Новый HTTPСоединение("api.privatbank.ua",Истина);
ФайлОтвета = ПолучитьИмяВременногоФайла();
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,АдресСкрипта,ФайлОтвета);


как-то вот так должно это выглядеть
15 ildarian
 
09.10.15
16:36
та же ошибка
16 ildarian
 
09.10.15
16:37
что то мне подсказывает, что тут первоначально не в коде ошибка
17 sash-ml
 
09.10.15
16:39
в коде, запрос неправильно создан

Запрос = Новый HTTPЗапрос(РесурсНаСервере, Заголовки);
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
18 ildarian
 
09.10.15
16:45
так вроде сдвиг пошел

    АдресСкрипта = "/p24api/rest_yur";
    Запрос = "<?xml version=1.0 encoding=""UTF-8""?>
    |<request version=""1.0"">

    |    <merchant>

    |        <id>112371</id>

    |        <signature>oxJO5wyf2GG95783v6q39I8A47Z32571</signature>

    |    </merchant>

    |    <data>

    |            <oper>cmt</oper>

    |            <wait>0</wait>

    |            <test>0</test>

    |        <payment id=""112371"">

    |            <prop name=""year"" value=""2015"" />

    |            <prop name=""month"" value=""08"" />

    |        </payment>

    |    </data>

    |</request>";
    HTTPЗапрос = Новый HTTPЗапрос(АдресСкрипта);
    HTTPЗапрос.УстановитьТелоИзСтроки(Запрос);
    HTTPСоединение = Новый HTTPСоединение("api.privatbank.ua",Истина);
    ФайлОтвета = ПолучитьИмяВременногоФайла();
    Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,АдресСкрипта,ФайлОтвета);


шяс новая ошибка:
Каталог не обнаружен 'p24api\rest_yur'

хотя написано то "/p24api/rest_yur"
19 arccos6pi
 
09.10.15
16:48
(18) HTTPСоединение = Новый HTTPСоединение("api.privatbank.ua",Истина); вот здесь я ошибся
попробуйте HTTPСоединение = Новый HTTPСоединение("api.privatbank.ua",,,,,Истина);
20 sash-ml
 
09.10.15
16:55
адрессервера "api.privatbank.ua/p24api"
адресскрипта "/rest_yur"
попробуй так, упривата свои заморочки
21 arccos6pi
 
09.10.15
16:58
сделал я обработку из того что тут написал
у меня вот такая ошибка
http://f2.s.qip.ru/UdTRAgYK.png
22 zak555
 
09.10.15
17:00
приват -- это коломойского ?
23 ildarian
 
09.10.15
17:00
у меня получилось
вот код

    АдресСкрипта = "/rest_yur";
    Запрос = "<?xml version=1.0 encoding=""UTF-8""?>
    |<request version=""1.0"">

    |    <merchant>

    |        <id>112371</id>

    |        <signature>oxJO5wyf2GG95783v6q39I8A47Z32571</signature>

    |    </merchant>

    |    <data>

    |            <oper>cmt</oper>

    |            <wait>0</wait>

    |            <test>0</test>

    |        <payment id=""112371"">

    |            <prop name=""year"" value=""2015"" />

    |            <prop name=""month"" value=""08"" />

    |        </payment>

    |    </data>

    |</request>";
    HTTPЗапрос = Новый HTTPЗапрос(АдресСкрипта);
    HTTPЗапрос.УстановитьТелоИзСтроки(Запрос);
    HTTPСоединение = Новый HTTPСоединение("api.privatbank.ua/p24api",Истина);
    ФайлОтвета = ПолучитьИмяВременногоФайла();
    Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,АдресСкрипта,ФайлОтвета);

Только в переменную "Ответ" какая то херня попадет, а не то, что нужно, ну это уже нужно в банк звонить видать:( Всем спасибо
24 sash-ml
 
09.10.15
17:04
(23) не дозвонишься, покажи кусок ответа
25 sash-ml
 
09.10.15
17:07
(23) нафига тебе в <payment id=""112371""> циферки? да еще и неправильные, там пусто должно быть
26 ildarian
 
09.10.15
17:08
Это ИД мерчанта
27 ildarian
 
09.10.15
17:08
и он правильный хоть и тестовый
28 sash-ml
 
09.10.15
17:08
(26) нет, это ид платежа,
29 ildarian
 
09.10.15
17:10
а как тут файлы крепить ?
30 ildarian
 
09.10.15
17:13
короче вернуло тип данных "httpОтвет". Там 2 поля "Заголовки" и "Код состояния".
31 ildarian
 
09.10.15
17:14
Если кому интересно, то вот ссылка на описание их АПИ https://api.privatbank.ua/api-privat24/rest-yur.html
32 sash-ml
 
09.10.15
17:21
текстответа  = httpОтвет.ПолучитьТелоКакСтроку()
33 ildarian
 
09.10.15
17:23
неопределено
34 sash-ml
 
09.10.15
17:28
// ФайлОтвета = ПолучитьИмяВременногоФайла();
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);// ,АдресСкрипта,ФайлОтвета);
текстответа  = Ответ.ПолучитьТелоКакСтроку();
35 arccos6pi
 
09.10.15
17:29
(30) у тебя ответ лежит в файлответа
36 ildarian
 
09.10.15
17:38
можно как-то в коде получить текст ответа ?
37 arccos6pi
 
09.10.15
18:27
(36) код из (34) не работает?
38 ildarian
 
12.10.15
09:17
(37) тоже выдает "неопределено"
39 sash-ml
 
12.10.15
09:58
версия ХМЛ должна быть в кавычках
xml version=""1.0""
40 ildarian
 
12.10.15
10:13
подправил, результат тот же
41 sash-ml
 
12.10.15
11:16
+(19) подсказка была правильная.
(0) СП не читаем вообще?
HTTPСоединение (HTTPConnection)
По указанному серверу
Синтаксис:

Новый HTTPСоединение(<Сервер>, <Порт>, <ИмяПользователя>, <Пароль>, <Прокси>, <ЗащищенноеСоединение>)
42 Trushc
 
12.10.15
11:23
напиши мне на почту [email protected]. Я пару лет назад обмен с приватом делал - скину обработку
43 ildarian
 
12.10.15
11:34
(42) Спасибо, сейчас напишу
44 cw014
 
12.10.15
11:38
Заголовки пробовал ставить? Например "POST 1.1"?
45 cw014
 
12.10.15
11:38
Или Content-Type: application-xml???
46 cw014
 
12.10.15
11:39
И напоследок:

HTTPЗапрос.УстановитьТелоИзСтроки(Запрос,,ИспользованиеByteOrderMark.НеИспользовать);
47 ildarian
 
12.10.15
11:40
Сейчас такой код.

    АдресСкрипта = "/rest_yur";
    Запрос = "<?xml version=""1.0"" encoding=""UTF-8""?>
    |<request version=""1.0"">
    |    <merchant>
    |        <id>112371</id>
    |        <signature>oxJO5wyf2GG95783v6q39I8A47Z32571</signature>
    |    </merchant>
    |    <data>
    |            <oper>cmt</oper>
    |            <wait>0</wait>
    |            <test>0</test>
    |        <payment id=""112371"">
    |            <prop name=""year"" value=""2015"" />
    |            <prop name=""month"" value=""08"" />
    |        </payment>
    |    </data>
    |</request>";
    HTTPЗапрос = Новый HTTPЗапрос("api.privatbank.ua/p24api");
    HTTPЗапрос.УстановитьТелоИзСтроки(Запрос);
    HTTPСоединение = Новый HTTPСоединение("api.privatbank.ua",,,,,Истина);
    //HTTPСоединение.Пользователь = "112371";
    //HTTPСоединение.Пароль = "oxJO5wyf2GG95783v6q39I8A47Z32571";
    ФайлОтвета = ПолучитьИмяВременногоФайла();
    Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,ФайлОтвета);
    а = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);


В ответ попадает код "200" уже. Это значит, что подключение удачное. Но текста ответа нет. Наверно теперь уже нужно играться с параметрами.
48 sash-ml
 
12.10.15
12:10
(47) одно из двух, либо ты пишешь в ФайлОтвета, либо  ПолучитьТелоКакСтроку()
в твоем случае ответ в ФайлОтвета

СП подарить?
ПолучитьТелоКакСтроку(<Кодировка>)
Возвращаемое значение:

Неопределено - если при вызове методов ОтправитьДляОбработки или Получить был установлен параметр <ИмяВыходногоФайла>.
49 ildarian
 
12.10.15
12:23
Получилось! получил ответ в виде хмл.
Вот финальный код.

    АдресСкрипта = "https://api.privatbank.ua/p24api";;
    Запрос = "<?xml version=""1.0"" encoding=""UTF-8""?>
    |<request version=""1.0"">
    |    <merchant>
    |        <id>112371</id>
    |        <signature>oxJO5wyf2GG95783v6q39I8A47Z32571</signature>
    |    </merchant>
    |    <data>
    |            <oper>cmt</oper>
    |            <wait>0</wait>
    |            <test>0</test>
    |        <payment id=""112371"">
    |            <prop name=""year"" value=""2015"" />
    |            <prop name=""month"" value=""08"" />
    |        </payment>
    |    </data>
    |</request>";
    HTTPЗапрос = Новый HTTPЗапрос("api.privatbank.ua/p24api/rest_yur");
    HTTPЗапрос.УстановитьТелоИзСтроки(Запрос,КодировкаТекста.UTF8);
    HTTPСоединение = Новый HTTPСоединение("api.privatbank.ua",,,,,Истина);
    ФайлОтвета = ПолучитьИмяВременногоФайла();
    Ответ = HTTPСоединение.Получить(HTTPЗапрос);
    а = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
50 ildarian
 
12.10.15
12:24
строка
ФайлОтвета = ПолучитьИмяВременногоФайла();
лишняя
51 sash-ml
 
12.10.15
13:12
(50) это было еще в (34)
но с файлом ответа можно было бы сразу прочитать ХМЛ
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ФайлОтвета);
Пока ЧтениеXML.Прочитать() Цикл
    // Обработка узла XML
КонецЦикла;
52 ildarian
 
12.10.15
13:15
Спасибо всем, кто откликнулся
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn