1.0.1 • Published 1 year ago

smev3-soap v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

workflow Jest coverage

node-smev3-soap

Disclaimer

This software is developed solely for integration with Russian government IT systems, so the Cyrillic script is widely used in its documentation.

Описание

node-smev3-soap -- библиотека node.js для формирования SOAP-запросов к Системе межведомственного электронного взаимодействия 3-й версии (СМЭВ 3).

Здесь рассматривается только задача составления текста сообщений в соответствии с утверждёнными схемами XML из данных, представленных обычными объектами javaScript.

Ограничения

Отправка сообщений по сети, отслеживание очередей, обработка содержательной части ответов и т. п. задачи должны решаться приложениями, использующими node-smev3-soap, а не ей самой.

Подписывание сообщений также не относится к задачам, решаемым данной библиотекой. Она генерирует XML-документы, некоторое из элементов которых помечены атрибутами Id. Предполагается, что электронная подпись прикрепляется вызовом отдельного сервиса перед отправкой сообщения в СМЭВ.

Установка

npm install smev3-soap

Использование

const {SmevSoap} = require ('smev3-soap')
const smevSoap = new SmevSoap ()

const OriginalMessageID = '59a8e1bd-7cdd-11ed-a125-005056a5851b'
const data = {
  ExportDebtRequestsRequest: {	
    "information-system-id": "1c33b13d-992f-4eb5-b891-7bf845fda440",
    "organization-id": "360617e3-6813-4481-9c45-43a574f6b1af",
    "request-id": [
      "eb629532-8995-483f-b9fc-018ee5e5d8cd",
      "fd34f457-c8a8-4b95-8a72-1b6ce00cb6c1",
    ],
  }
}

const sendRequestXML = smevSoap.sendRequest (OriginalMessageID, data, 'dom-gosuslugi-ru-smev3-debt-responses.xsd')
const getResponseXML = smevSoap.getResponse ()

const MessageId      = smevSoap.getMessageId (responseResponseXML)
const ackXML         = smevSoap.ack (MessageId)

Конструктор

const smevSoap = new SmevSoap (/*{
//  soap: '1.1',
//  smev: '1.1',
//  declaration: {encoding: 'UTF-8'},
//  header: '',
}*/)

Создаёт экземпляр объекта, пригодный для генерации множества SOAP-сообщений с аналогичным набором опций.

Опции

ИмяПо умолчаниюОписаниеПримечание
soap'1.1'Версия SOAPДопустимо '1.1' или '1.2'
smev'1.1'Версия СМЭВПока допустимо только '1.1'
declaration{encoding: 'UTF-8'}Содержимое декларации XMLМожно подавить вывод декларации, указав null, или же установить собствееный encoding. В последнем случае, скорее всего, потребуется дополнительное перекодирование результата, поскольку XML генерируется всегда как String
headerundefinedСодержимое SOAP-элемента HeaderПо умолчанию (undefined) Header отсутствует. Иначе он генерируется, причём значение опции header подставляется внутрь как есть (без замены скобок, кавычек и т. п.). В частности, если требуется пустой Header, можно указать здесь строку нулевой длины ('')

Методы

sendRequest

Генерирует SOAP-конверт, содержащий элемент СМЭВ SendRequestRequest с содержимым (SenderProvidedRequestData), которое получено из заданного объекта данных по требуемой "схеме вида сведений".

const OriginalMessageID = '59a8e1bd-7cdd-11ed-a125-005056a5851b'
const data = {
  ExportDebtRequestsRequest: {	
    "information-system-id": "1c33b13d-992f-4eb5-b891-7bf845fda440",
    "organization-id": "360617e3-6813-4481-9c45-43a574f6b1af",
    "request-id": [
      "eb629532-8995-483f-b9fc-018ee5e5d8cd",
      "fd34f457-c8a8-4b95-8a72-1b6ce00cb6c1",
    ],
  }
}

const sendRequestXML = smevSoap.sendRequest (OriginalMessageID, data, 'dom-gosuslugi-ru-smev3-debt-responses.xsd'/*, {
// Id: 1,
// test: true,
}*/)

Параметры

ИмяОписаниеПримечание
OriginalMessageIDИдентификатор отправляемого сообщенияВ результате подставляется в элемент MessageID
dataОбъект данных для упаковки согласно схемеПодробнее о сериализации см. XMLMarshaller
pathПуть к корневому файлу XML-схемыИли объект XMLSchemata, полученный из него
optionsНабор опцийСм. следующий раздел

Опции

ИмяПо умолчаниюОписаниеПримечание
Id'U' + OriginalMessageIDАтрибут IdИспользуется для обозначения подписываемого элемента. Значение самостоятельного смысла не имеет, так что необходимость в его использовании маловероятна
testfalseДобавлять ли TestMessageПри истинном значении этой опции TestMessage добавляется

getResponse

Генерирует SOAP-конверт, содержащий элемент СМЭВ GetResponseRequest.

const getResponseXML = smevSoap.getResponse (/*, {
// Id: 1,
// Timestamp: new Date (),
}*/)

Параметры

ИмяОписаниеПримечание
optionsНабор опцийСм. следующий раздел

Опции

ИмяПо умолчаниюОписаниеПримечание
Id'U9552f341-4b2b-4cb3-b0b5-fea58fa165e1'Атрибут Id
Timestampnew Date ()Метка времени в MessageTypeSelector

getMessageId

Читает из данного XML содержимое первого встреченного элемента с локальным именем MessageId.

const MessageId = smevSoap.getMessageId (responseResponseXML)

В отличие от остальных методов, этот не генерирует, а, наоборот, разбирает XML. Извлекаемое им значение далее нужно для составления запроса Ack.

responseResponseXML должен быть полученным от СМЭВ SOAP-сообщением, содержащим GetResponseResponse.

ack

Генерирует SOAP-конверт, содержащий элемент СМЭВ AckRequest для заданного MessageID.

const ackXML = smevSoap.ack (MessageID /*, {
// Id: 1,
// accepted: true,
}*/)

Параметры

ИмяОписаниеПримечание
MessageIDИдентификатор сообщенияо получении которого требуется сообщить
optionsНабор опцийСм. следующий раздел

Опции

ИмяПо умолчаниюОписаниеПримечание
Id'U' + OriginalMessageIDАтрибут Id
acceptedtrueЗначение атрибута accepted