Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Веб-сервисы и WCF
Войти
Регистрация
Восстановить пароль
 
 
NaGuWaL
15 / 15 / 0
Регистрация: 22.04.2016
Сообщений: 287
#1

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5) - C# WCF

04.05.2017, 15:29. Просмотров 25074. Ответов 545

Предыдущая тема: http://www.cyberforum.ru/web-services-wcf/thread1840159.html


И так мы Я и umatkot, Берёмся за реализацию всего этого ... безобразия, кто хочет присоединиться пишите в личку.

Ссылка на гидхаб проекта будет предоставлена после того как мы запилим начальную версию с более менее работающим функционалом и маном интеграции...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2017, 15:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5) (C# WCF):

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ
Здравствуйте! Передо мной стоит задача интеграции с системой ГИС ЖКХ...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4)
Предыдущая тема: http://www.cyberforum.ru/web-services-wcf/thread1800721.html ...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (3)
Предыдущая тема: http://www.cyberforum.ru/web-services-wcf/thread1776736.html ...

.NET 4.x Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (2)
Начало темы здесь: http://www.cyberforum.ru/web-services-wcf/thread1615223.html...

Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel
Решил создать отдельную тему, так как в теме Интеграция с ГИС ЖКХ. Подпись SOAP...

Осуществить подпись SOAP, по стандартам ГИС ГМП, принятого через TCP сокет
Здравствуйте. Требуется осуществить подпись SOAP, по стандартам ГИС ГМП,...

545
umatkot
55 / 55 / 2
Регистрация: 15.09.2011
Сообщений: 344
Завершенные тесты: 1
05.05.2017, 07:54 #2
Дело в том, что функционала много, на самом деле мы выложим вначале полностью рабочую базовую версию. Все, кто может воспользоваться - могут посмотреть на реализацию архитектуры - выделить слабые места, прокомментировать - что-либо добавить - это приветствуется. Реализовать всё это проблематично, так как итоговый продукт имеет размытые границы применения - он более может применяться как проксик (ГИC)SOAP - REST/ Операции могут все дублироваться в базу - так как есть цель все запросы логировать до такой степени детализации на сколько это возможно, чтобы при отсутствии с интернетом, можно было получать информацию из локальных баз.

Что планируется: Использовать код от hmm, он хорошо поработал над избавлением от КриптоПро.NET, использовать статью с хабры, в которой имеется возможность использовать библиотеку OpenSSL для реализации алгоритмов ГОСТ и сделать фундамент платформы, которая может быть полноценным ГИС ЖКХ прокси, но уже с иным уровнем сложности реализации доступа для пользователей.
0
bitc8
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 9
05.05.2017, 08:36 #3
Последнюю неделю работаю в сфере ЖКХ ) Ни у кого не работает загрузка/выгрузка фалообмена?
0
umatkot
55 / 55 / 2
Регистрация: 15.09.2011
Сообщений: 344
Завершенные тесты: 1
05.05.2017, 09:11 #4
bitc8, А что ТП?
0
bitc8
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 9
05.05.2017, 09:17 #5
Не понял что за ТП ?
0
umatkot
55 / 55 / 2
Регистрация: 15.09.2011
Сообщений: 344
Завершенные тесты: 1
05.05.2017, 15:52 #6
bitc8, техподдержка
0
hhmm
48 / 48 / 0
Регистрация: 01.04.2016
Сообщений: 309
05.05.2017, 20:59 #7
Цитата Сообщение от umatkot Посмотреть сообщение
использовать статью с хабры, в которой имеется возможность использовать библиотеку OpenSSL для реализации алгоритмов ГОСТ
В BouncyCastle уже есть реализация криптографии по ГОСТ, прототип я сейчас дописал и выложил. Расчет хэша работает и был мной проверен. Если кому-то нужно, то он может дописать реализацию подписи.
Но мне эта затея на настоящий момент кажется сомнительной, я не вижу большого смысла выковыривать приватный ключ из контейнера и перекладывать его в OpenSSL/BouncyCastle.

Моя цель была избавиться от глюков КриптоПро.NET, за прошедший месяц от клиентов нареканий нет.
0
CCAlek
4 / 4 / 0
Регистрация: 10.04.2017
Сообщений: 19
08.05.2017, 12:27 #8
Добрый день!

Вопрос наверно для кого то покажется глупым, но скоро кажись у меня мозг взорвется.

Есть например вот такой пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
var request4 = new gibs.importPaymentDocumentDataRequest
                {
                    RequestHeader = new gibs.RequestHeader
                    {
                        Date = DateTime.Now,
                        MessageGUID = Guid.NewGuid().ToString(),
                        Item = "badd8b79-d31f-4fbb-baf0-be921a52512e",
                        ItemElementName = Infrastructure.BillsService.ItemChoiceType2.orgPPAGUID
                        
                    },
                    importPaymentDocumentRequest = new gibs.importPaymentDocumentRequest
                    {
                        version = "10.0.1.1",
                        Id = CryptoConsts.CONTAINER_ID
                    }
                };
                var PaymentDocumentInformation = new gibs.PaymentDocumentType
                {
                    AddressInfo = new gibs.PaymentDocumentTypeAddressInfo
                    {
                        HeatedArea = 20,
                        HeatedAreaSpecified = true,
                        LivingPersonsNumber = 2,
                        LivingPersonsNumberSpecified = true,
                        ResidentialSquare = 40,
                        ResidentialSquareSpecified = true,
                        TotalSquare = 50,
                        TotalSquareSpecified = true
                    }
                };
                var PaymentDocument = new gibs.importPaymentDocumentRequestPaymentDocument
                {
                    AccountGuid = Guid.NewGuid().ToString(),
                    PaymentDocumentNumber = "123456",
                    AdvanceBllingPeriod = 11
                };
                PaymentDocument.Items = new object[] { PaymentDocumentInformation };
                var PaymentInformation = new gibs.importPaymentDocumentRequestPaymentInformation
                {
                    BankBIK = "04601593888",
                    operatingAccountNumber = "4070281060000000087788",
                    TransportGUID = Guid.NewGuid().ToString()
                };
                var WithdrawPaymentDocument = new gibs.importPaymentDocumentRequestWithdrawPaymentDocument
                {
                    PaymentDocumentID = "1",
                    TransportGUID = Guid.NewGuid().ToString()
                };
                //request4.importPaymentDocumentRequest.Items = new object[5] { (int)11, (short)16, (Gis.Infrastructure.BillsService.PaymentInformationKeyType)PaymentInformation, (Gis.Infrastructure.BillsService.PaymentDocumentType)PaymentDocument, WithdrawPaymentDocument };
                request4.importPaymentDocumentRequest.Items = new object[] { (int)11, (short)2016, PaymentInformation, PaymentDocument, WithdrawPaymentDocument };
В этом примере создаться (заполнится данными) один документ.
А как сделать так, чтобы можно было заполнить несколько документов? Вот например я извлекаю данные из БД в какой нибудь List<importPaymentDocument> и как из этого List заполнить объект request4.importPaymentDocumentRequest.Items? Если просто присваивать, то оно будет просто перезаписываться.

Добавлено через 15 секунд
0
bitc8
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 9
10.05.2017, 17:23 #9
А файлообмен все стоит. Беда и в том, чтобы обновить договор РСО требуется заново грузить этот файл. Вот засада то!

У кого грузит файло? Не важно кусками или целиком?
0
PROG74
0 / 0 / 0
Регистрация: 07.04.2017
Сообщений: 2
11.05.2017, 08:12 #10
Добрый день.
Экспорт истории показаний ПУ - exportMeteringDeviceHist.
Подскажите, какие параметры нужно в этот сервис подать, чтобы получить ТЕКУЩИЕ показания?
Подавал (одновременно):
1) ГУИД дома
2) Ресурсы (хол.вода, гор.вода)
3) Дата ввода показаний с.. по ..

В ответ получаю "EXP001000: Внутренняя ошибка"
0
kevik
0 / 0 / 0
Регистрация: 17.09.2015
Сообщений: 12
12.05.2017, 13:32 #11
Коллеги подскажите, что делаю не так?
Не хватает толку задать Критерии при экспорте списка договоров управления:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
            var service = new HouseManagementPortsTypeClient("HouseManagementPort");
            service.ClientCredentials.UserName.UserName = "sit";
            service.ClientCredentials.UserName.Password = "rZ_GG72XS^Vf55ZW";
            var request = new exportCAChDataRequest1
            {
                RequestHeader = new RequestHeader
                {
                    Item = param_orgPPAGUID, // заря
                    ItemElementName = ItemChoiceType.orgPPAGUID,
                    Date = DateTime.Now,
                    MessageGUID = Guid.NewGuid().ToString(),
                    IsOperatorSignature = true
                    //,IsOperatorSignatureSpecified=true
                },
                exportCAChRequest = new exportCAChRequest
                {
                    version = "10.0.1.2",
                    Id = CryptoConsts.CONTAINER_ID,
                    Criteria = new exportCAChRequestCriteriaType[]
                    {
                         Items = new string[] { "6141b1da-25a8-4c73-b05d-7890df7a1399" },
                         ItemsElementName = new Infrastructure.HouseManagementService.ItemsChoiceType13[] { ItemsChoiceType13.UOGUID }
                    }
                }
            };
Ругается на Items и ItemsElementName - не существуют в текущем контексте

Добавлено через 20 часов 20 минут
Разобрался.
0
NaGuWaL
15 / 15 / 0
Регистрация: 22.04.2016
Сообщений: 287
17.05.2017, 13:42  [ТС] #12
Коллеги, у кого работает обмен файлами с ГИС ЖКХ, отзовитесь. Что не так с запросом?
Код
REQUEST:
http://217.107.108.147:10082/ext-bus-file-store-service/rest/agreements/?upload

Date: Mon, 08 May 2017 22:46:37 GMT
Host: 217.107.108.147:10082
Content-Length: 0
Connection: Keep-Alive
Authorization: Basic c2l0OnJaX0dHNzJYU15WZjU1Wlc=
X-Upload-Dataprovider: f81f5928-d371-4735-ad6b-9516104acd53
X-Upload-Filename: test.zip
X-Upload-Length: 11351233
X-Upload-Part-Count: 3

RESPONSE:
HTTP/1.1 400 Bad Request
Server: nginx
Date: Tue, 09 May 2017 08:28:01 GMT
Content-Type: application/octet-stream
Content-Length: 39
Connection: keep-alive
Location: /ext-bus-file-store-service/rest/agreements

X-Upload-Error:FieldValidationException
0
ilya_klimov
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 5
19.05.2017, 11:44 #13
Добрый день, коллеги! Подскажите, пожалуйста! При попытке выполнить импорт платежа, выдаёт ошибку:
C#
1
2
3
System.ServiceModel.CommunicationException: "Ошибка сериализации одного из заголовков сообщения importNotificationsOfOrderExecutionRequest1: "Невозможно создать временный класс (результат=1).
error CS0030: Преобразование типа "Gis.PaymentAsync.PaymentDocument[]" в "Gis.PaymentAsync.PaymentDocument" невозможно
error CS0029: Неявное преобразование типа "Gis.PaymentAsync.PaymentDocument" в "Gis.PaymentAsync.PaymentDocument[]" невозможно
Код метода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public PaymentAsync.AckRequest SetNotificationsOfOrderExecution()
        {
            var service = new PaymentAsync.PaymentPortsTypeAsyncClient(this.Port);
            service.ClientCredentials.UserName.UserName = CryptoConsts.UserName;
            service.ClientCredentials.UserName.Password = CryptoConsts.Password;
            PaymentAsync.RequestHeader RequestHeader = new PaymentAsync.RequestHeader
            {
                Date = DateTime.Now,
                MessageGUID = Guid.NewGuid().ToString(),
                Item = Crypto.CryptoConsts.ORGPPAGUID,
                ItemElementName = PaymentAsync.ItemChoiceType.orgPPAGUID
                
            };
            PaymentAsync.importNotificationsOfOrderExecutionRequestNotificationOfOrderExecutionType pay = new PaymentAsync.importNotificationsOfOrderExecutionRequestNotificationOfOrderExecutionType
            {
                SupplierInfo = new PaymentAsync.NotificationOfOrderExecutionTypeSupplierInfo
                {
                    SupplierID = "3659847",
                    SupplierName = "Тест"
                },
                RecipientInfo = new PaymentAsync.NotificationOfOrderExecutionTypeRecipientInfo
                {
                    INN = "7176522337",
                    Item = new PaymentAsync.NotificationOfOrderExecutionTypeRecipientInfoLegal
                    {
                        Name = "OOO ТЕСТ",
                        KPP = "123456789"
                    },
                    PaymentInformation = new PaymentAsync.PaymentInformationType
                    {
                        RecipientINN = "7176522338",
                        RecipientKPP = "987456321",
                        BankName = "Тест",
                        PaymentRecipient = "315644444",
                        BankBIK = "315644448",
                        operatingAccountNumber = "12352145644444444444",
                        CorrespondentBankAccount = "31514515154444444444"
                    }
 
                },
                OrderInfo = new PaymentAsync.NotificationOfOrderExecutionTypeOrderInfo
                {
                    OrderID = "10475017799000003006201614682552",
                    OrderDate = DateTime.Now.Date,
                    OrderNum = "100500",
                    Amount = 1005001,
                    PaymentPurpose = "Тест",
                    Comment = "Тест",
                    PaymentDocumentID = "21da2e17-e543-4c73"
                },
                TransportGUID = Guid.NewGuid().ToString()
            };
            PaymentAsync.importNotificationsOfOrderExecutionRequest request = new PaymentAsync.importNotificationsOfOrderExecutionRequest
            {
                NotificationOfOrderExecutionType = new[] { pay },
                Id = CryptoConsts.CONTAINER_ID,
                version = "10.0.2.1"
 
            };
 
            PaymentAsync.AckRequest result = null;
            
            service.importNotificationsOfOrderExecution(RequestHeader,request, out result);
            return result;
        }
