Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы, WCF
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/501: Рейтинг темы: голосов - 501, средняя оценка - 4.71
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
22.12.2016, 15:02
Студворк — интернет-сервис помощи студентам
Меня тех поддержка прям осчастливила.
Заявку подал 08 дек 2016 г., ответ получил только-что.


Обращение 08.12.2016
Тема: Ошибка выполнение API функцию exportPaymentDocumentData .

В личном кабинете на СИТ-01 создали платёжный документ.Выполняем API функцию exportPaymentDocumentData . В ответ от СИТ-01 получаем: "Внутренняя ошибка". Invalid content was found starting with element 'ns13:ServiceCharge'. One of '{"http://dom.gosuslugi.ru/schema/integration/bills/":CalcExplanation}' is expected.
Гис с ошибкой формирует ответный XML, так как cекция ServiceCharge и тег CalcExplanation должны быть в ответном XML.В запросе их нет и не должно быть.
Ответ тех поддержки 22.12.2016
Информация по Вашему обращению передана техническим специалистам. Изменение запланировано в версии системы: 11.1.0
О выполнении работ по Вашему обращению Вам будет направлено дополнительное информационное уведомление.

Ошибку можно обойти, если в ПД заполнять поле CalcExplanation.
Капитан очевидность, блин. Даже не знаю, как реагировать. Если б я 8 дек НАШЁЛ где это поле "Порядок расчётов" при заполнении ПД в ЛК, я б вообще не обращался в тех поддержку.

