NAV Navbar
  • Общие сведения
  • Техническая информация
  • Авторизация
  • Проведение платежа
  • Инлайн-токенизация карт
  • Справочники
  • Общие сведения

    Протокол Paymaster Direct предназначен для Компаний (Продавцов), чей бизнес предусматривает списания средств с плательщика без дополнительного подтверждения им каждой транзакции (безакцептные платежи, Direct Debit). Примерами может служить подписка на новостной контент, продление доменных или хостинговых услуг, покупка в один клик в играх и других средах, где нежелателен выход из процесса, мобильные приложения и так далее.

    Разумеется, получение Продавцом возможности безакцептного списания невозможно без разрешения плательщика в выбранной им платежной системе. Это разрешение (долгосрочный акцепт, долгосрочное поручение) представляет собой данное им право потратить заданную сумму в заданный промежуток времени без прохождения платежных авторизационных процедур (разовых акцептов). После получения разрешения и до тех пор, пока оно будет действительным, списание производится на уровне межсерверного взаимодействия (без участия плательщика).

    Продавец должен инициировать получение специальных разрешений на это у той платежной системы, которую хочет использовать его клиент-плательщик. Он передает плательщика на сайт Paymaster; тот, взаимодействуя с выбранной платежной системой, организует получение разрешений (акцепта) и сообщает Продавцу статус этой операции. После успешного завершения операции Продавец получает доступ к безакцептному списанию средств с плательщика.

    Схема взаимодействия

    alt text

    Техническая информация

    Передача данных

    Все запросы будут отправляться через защищенные протоколы HTTPS с использованием ключа проверки клиента. Продавец может использовать любой из 2 протоколов взаимодействия:

    Тип протокола необходимо передавать в каждом запросе в http-заголовке "type" (или в get, или в post параметре). Если значение отсутствует, то по умолчанию считается, что используется JWS. Если в http-заголовке "resp-type" (или в get, или в post параметре) передавать значение "xml", то ответ будет в формате XML. Если значение отсутствует, то ответ будет в формате JWS. Для каждого протокола определяются данные для подписи и способ передачи подписи.

    Типы подписи

    Продавец может использовать 2 типа подписи запросов: RSA и Hash.

    Payloads (данные)

    Заголовок всех запросов всегда должен содержать обязательное поле "iat" (означающее "инициирован в") , содержащее целочисленное значение в секундах (1970-01-01T0:0:0Z в стандарте UTC). При каждом запросе данное поле должно содержать фактическое время отправки запроса. Поле "iat" может быть использовано PayMaster для предотвращения угроз повторного воспроизведения платежа с помощью сравнения времени занесенного в это поле и заданного временного интервала с фактическим.

    JWS

    Содержание запросов будет иметь вид сообщений в формате JSON Web Signature (JWS). Подписываемое тело запроса: "HeaderEncoded.BodyEncoded" (разделитель "." - точка) - все параметры, кроме sign. HeaderEncoded - закодированный UrlSafeBase64Encoding заголовок сообщения, BodyEncoded - закодированное UrlSafeBase64Encoding тело запроса. Подпись идет через точку(.) после Body ("HeaderEncoded.BodyEncoded.SignEncoded") и кодируется UrlSafeBase64Encoding.

    Заголовок должен содержать стандартное поле "alg", которое всегда должно приводиться к "RS256" ("alg":"RS256"). Для удобства выполнения данной спецификации PayMaster’ом данные запроса передаются по протоколу HTTPS в параметре "request".

    Rest

    Формирование подписи для REST запроса

    var encoding = Encoding.UTF8;
    
    var iat = GetUnixtime();
    var payload = string.Empty
        + "access_token=" + accessToken
        + "&type=rest"
        + "&merchant_id=" + merchantId
        + "&merchant_transaction_id=" + transactionId
        + "&currency=" + currencyCode
        + "&amount=" + chargeAmount;
    
    var dataToSign = string.Format("{0};{1};{2}", payload, iat, secretKey);
    var bytesToSign = encoding.GetBytes(dataToSign);
    
    string signBase64Encoded;
    using (var sha256 = SHA256.Create())
    {
        var sign = sha256.ComputeHash(bytesToSign);
    
        signBase64Encoded = Convert.ToBase64String(sign);
    }
    
    var result = SendRequest("/payment/init", payload, iat, signBase64Encoded);
    

    Подписываемое тело запроса: В случае Get запроса - это "QueryString;iat", где: QueryString - это строка параметров после знака вопроса в Url; iat - это поле "инициирован в"; В случае Post запроса - это "Body;iat;секретный ключ", где: Body - это тело запроса; iat - это поле "инициирован в"; секретный ключ - назначается продавцом в личном кабинете ("Настройки подписи Direct").

    Запросы формируются и отправляются Get или Post (application/x-www-form-urlencoded) параметрами. Подпись передается в заголовке "sign" или в параметрах запроса и кодируется Base64Encoding. Замечание для разработчиков на PHP: если $str - строка параметров, то хеш считается как base64_encode(hash('sha256', $string, true)). URLs: для всех типов запросов перечисленных ниже PayMaster присваивает уникальный URL и передает Продавцу. URL’ы для разных типов запросов не обязательно должны находиться на одном и том же хосте.

    Авторизация

    Авторизация проходит с использованием протокола OAuth 2.0 Authorization. Авторизация выглядит следующим образом:

    1. Продавец перенаправляет пользователя на сайт Paymaster Direct. Пользователю будет предложено авторизоваться, если он еще не авторизован или не выдал Продавцу разрешение на использование его Веб-кошелька.
    2. После прохождения авторизации пользователь перенаправляется на redirect_uri, указанную продавцом при перенаправлении пользователя, с добавлением временного токена.
    3. Продавец генерирует токен-запрос в PayMaster, содержащий временный токен для получения постоянного токена.

    Запрос авторизации

    POST https://paymaster.ru/direct/security/auth

    Запрос авторизации определяется протоколом OAuth.

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    response_type String Да Константа. Параметр всегда должен иметь значение "code"
    client_id String Да Идентификатор Продавца в системе PayMaster
    redirect_uri String Да URL для перенаправления клиента после успешной авторизации.
    scope String Да Идентификатор платежной системы
    limits Dictionary Нет Дневной, недельный и месячный лимит на списание средств пользователя (0 - без ограничения). Пример: JSON: {....,limits:[{RUB:"<daylimit>;<weeklimit>;<monthlimit>"}],...} или POST: limits[RUB]=<daylimit>;<weeklimit>;<monthlimit>
    email String Нет Электронная почта пользователя
    phone String (\d{11,15}) Нет Мобильный телефон пользователя
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре.
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах.

    Пример перенаправления:

    HTTP/1.1 302 Found
    Location: https://www.example.com/?code=Pbl8KuP8vg
    

    Параметры ответа

    Реакцией на успешное завершение процесса авторизации будет перенаправление пользователя на предоставленный redirect_uri со следующими параметрами:

    Параметр Тип данных Обязательный Описание
    code String Да Временный токен авторизации, который будут обменен на постоянный токен. Время действия временного токена не должно превышать 10 минут после отправки исходного запроса

    Запрос на получение токена доступа

    Заголовок запроса:

    {
      "iat": 1347447988,
      "alg": "RS256"
    }
    

    Данные запроса:

    {
      "client_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411",
      "code": "Pbl8KuP8vg",
      "grant_type": "authorization_code",
      "redirect_uri": "example.com"
    }
    

    Ответ:

    HTTP/1.1 200 OK
    {
      "access_token": "thN250MQ5scFlaa-1Kc61PP8gpAusuHgpJKoflAzF5g",
      "token_type": "bearer",
      "expires_in": 31535999,
      "account_identifier": "WebMoney Purse R111111111111"
    }
    

    POST https://paymaster.ru/direct/security/token

    Запрос определяется протоколом OAuth. Запрос передается Продавцом в PayMaster для обмена временного токена из исходного запроса на постоянный токен, который будет использоваться для будущих платежей.

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    client_id String Да Идентификатор Продавца в системе PayMaster
    code String Да Временный токен, присвоенный при запросе на авторизацию
    grant_type String Да Константа. Всегда должен быть установлен на "authorization_code"
    redirect_uri String Да Всегда в точности должен совпадать с redirect_uri указанной в запросе авторизации
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре.
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах.

    Параметры ответа

    Параметр Тип данных Обязательный Описание
    access_token String Только в случае успешного завершения Постоянный токен, для использования в последующих запросах
    token_type String Только в случае успешного завершения Константа. Всегда должен иметь значение "bearer"
    expires_in Number Только в случае успешного завершения Количество секунд до истечения срока жизни токена
    account_identifier String Только в случае успешного завершения Идентификатор клиента в платежной системе. Параметр будет отображаться пользователю, чтобы разделить различные учетные записи в одной системе
    error String Только в случае неудачи Причина, по которой запрос токена доступа не удался. Допустимые значения: "invalid_request", "invalid_client", "invalid_grant", "unauthorized_client", "unsupported_grant_type" и "invalid_scope"

    Запрос отзыва токена доступа

    Заголовок запроса:

    {
      "iat": 1384949320,
      "alg": "RS256"
    }
    

    Данные запроса:

    {
      "client_id": "1",
      "access_token": "7J-YBO_7cI9A5lb1U2PgLwoDyZxnTJhkM2o5XWIpjjE"
    }
    

    Ответ:

    HTTP/1.1 200 OK
    {
      "status": "complete"
    }
    

    POST https://paymaster.ru/direct/security/revoke

    Запрос передается Продавцом по запросу покупателя в PayMaster для отмены существующего доверия. После выполнения запроса токен доступа будет аннулирован.

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    client_id String Да Идентификатор Продавца в системе PayMaster
    access_token String Да Постоянный токен доступа
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Параметры ответа

    Параметр Тип данных Обязательный Описание
    status String Да Результат запроса. Допустимые значения "complete", "in_progress" и "failure"
    error_code String Только в случае неудачи Причина ошибки. См. Коды ошибок.
    error String Только в случае неудачи Описание ошибки, которая привела к отказу запроса, в свободной форме. Используется для устранения неполадок и не отображается пользователю

    Проведение платежа

    Инициация платежа

    Заголовок запроса:

    {
      "alg": "RS256",
      "iat": 1347448234
    }
    

    Данные запроса:

    {
      "access_token": "thN250MQ5scFlaa-1Kc61PP8gpAusuHgpJKoflAzF5g",
      "merchant_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411",
      "merchant_transaction_id": "da47e4ee-ef12-469e-a9f0-1fa0d4a4365c",
      "amount": 1,
      "currency": "RUB"
    }
    

    Ответ:

    HTTP/1.1 200 OK
    {
      "status": "success",
      "processor_transaction_id": "36"
    }
    

    POST https://paymaster.ru/direct/payment/init

    Запрос передается Продавцом в PayMaster для инициации платежа. Успешно выполненный запрос не гарантирует перевод средств Продавцу, он только указывает на то, что пользователь находится в платежной системе и готов оплатить всю сумму в полном объеме в момент отправки запроса. Если запрос, по какой- либо причине, не удался, то сообщение об ошибке отобразиться пользователю и данный платеж повторить будет невозможно.

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    access_token String Да Постоянный токен доступа, предоставленный Продавцу ранее
    merchant_id String Да Идентификатор Продавца в системе PayMaster. То же самое, что "client_id" используемый для получения access_token
    merchant_transaction_id String Да Идентификатор транзакции генерируемый в системе Продавца. Должен использоваться для предотвращения повторного требования об оплате, если истек срок ожидания платежа или не был возвращен processor_transaction_id
    amount Number Да Сумма для оплаты Клиентом
    currency String Да Текстовый 3-буквенный код валюты (ISO). Всегда должно быть RUB
    description String Дополнительный Описание покупки (не более 255 символов)
    custom String Дополнительный Дополнительные поля Продавца, не имеющие в названии префикса "ap_", обрабатываются системой PayMaster автоматически и передаются на веб-сайт Продавца после выполнения платежа. Например, в случае REST-запроса: custom[FIO]=ivanovivan&custom[kvartira]=45; в случае JSON: "custom":{"FIO":"123","KVARTIRA":"45"}.
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Параметры ответа

    Параметр Тип данных Обязательный Описание
    status String Да Результат запроса. Допустимые значения "success" и "failure"
    processor_transaction_id String Только в случае успешного завершения Идентификатор транзакции в платежной системе
    error_code String Только в случае неудачи Причина возникновения ошибки. См. Коды ошибок.
    error String Только в случае неудачи Описание ошибки, которая привела к отказу запроса, в свободной форме. Используется для устранения неполадок и не отображается пользователю.

    Проведение платежа

    Заголовок запроса:

    {
      "alg": "RS256",
      "iat": 1347448499
    }
    

    Данные запроса:

    {
      "access_token": "thN250MQ5scFlaa-1Kc61PP8gpAusuHgpJKoflAzF5g",
      "merchant_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411",
      "merchant_transaction_id": "da47e4ee-EF12-469e-a9f0-1fa0d4a4365c",
      "processor_transaction_id": "36"
    }
    

    Ответ:

    HTTP/1.1 200 OK
    {
      "status": "complete"
    }
    

    POST https://paymaster.ru/direct/payment/complete

    Запрос необходим для завершения платежа, который был инициирован запросом инициации платежа. Если запрос выполнен успешно, считается, что средства передаются от клиента Продавцу. Если запрос по какой-либо причине не выполнен и не помечен как повторный, то пользователь будет оповещен о незавершенном платеже и повторить данный платеж будет невозможно. Если запрос будет возвращен со статусом "in_progress" без кода возврата 200 или таймаута платежа, то запрос необходимо повторить позже (Рекомендуемое время повторной отправки запроса 15 секунд). Продавец должен быть в состоянии обработать этот запрос, используя только параметр merchant_transaction_id для идентификации данной транзакции.

    Параметр processor_transaction_id используется только для удобства исполнителя. Запрос на проведение платежа, достигший конечного состояния (проведен или отказ), должен вернуть последний результат запроса на проведение платежа. Запросы, не достигшие состояния "проведен" или "отказ" в течение 120 часов с начала запуска платежа считаются отмененными и переходят в состояние "отказ".

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    access_token String Да Постоянный токен доступа, предоставленный Продавцу ранее
    merchant_id String Да Идентификатор Продавца в системе PayMaster. То же самое, что "client_id" используемый для получения access_token
    merchant_transaction_id String Да Идентификатор транзакции генерируемый в системе Продавца
    processor_transaction_id String Нет Идентификатор транзакции в платежной системе. Будет включен тогда, когда ответ на запрос инициации платежа возвращает это значение и счет не просрочен
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Параметры ответа

    Параметр Тип данных Обязательный Описание
    status String Да Результат запроса. Допустимые значения "complete", "in_progress" и "failure"
    error_code String Только в случае неудачи Причина ошибки. См. Коды ошибок.
    error String Только в случае неудачи Описание ошибки, которая привела к отказу запроса, в свободной форме. Используется для устранения неполадок и не отображается пользователю

    Инлайн-токенизация карт

    Дополнительные методы позволяют осуществлять привязку (токенизацию) карты прямо с сайта магазина (или из приложения) без необходимости направлять пользователя на сайт PayMaster.

    Запрос авторизации

    Заголовок запроса:

    {
      "alg": "RS256",
      "iat": 1347447988
    }
    

    Данные запроса:

    {
      "response_type": "code",
      "client_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411",
      "card_number": "5470000000000000",
      "card_holder": "IVAN INVANOV",
      "card_expiry": "04/18",
      "card_cvv": "123"
    }
    

    Ответ c токеном:

    HTTP/1.1 200 OK
    {
      "access_token":"thN2****zF5g",
      "token_type":"bearer",
      "expires_in":31535999,
      "account_identifier":"4************1234"
    }
    

    Ответ c запросом на 3DS:

    HTTP/1.1 200 OK
    {
      "confirmation": "3DSecure",
      "code": "Pbl8KuP8vg",
      "redirect_url": "https://acs.somebank.ru",
      "pa_req": "bhzV****jzVL"
    }
    

    Ответ c запросом на подтверждение суммы:

    HTTP/1.1 200 OK
    {
      "confirmation": "DebitAmount",
      "code": "Pbl8KuP8vg",
    }
    

    POST https://paymaster.ru/direct/authorize/card

    Создание привязки по банковской карте. В зависимости от настроек может потребоваться дополнительное подтверждение: через 3DSecure-авторизацию, либо через подтверждение случайной суммы, блокированной на счете карты.

    Соответственно в ответ на данный запрос может выдаваться:

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    response_type String Да Константа. Параметр всегда должен иметь значение "code"
    client_id String Да Идентификатор Продавца в системе PayMaster
    card_number String Да Номер карты пользователя
    card_holder String Да Имя держателя карты
    card_expiry String Да Срок действия карты (ММ/ГГ или ГГГГ-ММ)
    card_cvv String Да CVV код карты
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Параметры ответа

    Параметр Тип данных Описание
    confirmation String Способ дополнительного подтверждения 3DSecure/DebitAmount
    code String Временный токен для идентификации данной сессии
    redirect_url String ACS-страница процессинга эмитента
    pa_req String Кодированные данные запроса 3DS

    Подтверждение суммы списания

    Заголовок запроса:

    {
      "alg": "RS256",
      "IAT": 1438247717
    }
    

    Данные запроса:

    {
      "response_type": "code",
      "client_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411",
      "code": "Pbl8KuP8vg",
      "amount": "83.98"
    }
    

    Ответ:

    HTTP/1.1 200 OK
    {
      "access_token":"thN2****zF5g",
      "token_type":"bearer",
      "expires_in":31535999,
      "account_identifier":"4************1234"
    }
    

    POST https://paymaster.ru/direct/authorize/confirm

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    response_type String Да Константа. Параметр всегда должен иметь значение "code"
    client_id String Да Идентификатор Продавца в системе PayMaster
    code String Да Временный токен, присвоенный при запросе на авторизацию
    amount String Да Сумма списания, два знака в дробной части, разделитель точка ‘.’
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Проведение 3DSecure авторизации

    Для проведения 3DSecure авторизации нужно перенаправить пользователя на специальную страницу эмитента карты по адресу redirect_url. В запросе передаются следующие параметры:

    Запрос передается методом POST.

    После авторизации эмитент перенаправит пользователя на указанную страницу мерчанта TermUrl со следующими полями:

    Для завершения привязки необходимо передать полученный результат авторизации PaRes через вызов метода завершения привязки.

    Завершение 3DSecure авторизации

    Заголовок запроса:

    {
      "alg": "RS256",
      "IAT": 1438647742
    }
    

    Данные запроса:

    {
    "response_type": "code",
    "client_id": "54bf4d42-b85c-48e2-8bda-ad0cf876f411",
    "code": "Pbl8KuP8vg",
    "pa_res": "eJzV****jX/L"
    }
    

    Ответ:

    HTTP/1.1 200 OK
    {
      "access_token":"thN2****zF5g",
      "token_type":"bearer",
      "expires_in":31535999,
      "account_identifier":"4************1234"
    }
    

    POST https://paymaster.ru/direct/authorize/complete3ds

    Параметры запроса

    Параметр Тип данных Обязательный Описание
    response_type String Да Константа. Параметр всегда должен иметь значение "code"
    client_id String Да Идентификатор Продавца в системе PayMaster
    code String Да Временный токен, присвоенный при запросе на авторизацию
    pa_res String Да Результат авторизации 3DSecure
    sign String Да Подпись запроса. Передается либо в заголовке запроса, либо в параметре
    type String Нет Тип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iat String Да Фактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Справочники

    Коды ошибок

    Код Тип данных Описание
    invalid_request String В запросе отсутствуют обязательные параметры или параметр является строкой неверного типа
    verification_failure String Сбой запроса проверки подписи, или параметр "iat" находится за пределами допустимого временного интервала
    invalid_token String access_token является недействительным, т.к. не совпадает с предоставленным токеном, токен истек или был отменен клиентом
    unknown_transaction_id String Транзакция не может быть найдена по merchant_transaction_id или по processor_transaction_id (если предусмотрен)
    insufficient_funds String Клиент не имеет достаточно средств на счету для выполнения платежа в полном объеме. PayMaster не рассматривает это как ошибку, если покупатель пополнит свой счет после инициации платежа для его завершения.
    payment_cancelled String Оплата была отменена запросом отмены платежа или по тайм-ауту.
    other String Этот код может быть использован для любых других ошибок, которые не перечислины выше.

    Приложение А

    Пример RSA- секретного ключа (используется, например, для подписания сообщения в этом документе):

    -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAxw6Wp7mDULZksgyOfvDJYTpbwdQeDXWTG0mq6Z6geDT2naYm 6q3bL17oy2IbBhXqrh6CzufPoppb3H8v+2mdR484fO955HwCWekVqaWUw5MzYpaq KbBqBepENi9lxaOGEg4Tuy48ARsmZc7KBubnEohA6BjDyx8AdwCLeKYNKhKSwzrl EKteCwWvqpXwszOck2zqK1VzDKZT8+G7g7aZH496sw16iBtId0QcI5sV/IAq58Vj QqCsKj7khweiPaxtWpsawnmylazm0O8/8Mj5d+GSLmO3hhT2ZoPpeSdvruC2RPLA YliWAl+NouqrAp2Di4yYFwKAX2nwvuZVFk5TiQIDAQABAoIBABzvwvjY3/0Atryn VKOhbzTiHeqcYk4ElID4AY96jstKr7sVJz0gTueg/Whrd5A36WisaMmZKzbxB3+T Qa9jmAiKCmUnDuonGNRnLM3/kxOnN2YSjuQGkDMR7h6OX1YOwnOndjjUrMZgYwGT wQylzluEUSMsTnIdrJygCKZeRTWjQYOwzIDoLamsaaYTq5MPKs30DDsiQW8GRRra 510CiXuDzig10ohpqZNvXAjoGhSCWm83ZrCF9R4ge8D7WJju8zX5IJfaauqecfpK 6Z8N87tScFJJ8sIEbsK0cAqKpDbeRo40r8rQG8CECzeDn9bzBbDUdiWE435INV8o mWaaH4ECgYEA/LMU2Cd+Md6/EQlbs7oqh60YnU0S/a5GlVuB60EQR209qXOGmG7G 7nff3aCzMIKon5pm/QURmW7udLGekJKWeyXwUTmsE4xGfeFXBqmxV1nhCN0klj0h YCzYxYgSHNgDGCf9UXvecAa4SD1Axtdmww58mMCMz/n/jy+mtvZ7zlkCgYEAyagm QptkufmmHErUI0O3iCVtJqcbdBJBpUCj5hT4vwGiktOPTPxG1fNvi1QQ5uI5Ygo4 +Hl2vNmHJj+TNsvoSdWI40Ad6wADKMZngkl+y/mPeQp2DZbmLyT49zO7XbVYKjSg JQudk3cvU31Jml2Zx/1QTONRCWNogmm144bU6LECgYBplY3VDxNMVQyyWp2lR9jz XaDWQNj5g/Lb/yMWn9XkckF8ZtfLIyYdh5rTKI0WbNF19nanq5GB8XbS7VAaihU0 GVMDLTy34jml6RyKnSaLH/PF11itKZejbrmYN1WSFbOdSUAv5ri3SCeBj45cRq4a PBhVXsa3M3bTZg6bjfuG6QKBgHp3pSzEZKrRY8FA7I6yHG8Rk7VqvTCDudxbYm5k BCE0JACZfSja+UYMPozWNCGT+BeDb8/vLF5KmVpwN76KnXrhtO2WTdUfP8vumoQ0 kE3eNPTklodwQkEVaiHvB/ZEINQY+70jzcH2GwbQSvf1qmQbgj3/u4JBHgI9otoY U4sxAoGBAO6mMtFer5H2XepHqQ+MELswkLX7K1WC7Pc/vLhRHxpaZX6Mcdn3KbB1 B3eb8YtNmkUIFP4mYzmf/vL0qdOLFOzvJ0XwXGvSoDLspvwz/tZHqk6rtV22TA57 j8PDSV2Byd8TAgedFnF3cPlVCXsvQVH7k5MBhEY4b1jJWp8U1i6M -----END RSA PRIVATE KEY-----

    Пример RSA-открытого ключа (может быть использована для проверки подписи сообщения в этом документе):

    -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxw6Wp7mDULZksgyOfvDJ YTpbwdQeDXWTG0mq6Z6geDT2naYm6q3bL17oy2IbBhXqrh6CzufPoppb3H8v+2md R484fO955HwCWekVqaWUw5MzYpaqKbBqBepENi9lxaOGEg4Tuy48ARsmZc7KBubn EohA6BjDyx8AdwCLeKYNKhKSwzrlEKteCwWvqpXwszOck2zqK1VzDKZT8+G7g7aZ H496sw16iBtId0QcI5sV/IAq58VjQqCsKj7khweiPaxtWpsawnmylazm0O8/8Mj5 d+GSLmO3hhT2ZoPpeSdvruC2RPLAYliWAl+NouqrAp2Di4yYFwKAX2nwvuZVFk5T iQIDAQAB -----END PUBLIC KEY-----

    Приложение B

    Тестовые действия перед принятием окончательных настроек: