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> |