Войти

Использование системы генерации кодов транзакции

9. Использование системы генерации кодов транзакции

Для получения расширенной аналитической отчётности по предоставляемым ведомствами услугам и выполняемым функциям для каждой транзакции предоставления услуги или выполнения функции вводится уникальный код (код транзакции). Генерация данных кодов производится системой генерации кодов транзакций СМЭВ.

Сформированное значение подставляется в элемент //SendRequestRequest/SenderProvidedRequestData/TransactionCode запроса или рассылки.

При получении ответа код транзакции находится в элементе //GetResponseResponse/ResponseMessage/Response/OriginalTransactionCode.

9.1.         Сервис предоставления кодов транзакций

Сервис предоставления кодов транзакций (СПКТ) реализован для обеспечения информационного взаимодействия по протоколу SOAP.

СПКТ осуществляет приём входных и отправку выходных данных, приведённых в таблице 9.

Таблица 9 – Перечень входных и выходных данных СПКТ

Название

Тип

Обозначение

Описание

1

Входные данные

1.1

Данные об услуге

Контейнер

FRGUInformation

Данные ФРГУ передаются средствами метода TransactionCode веб-сервиса и включает следующие данные:

·       Мнемоника информационной системы;

·       Код ФРГУ услуги либо признак функции;

·       Расширенные сведения об услуге или функции;

·       Расширенные сведения об инициаторе услуги или функции.

1.1.1

Мнемоника информационной системы

String

FRGUInteractionPartiсipantCode

Мнемоника информационной системы длиной не более 20 символов

1.1.2

Код ФРГУ услуги либо признак функции

String

FRGUServiceCode

Код ФРГУ услуги длиной не более 20 символов либо признак функции длиной не более 20 символов.

1.1.3

Расширенные сведения об услуге или функции

String

FRGUServiceDescription

Расширенные сведения об услуге или функции не более 1000 символов.

1.1.4

Расширенные сведения об инициаторе услуги или функции

String

FRGUServiceRecipientDescription

Расширенные сведения об инициаторе услуги или функции не более 1000 символов.

2

Выходные данные

2.1

Ответное сообщение на отправленные данные об услуге

Контейнер

Marker

Ответное сообщение на отправленные данные ФРГУ. Ответное сообщение передаётся средствами метода TransactionCode веб-сервиса и включает следующие данные:

·       Идентификатор кода транзакции;

·       Код транзакции.

2.1.1

Идентификатор Кода транзакции

String

TransactionUUID

Идентификатор Кода транзакции, генерируемый в соответствии с RFC-4122, по варианту 1 (на основании MAC-адреса и текущего времени).

2.1.2

Код транзакции

String

TransactionCode

Код транзакции в виде строки: TransactionUUID| FRGUServiceCode| SignatureDetached, где:

·       TransactionUUID - идентификатор Кода транзакции;

·       FRGUServiceCode - код ФРГУ услуги либо признак функции;

·       SignatureDetached – это не квалифицированная электронная подпись строки «TransactionUUID| FRGUServiceCode» не содержащая сертификата в формате base64.

Не квалифицированная электронная подпись генерируется по алгоритму MD5 c RSA с использованием стандартной библиотеки «keytool» из базовой поставки jdk.

Пример запроса кода транзакций:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

            <SOAP-ENV:Body>

                        <m:generateMark xmlns:m="http://endpoints.transactionmarker.voskhod.ru/">

                                   <FRGUInformation>

                                      <FRGUInteractionPartisipantCode>String</FRGUInteractionPartisipantCode>

                                               <FRGUServiceCode>String</FRGUServiceCode>

                                                <FRGUServiceDescription>String</FRGUServiceDescription>

                                   <FRGUServiceRecipientDescription>String</FRGUServiceRecipientDescription>

                                   </FRGUInformation>

                        </m:generateMark>

            </SOAP-ENV:Body>

</SOAP-ENV:Envelope>

WSDL-описание веб-сервиса СГКТ:

<?xml version="1.0"?>

