Формат взаимодействия
Формирование запроса
Для подключения к сервису ЮMoney и отправки запросов необходим специальный сертификат (подробнее о Взаимодействии по SSL).
Система контрагента и сервер ЮMoney взаимодействуют по протоколу HTTPS. Для выполнения каждой операции контрагент передает отдельный HTTP-запрос, содержащий криптопакет формата PKCS#7. На каждый запрос о зачислении ЮMoney отвечают сообщением о результате операции, помещенным в криптопакет PKCS#7.
Также используется криптографическая защита канала связи на базе протокола SSL (HTTPS) с аутентификацией по клиентскому сертификату.
Формирование запроса к серверу состоит из нескольких шагов.
Шаг 1. Распоряжение на исполнение операции
Распоряжение формируется как документ по стандарту XML 1.0 (Fifth Edition) в кодировке UTF‑8 по соответствующему стандарту.
Адрес сервера для вызова операции
https://deposit.yoomoney.ru:9094
Шаг 2. Формирование криптопакета
Сформированный документ помещается в криптоконтейнер формата PKCS#7 по стандарту CMS. Криптоконтейнер должен содержать АСП (цифровую подпись, аналог собственноручной подписи). Криптоконтейнер не должен содержать цепочки сертификации. Компрессия данных не используется. Шифрование не используется. Криптопакет должен быть закодирован в формате PEM (OpenSSL). Сертификат контрагента, который используется при изготовлении криптопакета, должен соответствовать стандарту X.509 Version 3.
Шаг 3. Передача запроса на сервер ЮMoney
Система контрагента формирует POST-запрос по протоколу HTTP/1.1 (см. HTTP/1.1, HTTP Over TLS, TLS). Криптопакет можно передавать одним из двух способов:
- Криптопакет помещается в тело POST-запроса, MIME-тип:
application/pkcs7-mime
. - Криптопакет передается как
multipart/form-data
вложение. MIME-тип:application/pkcs7-mime
. POST-запрос должен иметь только один 'part', криптопакет должен быть вложен как файл. Такой запрос может быть отправлен из стандартной HTML-формы для отправки файла на сервер (file upload, см. multipart/form-data).
Для авторизации запросов сервер ЮMoney проверяет АСП криптопакета.
Чтобы зачисления случайно не повторялись, каждой операции присваивается уникальный номер (
clientOrderId
).Пример сформированного запроса
POST /webservice/deposition/api/makeDeposition HTTP/1.1 Content-Type: application/pkcs7-mime Content-Length: 572 -----BEGIN PKCS7----- MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAaCA JIAEDEhlbGxvIFdvcmxkIQAAAAAAADGCAS8wggErAgEBMCowJTEWMBQGA1UECgwN Qm91bmN5IENhc3RsZTELMAkGA1UEBhMCQVUCAQIwCQYFKw4DAhoFAKBdMBgGCSqG SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMDgwNjE1MzE0 M1owIwYJKoZIhvcNAQkEMRYEFC73veYIzlQE6X1fBC+V+J8cIyhxMA0GCSqGSIb3 DQEBAQUABIGAEgIfi0XDEZwbdC8i0I5EPUnFe1PUnBMiRs3heYxdK+oXaG6v3axO Zr+VNG3tnW1W8M2xWtOcM4PdSTwx98WR1mWN8XDb2Wl9HiG6CGbmE7k4TgcDKhcg iZmLV+7anBv302qTprTbKY9vChaaVwclSdQBkjPvxhlPnpBM0C9YdYQAAAAAAAA= -----END PKCS7-----
Получение ответа
В ответ на запрос ЮMoney возвращают результат выполнения операции. MIME-тип:
application/pkcs7-mime
. Данные помещаются в криптоконтейнер формата PKCS#7. Криптоконтейнер содержит АСП (цифровую подпись, аналог собственноручной подписи). Криптоконтейнер не содержит цепочки сертификации. Компрессия данных не используется. Шифрование не используется. Криптопакет закодирован в формате PEM (OpenSSL). Криптоконтейнер содержит XML-документ с результатом обработки запроса.При получении ответа сервера система контрагента проверяет подпись ответа, чтобы убедиться, что ответ отправлен сервером ЮMoney и его содержимое не было изменено третьей стороной. Следует учитывать, что в ответе могут быть дополнительные поля, не описанные в данном протоколе, но не нарушающие совместимость.
Что почитать еще