Имя: Пароль:
1C
1С v8
Smartway интеграция с УПП
0 asder117
 
28.09.21
17:47
Доброго времени суток. имеем на борту УПП 1.3. Руководство решило делать интеграцию с Smartway по билетам и гостиницам и командировкам
Кто-нибудь пробовал делать интеграцию по api с такой системой? Поделитесь
В api надо передать запрос типа:
{
    "jsonrpc": "2.0",
    "id": "777",
    "method": "trip.get_by_range",
    "params":
        {
            "authorization": {"username": "[email protected]", "password": "example"},
            "query": {
                "start_date": "2019-06-01",
                "end_date": "2019-06-15"
            }
    }
}
В ответ получить список поездок. Как этот запрос впихнуть и отправить не пойму. методы использовал разные.
Пытаюсь решить так но ничего не приходит в ответ:
Процедура ПолучитьПоездкиНаСервере()
    // Вставить содержимое обработчика.
     СерверПриемник = "api.smartway.today";
АдресСтраницыНаСервере = "v2/trip.get_by_range";
Таймаут = 120;
HTTP = Новый HTTPСоединение(СерверПриемник,,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗаголовокЗапросаHTTP = Новый Соответствие();
ЗаголовокЗапросаHTTP.Вставить("Content-Type: ", "application/json-rpc");
ЗаголовокЗапросаHTTP.Вставить("Accept", "application/json");
ЗаголовокЗапросаHTTP.Вставить("Accept-Language", "ru");

HTTPЗапрос = Новый HTTPЗапрос(АдресСтраницыНаСервере, ЗаголовокЗапросаHTTP);
СтрокаJSON = "{
|    ""jsonrpc"": ""2.0"",
|    ""id"": ""777"",
|    ""method"": ""trip.get_by_range"",
|    ""params"": {""authorization"": {""username"": ""************"", ""password"": ""***************""},
|    ""query"":{""start_date"": ""2021-07-01"",""end_date"": ""2021-09-19""}}}";

//"jsonrpc": "2.0",
//    "id": "777",
//    "method": "trip.get_by_range",
//    "params":
//        {
//            "authorization": {"username": "[email protected]", "password": "example"},
//            "query": {
//                "start_date": "2019-06-01",
//                "end_date": "2019-06-15"
//            }
//    }
//}
    //    ЗаголовокЗапроса = Новый Соответствие();
    //ЗаголовокЗапроса.Вставить("Content-Type", "application/json");
    //ЗаголовокЗапроса.Вставить("Accept", "application/json");
    //ЗаголовокЗапроса.Вставить("Accept-Language", "ru");
    //ЗаголовокЗапроса.Вставить("X-Client-ID", "(указываю ID)");
    //ЗаголовокЗапроса.Вставить("X-API-Key", "(указываю API ключ)");
    //HTTP = Новый HTTPСоединение("fleet-api.taxi.yandex.net",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    //ЗапросPOST = Новый HTTPЗапрос("/v1/parks/cars/list", ЗаголовокЗапроса);
    //ЗапросPOST.УстановитьИмяФайлаТела("C:\Users\Рабочий стол\example.json");
    //Результат = HTTP.Получить(ЗапросPOST);
    

    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON,,);
    ФайлРезультат = ПолучитьИмяВременногоФайла();
    HTTP.ОтправитьДляОбработки(HTTPЗапрос,ФайлРезультат);
    ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
    ТекстовыйФайлОтвета.Прочитать(ФайлРезультат, КодировкаТекста.UTF8);
    СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();    
    Сообщить(СтрокаОтветаСервера);
КонецПроцедуры
Может кто подскажет в этом случае где ошибка порылась?
1 Dmitrii
 
гуру
28.09.21
18:15
(0) >> Кто-нибудь пробовал делать интеграцию по api с такой системой? Поделитесь.

1С пробовала. В типовых БП 3, УТ 11, ЗУП 3, ERP 2.5 точно оно есть. Открой, да посмотри.
https://its.1c.ru/db/ut115doc#bookmark:commandstaff:CommandStaff
2 asder117
 
28.09.21
18:18
(1) там не по api. а меня интересует api
За инфу спасибо но я это уже все перечитал
3 sitex
 
naïve
28.09.21
18:39
(2) Лучше ссылку на Api скинь чтоб почитать . А то ты передаешь params" уже не правильно передаешь
4 asder117
 
28.09.21
18:55
5 asder117
 
28.09.21
18:57
(3) Спасибо заранее
6 Ёпрст
 
28.09.21
19:42
(0)
На вот, развлекайся. 200 возвращает, правда, авторизацию не проходит.. Подставишь, че те там надо. На выходе имеешь структуру из жсона.


    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.ПроверятьСтруктуру = Ложь;
    ЗаписьJSON.УстановитьСтроку();
    СтруктураЗапроса = Новый Структура;
    СтруктураЗапроса.Вставить("id","777");
    СтруктураЗапроса.Вставить("method","trip.get_by_range");
    СтруктураЗапроса.Вставить("params",Новый Структура("authorization,query",Новый Структура("username,password","[email protected]","example"),Новый Структура("start_date,end_date",ТекущаяДата(),ТекущаяДата())));
    ЗаписатьJSON(ЗаписьJSON,СтруктураЗапроса);
    СтрокаJSON = ЗаписьJSON.Закрыть();
    HTTPСоединение = Новый HTTPСоединение("api.smartway.today",443, , , , , Новый ЗащищенноеСоединениеOpenSSL);
    HTTPЗапрос = Новый HTTPЗапрос("/v2");
    HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON,КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Сообщить(""+HTTPОтвет.КодСостояния+" "+HTTPОтвет.ПолучитьТелоКакСтроку());
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(HTTPОтвет.ПолучитьТелоКакСтроку());
    Структура = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
7 Ёпрст
 
28.09.21
19:42
+ ну и адрес, не тестового, а реального сервиса.
8 Ёпрст
 
28.09.21
19:42
подставь
9 sitex
 
naïve
28.09.21
19:52
(5) В (6) уже все есть.
10 asder117
 
28.09.21
20:20
(7) Спасибо попробую
11 asder117
 
28.09.21
22:47
(9) (7) Спасибо уважаемые допиливаю теперь всю обработку
12 Krendel
 
29.09.21
00:03
посмотри ЕРП, там же реализовано