<wsdl:definitions xmlns:ns1="http://voskhod.ru/transaction-marker" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" name="MarkerService" targetNamespace="http://endpoints.transactionmarker.voskhod.ru/" xmlns:tns="http://endpoints.transactionmarker.voskhod.ru/">

            <wsdl:types>

                        <xs:schema targetNamespace="http://voskhod.ru/transaction-marker" version="1.0">

                                   <xs:complexType name="FRGUInformation">

                                               <xs:sequence>

                                                           <xs:element name="FRGUInteractionPartisipantCode">

                                                                       <xs:simpleType>

                                                                                   <xs:restriction base="xs:string">

                                                                                              <xs:minLength value="1"/>

                                                                                              <xs:maxLength value="20"/>

                                                                                   </xs:restriction>

                                                                       </xs:simpleType>

                                                           </xs:element>

                                                           <xs:element name="FRGUServiceCode">

                                                                       <xs:simpleType>

                                                                                   <xs:restriction base="xs:string">

                                                                                              <xs:minLength value="1"/>

                                                                                              <xs:maxLength value="20"/>

                                                                                   </xs:restriction>

                                                                       </xs:simpleType>

                                                           </xs:element>

                                                           <xs:element minOccurs="0" name="FRGUServiceDescription" nillable="true">

                                                                       <xs:simpleType>

                                                                                   <xs:restriction base="xs:string">

                                                                                              <xs:minLength value="1"/>

                                                                                              <xs:maxLength value="1000"/>

                                                                                   </xs:restriction>

                                                                       </xs:simpleType>

                                                           </xs:element>

                                                           <xs:element minOccurs="0" name="FRGUServiceRecipientDescription" nillable="true">

                                                                       <xs:simpleType>

                                                                                   <xs:restriction base="xs:string">

                                                                                              <xs:minLength value="1"/>

                                                                                              <xs:maxLength value="1000"/>

                                                                                   </xs:restriction>

                                                                       </xs:simpleType>

                                                           </xs:element>

                                               </xs:sequence>

                                   </xs:complexType>

                                   <xs:complexType name="marker">

                                               <xs:sequence>

                                                           <xs:element name="TransactionUUID" type="xs:string"/>

                                                           <xs:element name="TransactionCode" type="xs:string"/>

                                               </xs:sequence>

                                   </xs:complexType>

                        </xs:schema>

                        <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://endpoints.transactionmarker.voskhod.ru/">

                                   <xs:import namespace="http://voskhod.ru/transaction-marker"/>

                                   <xs:element name="frguInformation" type="ns1:FRGUInformation"/>

                                   <xs:element name="generateMark" type="tns:generateMark"/>

                                   <xs:element name="generateMarkResponse" type="tns:generateMarkResponse"/>

                                   <xs:complexType name="generateMark">

                                               <xs:sequence>

                                                           <xs:element name="FRGUInformation" type="ns1:FRGUInformation"/>

                                               </xs:sequence>

                                   </xs:complexType>

                                   <xs:complexType name="generateMarkResponse">

                                               <xs:sequence>

                                                           <xs:element minOccurs="0" name="return" type="ns1:marker"/>

                                               </xs:sequence>

                                   </xs:complexType>

                        </xs:schema>

            </wsdl:types>

            <wsdl:message name="generateMarkResponse">

                        <wsdl:part element="tns:generateMarkResponse" name="parameters">

</wsdl:part>

            </wsdl:message>

            <wsdl:message name="generateMark">

                        <wsdl:part element="tns:generateMark" name="parameters">

</wsdl:part>

            </wsdl:message>

            <wsdl:portType name="IMarker">

                        <wsdl:operation name="generateMark">

                                   <wsdl:input message="tns:generateMark" name="generateMark">

</wsdl:input>

                                   <wsdl:output message="tns:generateMarkResponse" name="generateMarkResponse">

</wsdl:output>

                        </wsdl:operation>

            </wsdl:portType>

            <wsdl:binding name="MarkerServiceSoapBinding" type="tns:IMarker">

                        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

                        <wsdl:operation name="generateMark">

                                   <soap:operation soapAction="" style="document"/>

                                   <wsdl:input name="generateMark">

                                               <soap:body use="literal"/>

                                   </wsdl:input>

                                   <wsdl:output name="generateMarkResponse">

                                               <soap:body use="literal"/>

                                   </wsdl:output>

                        </wsdl:operation>

            </wsdl:binding>

            <wsdl:service name="MarkerService">

                        <wsdl:port binding="tns:MarkerServiceSoapBinding" name="MarkerPort">

                                   <soap:address location="http://localhost:8080/tm/Marker"/>

                        </wsdl:port>

            </wsdl:service>

</wsdl:definitions>

Авторизуйтесь, чтобы оставить комментарий к статье