Кто-нибудь, ТКНИТЕ пальцем, где оно при заполнении ПД в ЛК. Не в шаблоне, а именно в ЛК.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2016, 15:02
Ответы с готовыми решениями:

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

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ
Здравствуйте! Передо мной стоит задача интеграции с системой ГИС ЖКХ (https://dom.gosuslugi.ru/) программой, написанной на языке...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5)
Предыдущая тема: https://www.cyberforum.ru/web-services-wcf/thread1840159.html И так мы Я и umatkot, Берёмся за реализацию всего этого...

718
 Аватар для hhmm
67 / 58 / 1
Регистрация: 01.04.2016
Сообщений: 346
22.12.2016, 20:44
Цитата Сообщение от Zmeishe Посмотреть сообщение
Кто-нибудь, ТКНИТЕ пальцем, где оно при заполнении ПД в ЛК. Не в шаблоне, а именно в ЛК
Смотрите на это шире, а ГИС ЖКХ сейчас есть три разных интерфейса к одной БД, с тремя разными наборами валидаторов:

1. Личный кабинет
2. Файлы Excel
3. легковесная (синоним - рукожопая) интеграция

Добавлено через 1 минуту
Цитата Сообщение от Zmeishe Посмотреть сообщение
Выполняем API функцию exportPaymentDocumentData
...
Цитата Сообщение от Zmeishe Посмотреть сообщение
Ошибку можно обойти, если в ПД заполнять поле CalcExplanation.

Интересно, чтобы они ответили банку, который пытается получить документ созданный поставщиком информации?
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
23.12.2016, 07:29
Цитата Сообщение от muf Посмотреть сообщение
Подскажите, можно ли при генерации классов утилитой SvcUtil.exe из wsdl/xsd настроить, чтоб оно ... поменьше бестипных/безымянных item-ов создавало при sequence или choice ?
Проверил - работает. Можно указывать тип объекта и сервис его распознаёт. Встретил много камней преткновения на реализации, но - работает.
Вложения
Тип файла: 7z HouseManagementService.7z (19.5 Кб, 23 просмотров)
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 08:27
А, что там на ППАК творится?
Я со вчерашнего дня ни одного запроса не могу выполнить?

С 22.12.2016 10:00 вообще ничего.
С 22.12.2016 14:00 пара/тройка запросов уходят и только на один приходит ответ с присвоенным запросу GUID`ом, и всё, далее глухое ожидание хотя бы одного байта.

Они до сих пор переводят на 11 версию или так перевели, что работать перестало?
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
23.12.2016, 08:30
Zmeishe, Ещё не перевели.
0
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 10
23.12.2016, 12:15
Доброго времени суток.
У мен язакралось подозрение, что сертификат которым я подписываю какой-то не такой, т.к. всё перештудировал попересверял - вычисления все правильные в подписи, а всё равно не проходит.

Может кто-нибудь проверить на своём работающем комплексе моё формирование подписи?
там прога консольная внутри и батник к ней. Переподписать свой запрос какой-нибудь своим же сертификатом, но моей программулей Пройдёт -не -пройдёт запрос.
А то у меня уже версии закончились что может быть не так.
ПыСы: дебужным дайжестом она гадит в консоль(xpath ноды, кононизированная нода, хеш, подпись)
Вложения
Тип файла: rar signer(CryptoAPI+libxml2).rar (5.94 Мб, 23 просмотров)
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 13:01
Цитата Сообщение от beerbis Посмотреть сообщение
Может кто-нибудь проверить на своём работающем комплексе моё формирование подписи?
Чем вычисляешь хеш суммы и подпись? КриптоПРО API SDK или чьей-то готовой софтиной/библиотекой?
0
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 10
23.12.2016, 13:22
Цитата Сообщение от Zmeishe Посмотреть сообщение
Чем вычисляешь хеш суммы и подпись
CryptoAPI, тот в свою очередь вкачестве провайдера использует уже "CryptoPro CSP"

Объект хеша съедает данные и на выходе имеем их хеш и подпись этого хеша.
Собственно, все хеши сходятся.
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 13:24
Я посмотрел.
Что тут можно сказать?
Лавров: "Трам-пам-пам". (Это чтоб не матершинную терминологию не применять)
0
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 10
23.12.2016, 13:30
Цитата Сообщение от Zmeishe Посмотреть сообщение
Трам-пам-пам
Не совсем понял. Т.е., совсем не понял.
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 14:05
Цитата Сообщение от beerbis Посмотреть сообщение
Не совсем понял. Т.е., совсем не понял.

Подписывают закрытым ключом. Проверяют подпись открытым ключом. Открытый ключ - это сертификат.

Ты не можешь правильно подписать эту xml`ину, которую выложил в качестве примера.
В этой xml`ине:
МОЙ СЕРТИФИКАТ в теге <X509Certificate>
серийный номер МОЕГО СЕРТИФИКАТА в теге <X509SerialNumber>
удостоверяющий центр тоже мой в теге <X509IssuerName>

а моего ЗАКРЫТОГО ключа у тебя нет и не будет, значит ты подписывал своим закрытым ключом.

И чего же вы ждёте от проверки своей подписи с моим сертификатом?

Сделай со своим сертификатом и сообщи результат.

Добавлено через 11 минут
И вы в мои клеточки подставляете свои цифирки?
Лучше выложи готовый подписанный вашим сертификатом xml. Я проверю только три хеш суммы, дальше будет ясно.

четвёртый хэш это уже подпись
0
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 10
23.12.2016, 14:10
Цитата Сообщение от Zmeishe Посмотреть сообщение
МОЙ СЕРТИФИКАТ в теге <X509Certificate>
просто не стал удалять данные из тагов.
Подписывалка всё заменит на данные указанного сертификата.
Какой сертификат укажешь - тот и будет в <X509Certificate>, и его <X509SerialNumber> и <X509IssuerName>.
Приложил запрос переподписанный с моим сертификатом(тот же запрос что в архиве с прогой, только прогнанный ею с использованием моего сертификата).
Вложения
Тип файла: zip out.zip (3.6 Кб, 15 просмотров)
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 14:13
Цитата Сообщение от beerbis Посмотреть сообщение
Приложил запрос переподписанный
Сейчас гляну, я на Линуксе, мне негде запускать твою прогу она с вражескими библиотеками.
0
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 10
23.12.2016, 14:19
Цитата Сообщение от Zmeishe Посмотреть сообщение
она с вражескими библиотеками
Всё понял. Это объясняет почему CryptoPro SDK, а не CryptoAPI
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 15:21
Beerbis, Хеш суммы совпали с твоими

От подписываемого элемента Digest1 "T4Fyd7/Ffneb93yhc0hnp4yhrODOIet9fx+StABr/cM="
От сертификата Didgest2 = "muvMSSVXTFMwIf8ee+f+Od1AXOrxVGDLQ9FT8AX YxOc="
От свойств подписи Didgest3 = "85yL7WwlcDC/05bY1/tmR1bud6fPl4nNmey19+AJL90="

Когда ты подписал последнюю четвёртую хеш сумму, результат сразу в base64 сразу перевёл или что-нибудь делал?
0
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 10
23.12.2016, 15:33
Цитата Сообщение от Zmeishe Посмотреть сообщение
результат в base64 сразу перевёл?
Да, пярм сходу, нигде не останавливаясь.
Взял 4-й хеш("csb7gfPhl6VZWvr9cDROiQwXCqWZ+TJtnw/8yxttcuI="), подписал и результат в Base64. Никаких извращений.
Delphi
1
UTF8Encode(TIdEncoderMIME.EncodeBytes(hash.Sign))
Ровно так же как с хешами прочими поступал:
Delphi
1
UTF8Encode(TIdEncoderMIME.EncodeBytes(hash.Value))
Я отчего и подозреваю что дело не в алгоритме подписи. А если не в нём - в самом сертификате, в чём же ещё-то..
Но подозрения надо как-то подтвердить. Или опровергнуть. %)
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 15:46
Цитата Сообщение от beerbis Посмотреть сообщение
Да, пярм сходу, нигде не останавливаясь
Вот и ошибка нашлась.

После получения подписи её необходимо перевернуть задом на перёд и только после этого перегнать в base64
На C++(Qt) это выглядит так.

C++ (Qt)
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
const QString QCryptoPro::signHash(HCRYPTHASH hHash)
{
    DWORD keytype;
    QByteArray signArray;
    QByteArray signArrayReverse;
    DWORD signSize, blobSize;
    char *s, *r;
 
    signSize = blobSize = 0;
    //keytype = AT_SIGNATURE;
    keytype = AT_KEYEXCHANGE;
 
 
    if( ! CryptSignHash(hHash, keytype, NULL, 0, NULL, &signSize) )
    {
        setErrorString( QString::fromUtf8("Ошибка определения размера подписи.") );
        return QString::null;
    }
 
    signArray.resize( signSize );
 
    if( ! CryptSignHash(hHash, keytype, NULL, 0, (PBYTE) signArray.data(), &signSize) )
    {
        setErrorString( QString::fromUtf8("Ошибка подписания хеша.") );
        return QString::null;
    }
 
    signArrayReverse.resize( signArray.size() );
    s = signArray.data();
    r = signArrayReverse.data() + signArray.size() - 1;
 
    for( int i = 0; i < signArray.size(); ++i, ++s, --r )
    {
        *r = *s;
    }
 
    return signArrayReverse.toBase64();
}
1
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 10
23.12.2016, 16:00
Цитата Сообщение от Zmeishe Посмотреть сообщение
её необходимо перевернуть задом
Я от пущего возбуждения едва со стула не упал от этой мысли! Заработало!!
It'a aliaaaive!!!
ПыСы: странно что просто перевернуть надо, а не, скажем: поменять местами 5-й байт с 11-м. #самказм

Огромное мегаспасибо!
0
 Аватар для Zmeishe
23 / 22 / 1
Регистрация: 31.08.2016
Сообщений: 178
23.12.2016, 16:03
Цитата Сообщение от beerbis Посмотреть сообщение
Я от пущего возбуждения едва со стула не упал от этой мысли! Заработало!!
Ну вот, пятница переходит в питницу.
1
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 1
24.12.2016, 20:10
Здравствуйте
При попытке сделать importNotificationsOfOrderExecution возникает ошибка "EXP001000:Внутренняя ошибка". Что не так понять не могу. То ли у них косяк на тестовом стенде, то ли я что-то делаю не так.
Может кто-нибудь с подобными проблема сталкивался. Прошу помощи.
Ниже код на c#. Во вложение xml

Кликните здесь для просмотра всего текста

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
var requestPayment = new GIS_ZhKH.Infrastructure.PaymentServiceAsync.importNotificationsOfOrderExecutionRequest1()
            {
                RequestHeader = new GIS_ZhKH.Infrastructure.PaymentServiceAsync.RequestHeader()
                {
                    Date = DateTime.Now,
                    MessageGUID = Guid.NewGuid().ToString(),
                    //ItemElementName = Infrastructure.PaymentServiceAsync.ItemChoiceType.orgPPAGUID,
                    //Item = regOrg.orgPPAGUID,
                    ItemElementName = Infrastructure.PaymentServiceAsync.ItemChoiceType.orgPPAGUID,
                    Item = CryptoConsts.TELECOM_PPAGUID,
                    IsOperatorSignatureSpecified = true
                },
                importNotificationsOfOrderExecutionRequest = new importNotificationsOfOrderExecutionRequest()
                {
                    version = "10.0.1.1",
                    Id = CryptoConsts.CONTAINER_ID,
                    NotificationOfOrderExecutionType = new importNotificationsOfOrderExecutionRequestNotificationOfOrderExecutionType[] { new importNotificationsOfOrderExecutionRequestNotificationOfOrderExecutionType()
                    {
                        OrderInfo = new GIS_ZhKH.Infrastructure.PaymentServiceAsync.NotificationOfOrderExecutionTypeOrderInfo()
                        {
                            //OrderID = idPayment.PadLeft(32,'1'),
                            OrderID = DateTime.Now.ToString("yyyyMMddhhmss").PadLeft(32,'0'),
                            OrderDate = DateTime.ParseExact(paymentDate, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture),
                            Month = 11,
                            Year = 2016,
                            PaymentDocumentID = "40АА127814-02-6111",
                            Amount = Convert.ToDecimal(amount),
                            PaymentPurpose = "Оплата",
                            Service = new Infrastructure.PaymentServiceAsync.NotificationOfOrderExecutionTypeOrderInfoService()
                            {
                                ServiceID = "40АА127814-02"//serviceId
                            }
                        },
                        //Сведения об исполнителе, т.е. УО или ТСЖ или РСО
                        RecipientInfo = new GIS_ZhKH.Infrastructure.PaymentServiceAsync.NotificationOfOrderExecutionTypeRecipientInfo()
                        {
                            INN = regOrgInfo.INN,
                            Item = new GIS_ZhKH.Infrastructure.PaymentServiceAsync.NotificationOfOrderExecutionTypeRecipientInfoLegal()
                            {
                                KPP = regOrgInfo.KPP,
                                Name = regOrgInfo.FullName
                            }//,
                            ////Сведения о платежных реквизитах. Необязательно
                            //PaymentInformation = new Infrastructure.PaymentServiceAsync.PaymentInformationType()
                            //{
                                
                            //}
                            
                        },
                        //Сведения о потребителе. Необязательно
                        //SupplierInfo = new GIS_ZhKH.Infrastructure.PaymentServiceAsync.NotificationOfOrderExecutionTypeSupplierInfo()
                        //{
                        //    SupplierID = ""
                        //},
                        TransportGUID = Guid.NewGuid().ToString()
                    } }
                }
            };
Вложения
Тип файла: rar Request_importNotificationsOfOrderExecution.rar (7.7 Кб, 18 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2016, 20:10

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

Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel
Решил создать отдельную тему, так как в теме Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4) - C# WCF уже можно заблудиться....

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

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

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


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

Или воспользуйтесь поиском по форуму:
500
Закрытая тема Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru