Протокол обмена информацией при осуществлении переводов: зачисления на счета Яндекс.Денег, мобильные телефоны, банковские счета и карты Протокол 3.1.1, редакция от 30.07.2015 Оглавление 1. 2. Общие сведения .................................................................................................................................. 2 1.1 Назначение документа ............................................................................................................... 2 1.2 Формирование запроса .............................................................................................................. 2 1.3 Получение ответа ........................................................................................................................ 3 Методы протокола .............................................................................................................................. 3 2.1 2.1.1 Формат запросов ИС............................................................................................................ 4 2.1.2 Формат ответов Оператора ................................................................................................ 6 2.2 Запрос баланса Контрагента (balance) ....................................................................................... 7 2.2.1 Формат запроса ИС .............................................................................................................. 7 2.2.2 Формат ответа Оператора................................................................................................... 8 2.3 3. Зачисление переводов (makeDeposition). ................................................................................. 3 Уведомление Контрагента о неуспешном статусе перевода (errorDepositionNotification) .. 8 2.3.1 Формат запроса Оператора ................................................................................................ 9 2.3.2 Формат ответа ИС ................................................................................................................ 9 Зачисление переводов на банковский счет, карту, мобильный телефон ...................................... 9 3.1 Перевод на банковскую карту ..................................................................................................10 3.1.1 4. Синоним номера банковской карты ................................................................................11 3.2 Перевод на банковский счет ....................................................................................................13 3.3 Перевод на счет мобильного телефона ..................................................................................14 Справочники ......................................................................................................................................15 4.1 Состояния обработки запроса (status) .....................................................................................15 4.2 Коды ошибок обработки запросов (error)...............................................................................15 4.3 Типы данных ..............................................................................................................................16 2 1. Общие сведения 1.1 Назначение документа Данный документ описывает взаимодействие информационной системы (далее – ИС) Контрагента с ООО НКО «Яндекс.Деньги» (далее – Оператор, Яндекс.Деньги), необходимое для уведомления о зачислении средств пользователям. Зачисления могут быть совершены не только на счета Яндекс.Денег, но и на рублевые банковские счета, банковские карты, счета мобильных телефонов. Процесс взаимодействия позволяет: 1. Проверять возможность зачисления переводов (testDeposition). 2. Передавать запросы на зачисление переводов (makeDeposition). 3. Отслеживать баланс средств Контрагента по договору, заключенному с Оператором (balance). 4. Получать уведомления о неуспешном статусе переводов на банковский счет, карту, мобильный телефон (errorDepositionNotification). 1.2 Формирование запроса Контрагент должен получить сертификат, с использованием которого он будет подключаться и формировать запросы к Оператору. См. документ «Процедура обмена сертификатами». Контрагент и Оператор взаимодействуют с помощью протокола HTTPS. Для выполнения каждой из операций Контрагент передает отдельный HTTP-запрос, содержащий криптопакет формата PKCS#7. На каждый запрос о зачислении сервер Оператора отвечает сообщением о результате операции, помещенным в криптопакет PKCS#7. Также используется криптографическая защита канала связи на базе протокола SSL (HTTPS), с аутентификацией по клиентскому сертификату. Кроме того, ограничивается список IP-адресов, с которых допустимо присылать запросы на сервер Оператора. Формирование запроса к серверу Оператора состоит из следующих шагов: 1. Распоряжение на исполнение операции. Распоряжение формируется как документ по стандарту XML 1.0 (Fifth Edition): http://www.w3.org/TR/xml/. Документ должен быть сформирован в кодировке UTF-8 согласно стандарту: http://www.ietf.org/rfc/rfc2279.txt. 2. Формирование криптопакета. Сформированный документ помещается в криптоконтейнер формата PKCS#7 согласно стандарту http://www.ietf.org/rfc/rfc5652.txt. Криптоконтейнер должен содержать АСП (цифровую подпись, аналог собственноручной подписи). Криптоконтейнер не должен содержать цепочки сертификации. Компрессия данных не используется. Шифрование не используется. Криптопакет должен быть закодирован в формате PEM (OpenSSL). Сертификат Контрагента, используемый при изготовлении криптопакета, должен соответствовать стандарту X.509 Version 3 (http://www.ietf.org/rfc/rfc2459.txt). 3. Передача запроса серверу Оператора. ИС формирует POST-запрос по протоколу HTTP/1.1 (http://www.ietf.org/rfc/rfc2616.txt, http://www.ietf.org/rfc/rfc2818.txt, http://www.ietf.org/rfc/rfc4346.txt). Криптопакет может быть передан одним из двух способов: a) Криптопакет помещается в тело POST-запроса, MIME-тип: application/pkcs7-mime. b) Криптопакет передается как multipart-data вложение. MIME-тип: application/pkcs7-mime. POST-запрос должен иметь только один 'part', криптопакет должен быть вложен как файл. Такой запрос может быть отправлен из стандартной HTML-формы для file upload (отправки файла на сервер). См. http://www.ietf.org/rfc/rfc2388.txt. Для авторизации запросов сервер Оператора проверяет АСП криптопакета. 3 Защита от ошибочных повторов операций зачисления обеспечивается наличием уникального номера операции (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----- 1.3 Получение ответа Результат выполнения запроса возвращается Оператором в ответе на HTTP-запрос. MIME-тип: application/pkcs7-mime. Данные помещены в криптоконтейнер формата PKCS#7. Криптоконтейнер содержит АСП (цифровую подпись, аналог собственноручной подписи). Криптоконтейнер не содержит цепочки сертификации. Компрессия данных не используется. Шифрование не используется. Криптопакет закодирован в формате PEM (OpenSSL). Криптоконтейнер содержит XML-документ с результатом обработки запроса. При получении ответа сервера Контрагент выполняет проверку подписи ответа, чтобы убедиться, что ответ отправлен сервером Оператора, а также что его содержимое не было изменено третьей стороной. Следует также учитывать, что в ответе могут быть дополнительные поля, не описанные в данном протоколе, но не нарушающие совместимость. Таблица 1.3.1. Возможные HTTP-коды ответа HTTP-код Описание 200 OK Запрос принят к обработке. Отправлен ответ в соответствии с настоящим протоколом. MIME-тип: application/pkcs7-mime. Запрос не принят к обработке. Тело запроса испорчено, сервер не смог прочитать или разобрать запрос. Возможные причины: запрос невозможно разобрать; неверный MIME-тип (Content-Type). Сертификат Контрагента не зарегистрирован у Оператора, либо в настоящий момент шлюз отключен. Технические проблемы Оператора. Обратитесь в службу поддержки. Запрос отправлен методом, отличным от POST. 400 Bad Request 403 Forbidden 500 Internal Server Error 501 Not Implemented 2. Методы протокола 2.1 Зачисление переводов (makeDeposition). Операция используется для того, чтобы инициировать зачисление перевода на счет Оператора. Обратите внимание: Предварительно необходимо осуществлять проверку возможности зачисления перевода (операция testDeposition) до принятия средств от клиента. Запрос testDeposition позволяет проверить возможность зачисления указанной суммы получателю, в том числе корректность и существование идентификатора пользователя (номера счета или телефона), 4 лимиты и отсутствие запретов на проведение операции. При приеме запроса testDeposition зачисление перевода не производится. Шаблон адреса операций: https://server:port/webservice/deposition/api/testDeposition https://server:port/webservice/deposition/api/makeDeposition Правила формирования и обработки запросов на зачисление переводов: 1. Каждое зачисление должно быть сформировано с уникальным значением идентификатора (clientOrderId). 2. Если на операцию «зачисление» получен ответ «Успех» (status=0), то перевод зачислен успешно. 3. Если запрос отправлен с уже ранее обработанным идентификатором (clientOrderId) и остальные параметры запроса, кроме requestDT, совпадают с предыдущей попыткой, то Оператор вернет результат обработки ранее отправленного запроса. 4. Если запрос отправлен с уже ранее обработанным идентификатором (clientOrderId) и какиелибо параметры, кроме requestDT, имеют отличные от первой попытки значения, то Оператор отвергает такой запрос и возвращает в ответе status=3, error=26. 5. Оператор обрабатывает полученный запрос немедленно. В случае если запрос невозможно обработать в течение нескольких секунд, возвращается ответ «в процессе обработки» (status=1). В этом случае результат операции неизвестен, и ИC следует повторить запрос с теми же данными для получения окончательного ответа. Рекомендуется следующий режим повтора: первый повтор через 1 минуту, следующие три с промежутком в 5 минут, далее не более одного раза в 30 минут. Аналогичный режим повтора рекомендуется в случае неполучения ответа от Оператора или получения ответа HTTP status 500. 6. При неполучении ответа от Оператора, а также при нечетком ответе (например: HTTP status 500) ИС Контрагента следует повторить запрос с теми же данными для получения окончательного ответа. Рекомендуется режим повтора как в предыдущем пункте. 7. Статус транзакции, находящейся в обработке (status=1), может измениться как на «успех» (status=0), так и на «отвергнут» (status=3). 8. Если перевод отвергнут Оператором, то в ответе возвращается status=3 и error= с кодом причины отказа. В некоторых случаях может присутствовать поле techMessage, содержащее дополнительную поясняющую информацию в виде текста произвольного формата. Этот текст предназначен для анализа техническими специалистами и не должен отображаться в какомлибо интерфейсе пользователя. 9. Если перевод отвергнут с ошибкой status=3 error=45, Контрагенту необходимо перечислить принятые переводы на расчетный счет Оператора, убедиться, что баланс увеличился (отправив запрос баланса), и провести переводы с НОВЫМИ идентификаторами операций (clientOrderId). 10. Ошибка status=3 error=21 означает, что запрашиваемая операция запрещена для данного Контрагента. 2.1.1 Формат запросов ИС Таблица 2.1.1.1. Параметры запроса операций testDeposition, makeDeposition (все параметры обязательные, кроме отмеченных символом «*») Параметр Тип Описание clientOrderId ClientTransactionNumber Идентификатор операции. Должен быть уникальным для Контрагента на протяжении всей истории операций. Рекомендуемые значения: целое положительное число в десятичной системе счисления. 5 requestDT xs:dateTime dstAccount YMAccount amount currency CurrencyAmount CurrencyCode agentId subAgentId (*) xs:long xs:long contract xs:normalizedString, 128 символов xs:normalizedString, до 64 Идентификатор сервиса. Выдается Оператором. символов xs:compexType Элемент запроса для передачи дополнительных параметров перевода. Возможные значения представлены в разделе 3 «Зачисление переводов на банковский счет, карту, мобильный телефон». serviceId (*) paymentParams (*) Дата и время формирования запроса операции на стороне ИС, по часам Контрагента. Идентификатор получателя перевода. В качестве идентификатора может использоваться: счет пользователя в Яндекс.Деньгах (вида 4100175017397; длина существующих в Яндекс.Деньгах Счетов на данный момент варьируется от 11 до 16 цифр); номер телефона пользователя, привязанный к Счету в Яндекс.Деньгах (допускаются номера российских операторов, рекомендуемое представление – 10значные номера вида 9217575400, без дополнительных символов и пробелов); код платежа в пользу 3-х лиц (номера, начинающиеся с «255», «256», «257»; список периодически расширяется). Ряд значений описан в разделе 3 «Зачисление переводов на банковский счет, карту, мобильный телефон». Сумма перевода, например: 12.34 Код валюты перевода. Возможные значения: 643 — рубль Российской Федерации; 10643 – рубли для тестовой среды Оператора. Идентификатор Контрагента. Выдается Оператором. Уникальный идентификатор канала приема переводов. Указывается только в случае разделения переводов по нескольким каналам. Выдается Оператором. до Основание для зачисления перевода. Пример запроса проверки возможности зачисления: <?xml version="1.0" encoding="UTF-8"?> <testDepositionRequest agentId="123" clientOrderId="12345" requestDT="2011-07-01T20:38:00.000Z" dstAccount="410011234567" amount="10.00" currency="643" contract="Выигрыш в игре Сфера"/> Пример запроса на зачисление c указанием subAgentId и serviceId: 6 <?xml version="1.0" encoding="UTF-8"?> <makeDepositionRequest agentId="123" subAgentId="456" clientOrderId="12345" requestDT="2011-07-01T20:38:00.000Z" dstAccount="410011234567" amount="10.00" currency="643" contract="Выигрыш в игре Сфера"> <serviceId>456</serviceId> </makeDepositionRequest> Пример запроса на зачисление с указанием paymentParams: <?xml version="1.0" encoding="UTF-8"?> <makeDepositionRequest agentId="200225" clientOrderId="272517" requestDT="2013-04-12T00:01:54.000Z" dstAccount="2570066957329" amount="249.00" currency="643" contract=""> <paymentParams> <pof_offerAccepted>1</pof_offerAccepted> <PROPERTY1>905</PROPERTY1> <PROPERTY2>2075556</PROPERTY2> <smsPhoneNumber>79653457676</smsPhoneNumber> </paymentParams> </makeDepositionRequest> 2.1.2 Формат ответов Оператора Таблица 2.1.2.1. Параметры ответа операций testDeposition, makeDeposition Параметр Тип Описание status xs:int error xs:int clientOrderId processedDT ClientTransactionNumber xs:dateTime balance xs:decimal techMessage xs:string Результат выполнения операции. По значению этого поля ИС Контрагента должна принимать решение о состоянии запроса. См. табл. 4.1.1 «Коды состояний запроса». Код ошибки выполнения запроса (см. табл. 4.2.1). Является дополнительной расшифровкой к полю status. В случае успеха поле отсутствует. Копия параметра clientOrderId запроса. Время обработки запроса по часам сервера Оператора. В случае успеха операции зачисления — фактическое время зачисления средств на счет. Разница между суммой переводов, принятых Контрагентом в пользу Оператора, и суммой средств, перечисленных Контрагентом на расчетный счет Оператора. Может быть отрицательной. Данный параметр передается в ответе только на запрос makeDeposition и только если зачисление выполнено успешно. Опциональное поле. Может содержать дополнительный поясняющий текст к отказам в приеме перевода. Этот текст содержит техническую информацию и не должен отображаться в какомлибо интерфейсе пользователя. 7 identification xs:string При выполнении перевода на банковский счет, карту, мобильный телефон причина отказа в приеме перевода содержится только в ответе на запрос makeDeposition. Поле содержит информацию о статусе счета в системе Оператора. Может отсутствовать в ответе. Возможные значения: anonymous – не идентифицированный; reviewed – упрощенно идентифицированный; identified – идентифицированный. Актуальная информация о статусах пользователей доступна по ссылке: https://money.yandex.ru/doc.xml?id=526544 Пример ответа о возможности зачисления: <?xml version="1.0" encoding="UTF-8"?> <testDepositionResponse clientOrderId="12345" status="0" processedDT="2011-07-01T20:38:01.000Z"/> Пример ответа об успешном зачислении: <?xml version="1.0" encoding="UTF-8"?> <makeDepositionResponse clientOrderId="12345" status="0" processedDT="2011-07-01T20:38:01.000Z" balance="1000.00"/> 2.2 Запрос баланса Контрагента (balance) В ответе на запрос Оператор возвращает разницу между суммой переводов, принятых Контрагентом в пользу Оператора, и суммой средств, перечисленных Контрагентом на расчетный счет Оператора. Может быть отрицательной. Шаблон адреса операций: https://server:port/webservice/deposition/api/balance 2.2.1 Формат запроса ИС Таблица 2.2.1.1 Параметры запроса операции balance Параметр Тип Описание clientOrderId ClientTransactionNumber requestDT xs:dateTime agentId xs:long Идентификатор операции. Должен быть уникальным для Контрагента на протяжении всей истории операций. Рекомендуемые значения: целое положительное число в десятичной системе счисления. Дата и время формирования запроса операции на стороне ИС, по часам Контрагента. Идентификатор Контрагента. Выдается Оператором. Пример запроса проверки баланса: <?xml version="1.0" encoding="UTF-8"?> <balanceRequest agentId="123" clientOrderId="12345" requestDT="2011-07-01T20:38:00.000Z"/> 8 2.2.2 Формат ответа Оператора Таблица 2.2.2.1 Параметры ответа операции balance Параметр Тип Описание status xs:int error xs:int clientOrderId processedDT ClientTransactionNumber xs:dateTime balance xs:decimal Результат выполнения операции. По значению этого поля ИС Контрагента должна принимать решение о состоянии запроса. См. табл. 4.1.1 «Коды состояний запроса». Код ошибки выполнения запроса (см. табл. 4.2.1). Является дополнительной расшифровкой к полю status. В случае успеха поле отсутствует. Копия параметра clientOrderId запроса. Время обработки запроса по часам сервера Оператора. Разница между суммой переводов, принятых Контрагентом в пользу Оператора, и суммой средств, перечисленных Контрагентом на расчетный счет Оператора. Может быть отрицательной. Пример ответа о состоянии баланса: <?xml version="1.0" encoding="UTF-8"?> <balanceResponse clientOrderId="12345" status="0" processedDT="2011-07-01T20:38:01.000Z" balance="1000.00"/> 2.3 Уведомление Контрагента о неуспешном статусе перевода (errorDepositionNotification) Данный запрос позволяет сообщить Контрагенту о неуспешном статусе (возврате) перевода на банковский счет, карту, мобильный телефон (см. раздел 3). Возврат осуществляется в случае: для перевода на банковскую карту - банк-эмитент карты получателя отверг платеж; для перевода на банковский счет - банк отверг платеж, необходимо проверить корректность реквизитов; для перевода на мобильный телефон – оператор сотовой связи отверг платеж. Правила формирования и обработки запросов о неуспешном статусе перевода: 1. Уведомление о неуспешном статусе перевода Оператор передает ИС Контрагента отдельным HTTP-запросом, содержащим криптопакет формата PKCS#7. На каждое уведомление ИС Контрагента отвечает сообщением о результате операции, помещенным в криптопакет PKCS#7. Правила формирования запроса и ответа определены в разделах 1.2 и 1.3. Оператор отправляет уведомление на указанный в технической анкете адрес (errorDepositionNotificationUrl). 2. ИС Контрагента должна отвечать на запросы Оператора в течение 10 секунд. Уведомление считается доставленным если ответ ИС Контрагента имеет статус «Успех» (status=0). 3. При длительном многократном отсутствии ответа Контрагента (либо при многократных технических ошибках) ИС Оператора будет повторять попытки доставки уведомления в течение суток: первый раз – через 2 минуты, потом через 4, 10 и далее, с увеличением интервала. 4. Уведомление содержит идентификатор операции (clientOrderId), полученный от ИС Контрагента в запросе на зачисление перевода (makeDeposition). 9 2.3.1 Формат запроса Оператора Таблица 2.3.1.1 Параметры запроса операции errorDepositionNotification Параметр Тип Описание clientOrderId ClientTransactionNumber requestDT xs:dateTime dstAccount amount YMAccount CurrencyAmount Идентификатор операции, полученный от ИС Контрагента в запросе на зачисление перевода (makeDeposition) Дата и время формирования запроса операции на стороне Оператора, по часам Оператора. Идентификатор получателя перевода. Сумма перевода, например: 12.34. currency CurrencyCode error xs:string Код валюты перевода. Возможные значения: 643 — рубль Российской Федерации; 10643 — рубли для тестовой среды Оператора. Код ошибки операции (см. табл. 4.2.1). Пример запроса errorDepositionNotification: <?xml version="1.0" encoding="UTF-8"?> <errorDepositionNotificationRequest clientOrderId="12345" requestDT="2011-07-01T20:38:00.000Z" dstAccount="410011234567" amount="10.00" currency="643" error="31"/> 2.3.2 Формат ответа ИС Таблица 2.3.2.1 Параметры ответа операции errorDepositionNotification Параметр Тип Описание status xs:int clientOrderId processedDT ClientTransactionNumber xs:dateTime Результат выполнения операции. По значению этого поля Оператор принимает решение о состоянии запроса. См. табл. 4.1.1 «Коды состояний запроса». Копия параметра clientOrderId запроса. Время обработки запроса по часам ИС Контрагента. Пример ответа на запрос errorDepositionNotification: <?xml version="1.0" encoding="UTF-8"?> <errorDepositionNotificationResponse clientOrderId="12345" status="0" processedDT="2011-07-01T20:38:01.000Z"/> 3. Зачисление переводов на банковский счет, карту, мобильный телефон Помимо зачисления средств на счета Оператора возможно выполнение переводов на рублевый банковский счет, банковскую карту или счет мобильного телефона, в зависимости от значения параметра dstAccount. В параметрах paymentParams передаются данные, необходимые для зачисления на соответствующий счет. Среди них всегда обязательно передается согласие получателя с офертой Яндекс.Денег (pof_offerAccepted). Ссылку на оферту Контрагент должен разместить на своем сайте (URL указан в Договоре). 10 В запросах на зачисления на банковский счет или банковскую карту для соответствия требованиям российского законодательства обязательно передаются персональные данные плательщика. 3.1 Перевод на банковскую карту Идентификатор получателя перевода dstAccount="25700130535186". В параметрах запроса Оператору Контрагент передает набор данных получателя: синоним банковской карты, паспортные данные. Таблица 3.1.1 Параметры элемента paymentParams Параметр Тип Описание Данные карты: skr_destinationCardSynonim xs:string, до 100 символов Получение и хранение полного номера карты попадает под действие стандарта PSI DSS, поэтому для переводов используется синоним банковской карты. См. раздел 3.1.1 Подтверждение принятия оферты: pof_offerAccepted xs:int, 1 символ Флаг принятия оферты пользователем (1 — принята). Персональные данные плательщика: pdr_lastName xs:string, до 100 кириллических Фамилия плательщика. или латинских символов символов pdr_firstName xs:string, до 100 кириллических Имя плательщика. или латинских символов символов pdr_middleName xs:string, до 100 кириллических Отчество плательщика. или латинских символов символов, необязательный pdr_docNumber xs:long, 10 символов Серия и номер паспорта гражданина РФ (без пробелов). pdr_docIssueYear xs:int, 4 символа Год выдачи паспорта в формате ГГГГ pdr_docIssueMonth xs:int, 2 символа Месяц выдачи паспорта в формате ММ pdr_docIssueDay xs:int, 2 символа День выдачи паспорта в формате ДД smsPhoneNumber xs:long, до 20 символов Номер телефона плательщика международном формате (79...). pdr_birthDate xs:string, 10 символов Дата рождения в формате ДД.ММ.ГГГГ pdr_birthPlace xs:string, до 100 кириллических Место рождения плательщика. символов pdr_docIssuedBy xs:string, до 100 кириллических Кем выдан паспорт символов плательщика. pdr_country xs:int Цифровой код страны (РФ – 643). pdr_city xs:string, до 30 кириллических Город регистрации символов плательщика. 11 pdr_address pdr_postcode xs:string, до 100 кириллических Адрес регистрации символов плательщика. xs:long, 6 символов Индекс плательщика. Пример запроса для зачисления средств на банковскую карту: <?xml version="1.0" encoding="UTF-8"?> <makeDepositionRequest agentId="200225" clientOrderId="272517" requestDT="2013-04-12T00:01:54.000Z" dstAccount="25700130535186" amount="249.00" currency="643" contract=""> <paymentParams> <skr_destinationCardSynonim>b0af887ae9ad01fe01ca65df7cff19a7b5fcbf8b_scn</skr_destin ationCardSynonim> <pdr_firstName>Владимир</pdr_firstName> <pdr_middleName>Владимирович</pdr_middleName> <pdr_lastName>Владимиров</pdr_lastName> <pdr_docType>21</pdr_docType> <pdr_docNumber>4002109067</pdr_docNumber> <pdr_postcode>194044</pdr_postcode> <pdr_country>643</pdr_country> <pdr_city>Санкт-Петербург</pdr_City> <pdr_address>Большой пр, ПС, д.12</pdr_address> <pdr_birthDate>24.05.1987</pdr_birthDate> <pdr_birthPlace>Новосибирск</pdr_birthPlace> <pdr_docIssueYear>1999</pdr_docIssueYear> <pdr_docIssueMonth>7</pdr_docIssueMonth> <pdr_docIssueDay>30</pdr_docIssueDay> <pdr_docIssuedBy>ТП №20 по СПб и ЛО</pdr_docIssuedBy> <pof_offerAccepted>1</pof_offerAccepted> <smsPhoneNumber>79653457676</smsPhoneNumber> </paymentParams> </makeDepositionRequest> Обратите внимание: в случае возникновения ошибки при выполнении перевода на банковскую карту ответ Оператора может содержать следующий дополнительный поясняющий текст (techMessage): notRegistrationRecord – Не хватает обязательных параметров (pdr_). Дополнительно указывается перечень недостающих полей. Банк отклонил перевод денег на данную карту. Банк отклонил операцию. Превышен лимит операций. 3.1.1 Синоним номера банковской карты Получение и хранение номера банковской карты подпадает под действие стандарта PCI DSS. Поэтому Оператор хранит данные банковских карт на своей стороне и предоставляет Контрагенту синонимы карт skr_destinationCardSynonim и их маски skr_destinationCardPanmask для отображения пользователю, а также дополнительные параметры карты, которые удалось определить в процессе обработки. Контрагент может хранить синонимы, маски и дополнительные параметры карты на своей стороне без опасения утечки: их публикация не приводит к финансовым или имиджевым потерям. Контрагент на своем сайте размещает форму ввода данных карты. После подтверждения ввода данные формы передаются по адресу https://paymentcard.yamoney.ru/gates/card/storeCard методом POST. Сервис обрабатывает полученные данные и при помощи метода GET перенаправит плательщика на адрес, указанный в skr_successUrl или skr_errorUrl. В случае успеха к адресу добавляются синоним, маска и дополнительные параметры карты плательщика. 12 Параметр skr_destinationCardNumber skr_responseFormat skr_errorUrl skr_successUrl Таблица 3.1.1.1 Параметры запроса на получение синонима карты Тип Описание xs:string, до 25 символов Номер банковской карты. xs:string, до 8 символов Формат ответа на запрос. Возможные значения: redirect либо json. Если параметр не передан – по умолчанию используется redirect. xs:string, до 250 символов Адрес редиректа при ошибке. xs:string, до 250 символов Адрес редиректа при успехе. Пример кода страницы для сохранения номера карты на стороне Яндекс.Денег и получения ее синонима: <html> <body> <form action=https://paymentcard.yamoney.ru/gates/card/storeCard method=post> <input type=text name=skr_destinationCardNumber> <br> <input type=hidden name=skr_responseFormat value=redirect> <br> <input type=text name="skr_errorUrl" value="http://money.yandex.ru"> <br> <input type=text name="skr_successUrl" value="http://money.yandex.ru"> <br> <input type=submit value="Сохранить"> </body> </html> Параметр skr_destinationCardPanmask skr_destinationCardSynonim reason Дополнительные параметры skr_destinationCardBankName skr_destinationCardCountryCode skr_destinationCardPaymentSystem skr_destinationCardProductName skr_destinationCardProductCode Таблица 3.1.1.2 Параметры ответа на запрос Тип Описание xs:string, до 25 символов Маска банковской карты. xs:string, до 100 символов Синоним банковской карты. xs:string, до 100 символов Результат обработки данных: success при успехе, cardinvalid при неуспехе. xs:string, до 200 символов Наименование банка, выпустившего карту. xs:string, 3 символа Цифровой код страны выпуска карты. xs:string, до 100 символов Наименование платежной системы карты. xs:string, до 1000 Наименование карточного символов продукта. xs:string, до 20 символов Код карточного продукта. Пример ответа redirect формата: [skr_successUrl]/?skr_destinationCardProductCode=P&skr_destinationCardProductName=V isa+Gold&skr_destinationCardSynonim=4878b27eaec2022c5a6a4e82d971a6271bf6fcd8_scn&sk r_destinationCardType=Visa&skr_destinationCardCountryCode=616&skr_destinationCardBa nkName=Norwegian+Visa-Bankgroup&skr_destinationCardPanmask=444444******4448 Пример ответа json формата при успешном сохранении номера карты: {"storeCard":{"skr_destinationCardSynonim":"e651e9fd23d00efa97fc713682fcc7f86faeb846 _scn","skr_destinationCardPanmask":"471408*****1089"}} Пример ответа json формата при неуспешном сохранении номера карты: 13 {"storeCard":{"reason":"cardinvalid"}} Синоним номера карты, полученный в ответе от Оператора, Контрагент использует в запросах на зачисление переводов (см. выше). Оператор по полученному синониму определяет номер карты получателя. 3.2 Перевод на банковский счет Идентификатор получателя перевода dstAccount="2570066962077". В параметрах запроса Оператору Контрагент передает набор данных получателя: номер банковского счета, паспортные данные. Таблица 3.2.1 Параметры запроса Имя поля paymentParams Тип Описание Реквизиты счета: CustAccount xs:long, 20 символов Номер банковского счета получателя. BankName xs:string, кириллические Наименование банка. символы BankCity xs:string, кириллические Город отделения банка. символы BankBIK xs:long, 9 символов БИК банка. BankCorAccount xs:long, 20 символов payment_purpose xs:string, до 100 кириллических символов Подтверждение принятия оферты: pof_offerAccepted xs:int, 1 символ Персональные данные плательщика: pdr_lastName xs:string, до 100 кириллических или латинских символов символов pdr_firstName xs:string, до 100 кириллических или латинских символов символов pdr_middleName xs:string, до 100 кириллических или латинских символов символов, необязательный pdr_docNumber xs:long, 10 символов pdr_docIssueYear xs:int, 4 символа pdr_docIssueMonth xs:int, 2 символа pdr_docIssueDay xs:int, 2 символа pdr_address xs:string, до 100 кириллических символов xs:string, до 20 символов smsPhoneNumber Корреспондентский счет отделения банка. Назначение платежа или иные сведения для банка (может быть пустым). Флаг принятия оферты пользователем (1 — принята). Фамилия плательщика. Имя плательщика. Отчество плательщика. Серия и номер паспорта гражданина РФ (без пробелов). Год выдачи паспорта в формате ГГГГ Месяц выдачи паспорта в формате ММ День выдачи паспорта в формате ДД Адрес регистрации плательщика. Номер телефона плательщика международном формате (79...). 14 Обратите внимание: впараметре payment_purpose Контрагент по своему усмотрению может указать для банка любые дополнительные данные для зачисления перевода. Пример запроса на зачисление перевода на банковский счет: <?xml version="1.0" encoding="UTF-8"?> <makeDepositionRequest agentId="200225" clientOrderId="272517" requestDT="2013-04-12T00:01:54.000Z" dstAccount="2570066962077" amount="249.00" currency="643" contract=""> <paymentParams> <CustAccount>40817810255030943620</CustAccount> <BankBIK>042809679</BankBIK> <BankName>ОТДЕЛЕНИЕ 8607 СБЕРБАНКА РОССИИ</BankName> <BankCity>ТВЕРЬ</BankCity> <BankINN>7707083893</BankINN> <BankCorAccount>30101810700000000679</BankCorAccount> <pdr_firstName>Владимир</pdr_firstName> <pdr_middleName>Владимирович</pdr_middleName> <pdr_lastName>Владимиров</pdr_lastName> <pof_offerAccepted>1</pof_offerAccepted> <pdr_docType>21</pdr_docType> <pdr_docNumber>4002109067</pdr_docNumber> <pdr_docIssueYear>1999</pdr_docIssueYear> <pdr_docIssueMonth>7</pdr_docIssueMonth> <pdr_docIssueDay>30</pdr_docIssueDay> <smsPhoneNumber>79653457676</smsPhoneNumber> </paymentParams> </makeDepositionRequest> 3.3 Перевод на счет мобильного телефона Протокол позволяет Контрагенту направлять запросы на зачисления средств на счета абонентов российских сотовых операторов МегаФон, Билайн, МТС, Теле2. Оператор определяется значением dstAccount. Таблица 3.3.1. Идентификаторы получателя Тип счета получателя Счет мобильного телефона абонента Мегафон Счет мобильного телефона абонента Билайн Счет мобильного телефона абонента МТС Счет мобильного телефона абонента Tele2 Имя поля paymentParams Тип Номер мобильного телефона получателя: PROPERTY1 xs:string, 3 цифры PROPERTY2 xs:string, 7 цифр Подтверждение принятия оферты: pof_offerAccepted xs:int dstAccount 2570066959438 2570066957329 2570066959750 25700583516540 Описание Код оператора сотовой связи. Номер телефона. Флаг принятия оферты пользователем (1 — принята). Пример запроса на зачисление перевода на счет мобильного телефона: 15 <?xml version="1.0" encoding="UTF-8"?> <makeDepositionRequest agentId="200225" clientOrderId="272517" requestDT="2013-04-12T00:01:54.000Z" dstAccount="2570066957329" amount="249.00" currency="643" contract=""> <paymentParams> <pof_offerAccepted>1</pof_offerAccepted> <PROPERTY1>905</PROPERTY1> <PROPERTY2>2075556</PROPERTY2> </paymentParams> </makeDepositionRequest> 4. Справочники 4.1 Состояния обработки запроса (status) Таблица 4.1.1. Коды состояний обработки запросов Код состояния 0 1 3 Описание Успех. Обработка завершена. Запрос выполнен успешно. В обработке. Запрос в процессе обработки. Возвращается, если истекло время ожидания завершения обработки запроса. Требуется повторить запрос для уточнения результата. Отвергнут. Обработка завершена. Запрос обработан и отвергнут. При выполнении запросов к серверу Оператора причина отказа передается в параметре error. 4.2 Коды ошибок обработки запросов (error) Таблица 4.2.1. Ошибки, возвращаемые при обработке запросов Код Описание ошибки ошибки Ошибки параметров запроса 10 Ошибка синтаксического разбора XML-документа. Синтаксис документа нарушен, либо отсутствуют обязательные элементы XML. 11 Отсутствует или неверно задан идентификатор Контрагента (agentId). 12 Отсутствует или неверно задан идентификатор канала приема переводов (subAgentId). 14 Отсутствует или неверно задана валюта (currency). 15 Отсутствует или неверно задано время формирования документа (requestDT). 16 Отсутствует или неверно задан идентификатор получателя средств (dstAccount). 17 Отсутствует или неверно задана сумма (amount). 18 Отсутствует или неверно задан номер транзакции (clientOrderId). 19 Отсутствует или неверно задано поле текст контракта (contract). 21 Запрашиваемая операция запрещена для данного типа подключения Контрагента. 26 Операция с таким номером транзакции (clientOrderId), но другими параметрами уже выполнялась. 50 Невозможно открыть криптосообщение, ошибка целостности пакета. 51 АСП не подтверждена (данные подписи не совпадают с документом). 53 Запрос подписан неизвестным Оператору сертификатом. 55 Истек срок действия сертификата ИС Контрагента. Ошибки обработки зачисления 40 Счет закрыт. 16 41 42 43 44 45 46 48 Счет в Яндекс.Деньгах заблокирован. Данная операция для счета запрещена. Счета с таким идентификатором не существует. Превышено ограничение на единовременно зачисляемую сумму. Превышено ограничение на максимальную сумму зачислений за период времени. Недостаточно средств для проведения операции. Сумма операции слишком мала. Ошибка запроса зачисления перевода на банковский счет, карту, мобильный телефон. 201 Превышен лимит остатка на счете получателя. Прочие ошибки 30 Технические проблемы на стороне Оператора. Рекомендуется повторять запрос с разумным интервалом (см. рекомендации в разделе 1.3). 31 Получатель перевода отклонил платеж (под получателем понимается сотовый оператор или процессинговый банк). Общее описание лимитов по операциям: https://money.yandex.ru/doc.xml?id=527096 Информация о комиссиях: https://money.yandex.ru/doc.xml?id=524834 4.3 Типы данных Таблица 4.3.1. Определения типов данных протокола Тип Описание xs:int 32-bit целое знаковое число. Int32, определенный в стандарте: http://www.w3.org/TR/xmlschema-2/#int. 64-bit целое знаковое число. Int64, определенный в стандарте: http://www.w3.org/TR/xmlschema-2/#long. Десятичное число с фиксированной точкой, определенное в стандарте: http://www.w3.org/TR/xmlschema-2/#decimal. Текстовая строка, определенная в стандарте: http://www.w3.org/TR/xmlschema-2/#string. Текстовая строка, определенная в стандарте: http://www.w3.org/TR/xmlschema-2/#normalizedString. Временная метка в формате согласно рекомендациям: http://www.w3.org/TR/xmlschema-2/#dateTime ISO8601:2004 Формат определяется как: YYYY-MM-DDThh:mm:ss.fZZZZZ Расшифровка формата: xs:long xs:decimal xs:string xs:normalizedString xs:dateTime YYYY MM DD T h mm ss f год, точно 4 цифры месяц, точно 2 цифры (01=январь и т.д.) день месяца, точно 2 цифры (от 01 до 31) латинский символ «T», должен быть в верхнем регистре часы, точно 2 цифры (24-часовой формат, от 00 до 24) минуты, точно 2 цифры (от 00 до 59) секунды, точно 2 цифры (от 00 до 59) дробная часть секунды (от одной до 6 цифр), может отсутствовать, в этом случае следует опускать и разделитель «.» 17 ZZZZZ xs:date ClientTransactionNumber описатель временной зоны, обязательный параметр, может принимать значения: Z – UTC, символ "Z" должен быть в верхнем регистре; +hh:mm или -hh:mm – смещение относительно UTC (показывает, что указано локальное время, которое на данное число часов и минут опережает или отстает от UTC) Примеры: 2011-07-24T19:00:00+04:00 – 19 часов 00 минут 24 июля 2011 года, часовой пояс – UTC + 4 часа; 2004-07-24T15:00:00Z – тот же момент времени в каноническом представлении; 2004-07-24T15:00:00.666Z – тот же мидентиомент времени плюс 666 миллисекунд. Дата в формате, согласно стандарту http://www.w3.org/TR/xmlschema-2/#date. Формат определяется как: YYYY-MM-DD Расшифровка формата: YYYY год, точно 4 цифры MM месяц, точно 2 цифры (01=январь и т.д.) DD день месяца, точно 2 цифры (от 01 до 31) Пример: 2011-07-01 — 1 июля 2011 года. Уникальный идентификатор операции. Должен быть уникальным для Контрагента на протяжении всей истории операций. Значением параметра должна быть строка длиной от 1 до 24 символов, содержащая символы, принадлежащие множеству значений: 0-9 A-Z a-z . , \ | / - + = # ~ ( ) { } [ ] : ; Рекомендуемые значения: целое положительное линейно нарастающее число в десятичной системе счисления. <xs:simpleType name="ClientTransactionNumber"> <xs:restriction base="xs:normalizedString"> <xs:minLength value="1"/> <xs:maxLength value="24"/> <xs:pattern value="[0-9A-Za-z.,\\|/\+=#~(){}\[\]:;]+"/> </xs:restriction> </xs:simpleType> YMAccount Идентификатор получателя перевода, строка десятичных цифр длиной до 33 символов. <xs:simpleType name="YMAccount"> <xs:restriction base="xs:normalizedString"> <xs:maxLength value="33"/> <xs:pattern value="[0-9]+"/> </xs:restriction> </xs:simpleType> 18 CurrencyAmount Сумма. Положительное десятичное число с фиксированной точкой, кол-во цифр после точки точно равно двум. <xs:simpleType name="CurrencyAmount"> <xs:restriction base="xs:decimal"> <xs:minExclusive value="0"/> <xs:maxInclusive value="9999999999999"/> <xs:fractionDigits value="2"/> </xs:restriction> </xs:simpleType> CurrencyCode Код валюты. Возможные значения: 643 — рубль Российской Федерации; 10643 – рубли для тестовой среды Оператора <xs:simpleType name="CurrencyCode"> <xs:restriction base="xs:int"> </xs:restriction> </xs:simpleType>