Инструкция по подключению поставщиков услуг к ЕПШ по форматам взаимодействия версии 1.6.5
|
Лист изменений 3
1Введение 3
1.1Цель документа 3
1.2Термины и сокращения 3
1.3Перечень исходных документов 3
2Общий порядок подключения ППУ к ИС ЕПШ 5
2Сетевые взаимодействия ИС ЕПШ и ППУ 6
3Подпись сообщений, отправляемых в ИС ЕПШ/из ИС ЕПШ 8
2.1Порядок формирования подписи запросов и ответов ИС ЕПШ 8
3Порядок тестирования при интеграции ППУ с ИС ЕПШ 10
3.1Порядок тестирования статусов транзакций 11
3.2Запрос к Web-сервису ИС ЕПШ по методу registerPayment 12
3.3Запрос к Web-сервису ИС ЕПШ по методу registerPayments 12
3.4Запрос к Web-сервису ППУ по методу confirmPayment 13
3.5Запрос к Web-сервису ИС ЕПШ по методу checkPaymentStatus 14
4Коды сообщений от ЕПШ 14
Лист изменений
Дата
|
Версия
|
Перечень изменений
|
05.02.2018
|
1.0
|
Начальная версия
|
08.02.2018
|
1.1
|
Добавлен раздел Сетевые взаимодействия ИС ЕПШ и ППУ
|
16.02.2018
|
1.2
|
Добавлен раздел Порядок тестирования при интеграции ППУ с ИС ЕПШ
|
13.03.2018
|
1.3
|
В Заявку на подключение к ЕПШ добавлена информация об использовании опциональных статусов TOUT, UDECL, см. Перечень исходных документов
|
Таблица Тестируемые сценарии дополнена информацией о том, что статусы TOUT, UDECL тестируются только при внесении их в заявку на подключение к ЕПШ, см. Порядок тестирования при интеграции ППУ с ИС ЕПШ
|
Добавлен раздел Порядок тестирования статусов транзакций
|
В раздел Запрос к Web-сервису ИС ЕПШ по методу registerPayment добавлены примеры xml-сообщений
|
В раздел Запрос к Web-сервису ИС ЕПШ по методу registerPayments добавлены примеры xml-сообщений
|
В раздел Запрос к Web-сервису ППУ по методу confirmPayment добавлены примеры xml-сообщений
|
В раздел Запрос к Web-сервису ИС ЕПШ по методу checkPaymentStatus добавлены примеры xml-сообщений
|
-
Введение
1.1Цель документа
Документ представляет инструкцию по подключению ППУ к ИС ЕПШ.
1.2Термины и сокращения
Термин
|
Содержание
|
ИС
|
Информационная система
|
ЕПШ
|
Единый платежный шлюз – подсистема Государственной информационной системы, обеспечивающей в городе Москве регистрацию начислений и платежей
|
ППУ
|
Портал предоставления услуг
|
paymentUUID
|
Уникальный идентификатор платежных реквизитов, передается в registerPaymentRequest/registerpaymentsRequest
|
1.3Перечень исходных документов
ID
|
Название документа
|
Версия, Дата
|
Автор
|
Документ
|
1
|
Запрос на сертификат и пример сертификата
|
|
|
|
2
|
Заявка ЕПШ
|
|
|
|
3
|
ЕПШ_Форматы_взаимодействия
|
1.6.5.
|
Быковский С.
|
https://www.mos.ru/upload/documents/files/4111/FormativzaimodeistviyaISEPSh(versiya165).docx
|
-
Общий порядок подключения ППУ к ИС ЕПШ
Порядок подключения ППУ к ИС ЕПШ:
-
ППУ формирует запрос на выпуск сертификата:
(для подключения к промышленному стенду ЕПШ) ППУ формирует пару закрытого и открытого ключей.
Пример команды на формирование пары ключей через OpenSSL:
openssl req -new -sha256 -nodes -newkey rsa:2048 -keyout mospay_client1.key -out mospay_client1.csr -config openssl.cfg -subj "/C=RU/L=City/O=Company_name/CN=common_name"
Результатом выполнения команды является:
пара закрытого и открытого ключей;
запрос на выпуск сертификата: файл формата .csr, содержащий открытый ключ.
Пример запроса на выпуск сертификата и сертификат см. [1], Перечень исходных документов.
В названии сформированного csr-файла необходимо указать: «для промышленного стенда».
(для подключения к тестовому стенду ЕПШ с двусторонней аутентификацией) ППУ формирует пару закрытого и открытого ключей.
Пример команды на формирование пары ключей через OpenSSL:
openssl req -new -sha256 -nodes -newkey rsa:2048 -keyout mospay_client1.key -out mospay_client1.csr -config openssl.cfg -subj "/C=RU/L=City/O=Company_name/CN=common_name"
Результатом выполнения команды является:
пара закрытого и открытого ключей;
запрос на выпуск сертификата: файл формата .csr, содержащий открытый ключ.
Пример запроса на выпуск сертификата и сертификат см. [1], Перечень исходных документов.
В названии сформированного csr-файла необходимо указать: «для тестового стенда».
ППУ отправляет письмо с запросом получения сертификата на адрес: help.rnip@mos.ru, в копию: Espp_ts@mts.ru, in.vezhnovets@mts.ru, amaslenko@intervale.ru, ssamusev@intervale.ru.
Тема письма должна содержать: «Подключение к ИС ЕПШ. <�Название ППУ>».
Письмо должно включать:
Cформированные ранее csr-файлы (см. [1], Перечень исходных документов);
Заявку на подключение ППУ к ЕПШ (см. [2], Перечень исходных документов).
В заявке необходимо указать requestHeader.sender.id, requestHeader.shortName которые будут использоваться в дальнейшем внутри запроса registerPayment.
Пример блока requestHeader запроса registerPayment:
2017-10-06T13:57:30.3912626+03:00
AVTOCODE
СИВ Автокод
…
В письме необходимо указать адреса, по которым ЕПШ будет отправлять confirmPayment (указать два URL, для тестового и для промышленного стендов).
Оператор ИС ЕПШ обеспечивает рассмотрение заявки на выдачу сертификата и подключение к ИС ЕПШ.
Срок рассмотрения заявки – в течение 5 рабочих дней.
Оператор ИС ЕПШ отправляет заявителю письмо, которое содержит:
сертификат для организации защищенного SSL канала (тестовый стенд с двусторонней аутентификацией).
ППУ, используя полученный сертификат, интегрируется с тестовым стендом ИС ЕПШ (см. Порядок тестирования при интеграции ППУ с ИС ЕПШ).
Оператор ИС ЕПШ подтверждает регистрацию заявителя в ИС ЕПШ, отправляя заявителю письмо, которое содержит:
сертификат для организации защищенного SSL канала (промышленный стенд);
ППУ, используя полученный сертификат, интегрируется с промышленным стендом ИС ЕПШ (см. Порядок тестирования при интеграции ППУ с ИС ЕПШ).
2Сетевые взаимодействия ИС ЕПШ и ППУ
Таблица Сетевые взаимодействия (промышленный стенд)
Запрос
|
Инициатор соединения
|
URL
получателя
|
IP-адрес получателя
|
Порт
|
Протокол (TCP/UDP)
|
registerPayment
|
ППУ
|
https://213.87.44.156:8443/soap/merchant/bk/payment
|
213.87.44.156
|
8443
|
TCP
|
registerPayments
|
ППУ
|
https://213.87.44.156:8443/soap/merchant/bk/payment/batch
|
213.87.44.156
|
8443
|
TCP
|
checkPaymentStatus
|
ППУ
|
https://213.87.44.156:8443/soap/merchant/bk/payment
|
213.87.44.156
|
8443
|
TCP
|
Get-запрос получения квитанции об оплате
|
ППУ
|
Передается ИС ЕПШ в confirmPayment
|
194.54.150.107
|
443
|
TCP
|
Таблица Сетевые взаимодействия (тестовый стенд)
Запрос
|
Инициатор соединения
|
URL
получателя
|
IP-адрес получателя
|
Порт
|
Протокол (TCP/UDP)
|
registerPayment
|
ППУ
|
https://mospay-dev.intervale.ru/soap/merchant/bk/payment
|
194.158.205.117
|
443
|
TCP
|
registerPayments
|
ППУ
|
https://mospay-dev.intervale.ru/soap/merchant/bk/payment/batch
|
194.158.205.117
|
443
|
TCP
|
checkPaymentStatus
|
ППУ
|
https://mospay-dev.intervale.ru/soap/merchant/bk/payment
|
194.158.205.117
|
443
|
TCP
|
Get-запрос получения квитанции об оплате
|
ППУ
|
Передается ИС ЕПШ в confirmPayment
|
194.158.205.117
|
443
|
TCP
|
Таблица Сетевые взаимодействия (тестовый стенд, двусторонняя аутентификация)
Запрос
|
Инициатор соединения
|
URL
получателя
|
IP-адрес получателя
|
Порт
|
Протокол (TCP/UDP)
|
registerPayment
|
ППУ
|
https://mospay-ssl.intervale.ru/soap/merchant/bk/payment
|
194.158.205.117
|
443
|
TCP
|
registerPayments
|
ППУ
|
https://mospay-ssl.intervale.ru/soap/merchant/bk/payment/batch
|
194.158.205.117
|
443
|
TCP
|
checkPaymentStatus
|
ППУ
|
https://mospay-ssl.intervale.ru/soap/merchant/bk/payment
|
194.158.205.117
|
443
|
TCP
|
Get-запрос получения квитанции об оплате
|
ППУ
|
Передается ИС ЕПШ в confirmPayment
|
194.158.205.117
|
443
|
TCP
|
-
Подпись сообщений, отправляемых в ИС ЕПШ/из ИС ЕПШ
Используемый алгоритм подписи: GOST 3410-2001.
Подписываемые сообщения на стороне ППУ:
registerPaymentRequest, элемент paymentDetails;
registerPaymentsRequest, элемент listPaymentDetails;
checkPaymentStatusRequest, элемент checkPaymentStatusRequest;
confirmPaymentResponse, элемент confirmPaymentResponse.
Подписываемые сообщения на стороне ЕПШ:
registerPaymentResponse, элемент registerPaymentResponse;
registerPaymentsResponse, элемент registerPaymentsResponse;
checkPaymentStatusResponse, элемент checkPaymentStatusResponse;
confirmPaymentRequest, элемент FinalPayment, элемент confirmPaymentRequest.
Примечание: Признак обязательного/необязательного наличия цифровой подписи указывается в Форматах взаимодействия ЕПШ версии 1.6.5, см. [3], Перечень исходных документов.
2.1Порядок формирования подписи запросов и ответов ИС ЕПШ
В процессе создания электронной подписи информационной системы должны использоваться алгоритмы для расчета хеш-сумм, формирования подписи и каноникализации, приведенные в таблице .
Таблица – Алгоритмы формирования подписи
Название алгоритма
|
Наименование
|
URI
|
Расчет хэш-сумм
|
ГОСТ Р 34.11-94
|
http://www.w3.org/2001/04/xmldsig-more#gostr3411
|
Формирования подписи
|
ГОСТ Р 34.10-2001
|
http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411 , http://www.w3.org/TR/XAdES/
|
Каноникализация
|
Exclusive XML Canonicalization от 18 July 2002
|
http://www.w3.org/2001/10/xml-exc-c14n#
|
Формирование блока электронной подписи осуществляется в следующем порядке:
-
Формирование шаблона документа:
Создается элемент Signature;
К элементу Signature добавляется дочерний элемент SignedInfo;
К элементу SignedInfo добавляется дочерний элемент CanonicalizationMethod;
К элементу SignedInfo добавляется дочерний элемент SignatureMethod;
К элементу SignedInfo добавляется первый дочерний элемент Reference;
К элементу Reference добавляется дочерний элемент Transforms;
К элементу Transforms элемента Reference добавляется дочерний элемент Transform (два элемента);
К элементу Reference добавляется элемент DigestMethod;
К элементу Reference добавляется элемент DigestValue;
К элементу Signature добавляется дочерний элемент SignatureValue;
К элементу Signature добавляется дочерний элемент KeyInfo;
К элементу KeyInfo добавляется дочерний элемент X509Data;
К элементу X509Data добавляется дочерний элемент X509Certificate.
-
Установка предопределенных значений
Для элемента CanonicalizationMethod и для второго элемента Transform элемента Reference значения атрибута Algorithm устанавливается в «http://www.w3.org/2001/10/xml-exc-c14n#».
Для первого элемента Transform алгоритм выставляется значение "http://www.w3.org/2000/09/xmldsig#enveloped-signature".
Для элементов DigestMethod первого значения атрибута Algorithm устанавливается в "http://www.w3.org/2001/04/xmldsig-more#gostr3411".
Для элемента SignatureMethod значение атрибута Algorithm устанавливается в "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411".
-
Атрибут URI элемента Reference должен быть заполнен пустым значением.
-
Установка подписи
Открытый ключ подписи, закодированный по алгоритму «http://www.w3.org/2000/09/xmldsig#base64», добавляется к элементу X509Certificate как дочерний текстовый узел.
Подписываются элементы документа, выбранные посредством XPATH выражения на основе значения атрибута URI элемента Reference (если элемент URI имеет пустое значение, то подписывается полностью весь тег сущности). Полученное значение кодируется по алгоритму «http://www.w3.org/2000/09/xmldsig#base64» и добавляется как дочерний текстовый узел к элементу DigestValue первого элемента Reference.
Элемент SignedInfo трансформируется в соответствии с алгоритмом «http://www.w3.org/2001/10/xml-exc-c14n#». Затем на основании полученной строки и ключа подписи формируется значение ЭП в соответствии с алгоритмом «http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411». Полученное значение ЭП кодируется в соответствии с алгоритмом «http://www.w3.org/2000/09/xmldsig#base64» и значение добавляется как дочерний текстовый узел к элементу SignatureValue.
Пример:
Значение хеша в Base64
Значение подписи в Base64
Сертификат X.509 в Base64
Примеры xml-сообщений, содержащих цифровую подпись:
3Порядок тестирования при интеграции ППУ с ИС ЕПШ
ППУ имеет возможность провести интеграцию со следующими стендами ИС ЕПШ:
Тестовый стенд;
Тестовый стенд (двусторонняя аутентификация) - осуществляется после получения от ИС ЕПШ сертификата для организации защищенного SSL канала (тестовый стенд с двусторонней аутентификацией), см. Общий порядок подключения ППУ к ИС ЕПШ.
Промышленный стенд - осуществляется после получения от ИС ЕПШ сертификата для организации защищенного SSL канала (промышленный стенд), см. Общий порядок подключения ППУ к ИС ЕПШ.
Для интеграции необходимо протестировать следующие запросы:
Запрос к Web-сервису ИС ЕПШ по методу registerPayment;
Запрос к Web-сервису ИС ЕПШ по методу registerPayments;
Запрос к Web-сервису ППУ по методу confirmPayment;
Запрос к Web-сервису ИС ЕПШ по методу checkPaymentStatus.
Описание методов представлено в Форматах взаимодействия ЕПШ версии 1.6.5, п. 4.1, 4.2, см. [3], Перечень исходных документов.
Тестируемые сценарии:
Таблица Тестируемые сценарии
-
Статус
|
Описание сценария
|
APRP
|
Платеж успешно завершен
|
DECL
|
Платеж отклонен банком-эквайером
|
PROC, затем APRP
|
Платеж передан в банк, но от банка не поступило подтверждение в регистрации платежа по причине коммуникационной ошибки.
После - платеж успешно завершен
|
PROC, затем DECL
|
Платеж передан в банк, но от банка не поступило подтверждение в регистрации платежа по причине коммуникационной ошибки.
После - платеж отклонен банком-эквайером
|
TOUT
Статус тестируется, если он был указан в заявке на подключение к ЕПШ, см. [2], Перечень исходных документов
|
Отправляется если после получения от ППУ registerPayment/registerPayments Клиент не перешел к оплате за установленное время
|
UDECL
Статус тестируется, если он был указан в заявке на подключение к ЕПШ, см. [2], Перечень исходных документов
|
Клиент вернулся на страницу ППУ
|
Клиент выбрал не все платежи для оплаты.
Статус UDECL отправляется по тем платежам, которые не были выбраны Клиентом при старте платежа
|
3.1Порядок тестирования статусов транзакций
Перед тестированием сценария ППУ отправляет письмо на адрес help.rnip@mos.ru, в копию: amaslenko@intervale.ru.
Тема письма должна содержать: «Подключение к ИС ЕПШ. <�Название ППУ> Тестирование».
В данном письме ППУ сообщает статус (см. Таблица ), который должен быть проверен.
В ответ оператор техподдержки ЕПШ отправляет письмо о готовности провести тестирование указанного сценария.
ППУ отправляет запрос registerPaymentRequest/registerPaymentsRequest в ИС ЕПШ (URL получателя см. в Сетевые взаимодействия ИС ЕПШ и ППУ).
ППУ получает от ИС ЕПШ registerPaymentResponse/registerPaymentsResponse.
ППУ получает от ИС ЕПШ confirmPaymentRequest, содержащий статус транзакции.
ППУ отправляет в ИС ЕПШ confirmPaymentResponse.
ППУ отправляет письмо на адрес help.rnip@mos.ru, в копию: amaslenko@intervale.ru.
В письме указывается:
paymentUUID из проведенной транзакции;
статус, который будет проверяться следующим.
В ответ оператор техподдержки ЕПШ отправляет письмо о готовности провести тестирование следующего статуса.
Повторить шаги 1-6 для тестируемого статуса.
Тестирование статусов APRP, DECL, PROC обязательно.
Статусы TOUT, UDECL тестируются в случае, если они были указаны в заявке на подключение к ЕПШ, см. [2], Перечень исходных документов.
По окончанию тестирования всех используемых статусов оператор техподдержки ЕПШ отправляет в ППУ письмо с подтверждением успешного прохождения тестирования.
Тема письма должна содержать: «Подключение к ИС ЕПШ. <�Название ППУ> Тестирование завершено».
3.2Запрос к Web-сервису ИС ЕПШ по методу registerPayment
Метод используется для загрузки платежных реквизитов от ППУ. Описание метода представлено в Форматах взаимодействия ЕПШ версии 1.6.5 п. 4.1.1, см. [3], Перечень исходных документов.
При системном сбое в обработке запроса ответ должен содержать сообщение об ошибке приложения (faultResponse). Базовым типом для сообщения об ошибке является тип FaultType, см. [3] Перечень исходных документов, п. 4.3.12.
Коды и описание ошибок см. Коды ошибок от ЕПШ.
Порядок тестирования метода registerPayment:
ППУ формирует сообщение registerPaymentRequest;
ППУ отправляет сообщение registerPaymentRequest в ИС ЕПШ (URL получателя см. в Сетевые взаимодействия ИС ЕПШ и ППУ);
ИС ЕПШ формирует ответ registerPaymentResponse;
ИС ЕПШ отправляет ППУ сообщение registerPaymentResponse.
Примеры сообщений:
3.3Запрос к Web-сервису ИС ЕПШ по методу registerPayments
Метод используется для единичной или пакетной загрузки платежных реквизитов от ППУ. Описание метода представлено в Форматах взаимодействия ЕПШ версии 1.6.5 п. 4.1.2, см. [3], Перечень исходных документов.
При системном сбое в обработке запроса ответ должен содержать сообщение об ошибке приложения (faultResponse). Базовым типом для сообщения об ошибке является тип FaultType, см. [3] Перечень исходных документов, п. 4.3.12.
Коды и описание ошибок см. Коды ошибок от ЕПШ.
Порядок тестирования метода registerPayments:
ППУ формирует сообщение registerPaymentsRequest;
ППУ отправляет сообщение registerPaymentsRequest в ИС ЕПШ (URL получателя см. в Сетевые взаимодействия ИС ЕПШ и ППУ);
ИС ЕПШ формирует ответ registerPaymentsResponse;
ИС ЕПШ отправляет ППУ сообщение registerPaymentsResponse.
Примеры сообщений:
3.4Запрос к Web-сервису ППУ по методу confirmPayment
Метод используется для загрузки статуса, платежа (факта оплаты) и зачисления из ИС ЕПШ в ППУ. Описание метода представлено в Форматах взаимодействия ЕПШ версии 1.6.5 п. 4.2.1, см. [3], Перечень исходных документов.
При системном сбое в обработке запроса ответ должен содержать сообщение об ошибке приложения (faultResponse). Базовым типом для сообщения об ошибке является тип FaultType, см. [3] Перечень исходных документов, п. 4.3.12.
Коды и описание ошибок см. Коды ошибок от ЕПШ.
Порядок тестирования метода confirmPayment:
После получения от ППУ registerPaymentRequest/registerPaymentsRequest ИС ЕПШ формирует сообщение confirmPaymentRequest, содержащий статус транзакции (см. Таблица ).
Примечание: Необходимо поочередно протестировать каждую ситуацию из Таблица . Поочередный порядок тестирования статусов см. в разделе Порядок тестирования статусов транзакций;
ИС ЕПШ отправляет сообщение confirmPaymentRequest ППУ (URL получателя указывает ППУ при регистрации, см. Общий порядок подключения ППУ к ИС ЕПШ);
ППУ формирует ответ confirmPaymentResponse;
ППУ отправляет в ИС ЕПШ сообщение confirmPaymentResponse.
Пример confirmPaymentRequest для статуса APRP:
Пример confirmPaymentRequest для статуса DECL:
Пример confirmPaymentRequest для статуса PROC:
Пример confirmPaymentRequest для статуса TOUT:
Пример confirmPaymentRequest для статуса UDECL:
Пример confirmPaymentResponse:
3.5Запрос к Web-сервису ИС ЕПШ по методу checkPaymentStatus
Метод используется для передачи ППУ статуса обработки распоряжения на оплату (статуса платежа) по запросу ППУ. Описание метода представлено в Форматах взаимодействия ЕПШ версии 1.6.5 п. 4.1.3, см. [3], Перечень исходных документов.
При системном сбое в обработке запроса ответ должен содержать сообщение об ошибке приложения (faultResponse). Базовым типом для сообщения об ошибке является тип FaultType, см. [3] Перечень исходных документов, п. 4.3.12.
Коды и описание ошибок см. Коды ошибок от ЕПШ.
Порядок тестирования метода checkPaymentStatus:
ППУ формирует сообщение checkPaymentStatusRequest;
ППУ отправляет сообщение checkPaymentStatusRequest в ИС ЕПШ (URL получателя см. в Сетевые взаимодействия ИС ЕПШ и ППУ);
ИС ЕПШ формирует ответ checkPaymentStatusResponse, содержащий статус транзакции (см. Таблица ).
Примечание: Необходимо поочередно протестировать каждую ситуацию из Таблица . Поочередный порядок тестирования статусов см. в разделе Порядок тестирования статусов транзакций;
ИС ЕПШ отправляет ППУ сообщение checkPaymentStatusResponse.
Примеры сообщений:
-
Коды сообщений от ЕПШ
Таблица Коды сообщений от ЕПШ
Код
|
Передаваемый текст
|
Причина
|
В ответ на сообщение registerPayment
|
0
|
SUCCESS
|
Запрос обработан успешно
|
90003
|
Signature verification failed
|
Ошибка подтверждения подписи
|
90001
|
Commission not calculated
|
Комиссия не рассчитана
|
90001
|
Unable to find payment record
|
Невозможно найти запись об оплате
|
90001
|
Found several commissions
|
Найдено несколько комиссий
|
90003
|
Unable to sign response
|
Невозможно подписать ответ
|
В ответ на сообщение registerPayments
|
0
|
SUCCESS
|
Запрос обработан успешно
|
90003
|
Signature verification failed
|
Ошибка подтверждения подписи
|
90001
|
Unexpected exception
|
Неожидаемое исключение
|
В ответ на сообщение checkPaymentStatusRequest
|
0
|
SUCCESS
|
Запрос обработан успешно
|
90001
|
Unexpected payment status
|
Неверный статус платежа
|
30014
|
Платеж не найден
|
Платеж не найден
|
В ответ на get-запрос получения квитанции об оплате (стандартные http коды)
|
200
|
ОК
|
Запрос обработан успешно
|
400
|
Bad Request
|
Запрос, переданный клиентом, не соответствует спецификации.
|
401
|
Unauthorized
|
Ошибка авторизации
|
403
|
Forbidden
|
Запрос, переданный клиентом, не входит в список разрешенных запросов для данного клиента.
|
406
|
Not Acceptable
|
Запрос не содержит headers или в запросе передано пустое body.
|
429
|
Too Many Requests
|
Сервис перегружен. Повторите запрос позднее.
|
500
|
Internal Server Error
|
При обработке запроса произошла внутренняя ошибка сервера.
|
Москва
2018
|