Как я понял, не получается сериализовать массив. Подскажите, как правильно это сделать?
0
Electronic-E2
12 / 12 / 1
Регистрация: 03.07.2015
Сообщений: 39
19.05.2017, 19:12 #14
Ошибка сериализации одного из заголовков сообщения importSupplierNotificationsOfOrderExecutionRequest1: "Невозможно создать временный класс (результат=1).
error CS0030: Преобразование типа "Gis.PaymentService.Async.PaymentDocument[]" в "Gis.PaymentService.Async.PaymentDocument" невозможно
error CS0029: Неявное преобразование типа "Gis.PaymentService.Async.PaymentDocument" в "Gis.PaymentService.Async.PaymentDocument[]" невозможно
". Подробнее см. InnerException.


Та же ошибка...
0
NaGuWaL
15 / 15 / 0
Регистрация: 22.04.2016
Сообщений: 287
23.05.2017, 11:14  [ТС] #15
Мы допиливаем реализацию файлового обмена....

Добавлено через 15 секунд
Мы допиливаем реализацию файлового обмена....
Ланит починил Обмен файлами....
0
Electronic-E2
12 / 12 / 1
Регистрация: 03.07.2015
Сообщений: 39
24.05.2017, 07:40 #16
http://webservices20.blogspot.ru/201...t-type-to.html

Косяк .Net

Убери в прокси PaymentServiceAsync.cs [][] (лишние двойные квадратные скобки) в блоке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public partial class getStateResultExportPaymentDocumentDetailsResult
    {
        
        private PaymentDocument[] chargeField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute(Order=0)]
        [System.Xml.Serialization.XmlArrayItemAttribute("PaymentDocument", typeof(PaymentDocument), IsNullable=false)]
        public PaymentDocument[] Charge
        {
            get
            {
                return this.chargeField;
            }
            set
            {
                this.chargeField = value;
            }
        }
    }
1
ilya_klimov
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 5
24.05.2017, 07:45 #17
Цитата Сообщение от Electronic-E2 Посмотреть сообщение
Косяк .Net

Убери в прокси PaymentServiceAsync.cs [][] (лишние двойные квадратные скобки) ...
Спасибо большое, помогло!
0
NaGuWaL
15 / 15 / 0
Регистрация: 22.04.2016
Сообщений: 287
24.05.2017, 17:39  [ТС] #18
первая версия много-поточного обмена завершена, во второй версии будут решены такие проблемы как Докачка и Дозагрузка частей БОЛЬШИХ файлов, Оптимизация загрузки Оперативной памяти...
0
NaGuWaL
15 / 15 / 0
Регистрация: 22.04.2016
Сообщений: 287
25.05.2017, 09:06  [ТС] #19
Весь цикл Загрузки\Выгрузки 6ти архивов разного размера(14-16mb)
0
Миниатюры
Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5)   Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5)  
kevinlexus
1 / 1 / 0
Регистрация: 13.10.2016
Сообщений: 55
25.05.2017, 10:07 #20
Скажите, у меня сегодня весь день тестовый сервер http://217.107.108.156:10082 отвечает:

ru.gosuslugi.dom.schema.integration.nsi_common_service.Fault: EXP002002: Превышено максимальное время обработки запроса

у кого нить так же?
0
25.05.2017, 10:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2017, 10:07
Привет! Вот еще темы с решениями:

Ошибки интеграции ГИС ЖКХ
Я много тут читал форум по интеграции ГИС. На старте, впрочем, как и в...

Как отправить XML через SOAP запрос (для работы ГИС ГМП)
Здравствуйте. гос учереждения обязали вносить начисления в некий ГИС ГМП. ...

Soap, Java, Гис ЖКХ
Добрый день! Имеет ли кто опыт работы с soap в Java? Поставлена задача наладить...

1С и ГИС ЖКХ. Интеграция
Доброго дня, коллеги! Я думаю многие слышали о такой ГИС, как ЖКХ. Друзья,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru