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

    Это старая версия API. Переходите на новую версию API.

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

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

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

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

    scheme

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

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

    Все запросы должны направляться на https://paymaster.ru с использованием ключа проверки клиента.

    Продавец может использовать любой из 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 /direct/security/auth

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

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

    ПараметрТип данныхОбязательныйОписание
    response_typeStringДаКонстанта. Параметр всегда должен иметь значение "code"
    client_idStringДаИдентификатор Продавца в системе PayMaster
    redirect_uriStringДаURL для перенаправления клиента после успешной авторизации
    scopeStringДаИдентификатор платежной системы
    limitsDictionaryНетДневной, недельный и месячный лимит на списание средств пользователя (0 - без ограничения). Пример: JSON: {....,limits:[{RUB:"<daylimit>;<weeklimit>;<monthlimit>"}],...} или POST: limits[RUB]=<daylimit>;<weeklimit>;<monthlimit>
    emailStringНетЭлектронная почта пользователя
    phoneString (\d{11,15})НетМобильный телефон пользователя
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

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

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

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

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

    ПараметрТип данныхОбязательныйОписание
    codeStringДаВременный токен авторизации, который будут обменен на постоянный токен. Время действия временного токена не должно превышать 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 /direct/security/token

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

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

    ПараметрТип данныхОбязательныйОписание
    client_idStringДаИдентификатор Продавца в системе PayMaster
    codeStringДаВременный токен, присвоенный при запросе на авторизацию
    grant_typeStringДаКонстанта. Всегда должен быть установлен на "authorization_code"
    redirect_uriStringДаВсегда в точности должен совпадать с redirect_uri указанной в запросе авторизации
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

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

    ПараметрТип данныхОбязательныйОписание
    access_tokenStringТолько в случае успешного завершенияПостоянный токен, для использования в последующих запросах
    token_typeStringТолько в случае успешного завершенияКонстанта. Всегда должен иметь значение "bearer"
    expires_inNumberТолько в случае успешного завершенияКоличество секунд до истечения срока жизни токена
    account_identifierStringТолько в случае успешного завершенияИдентификатор клиента в платежной системе. Параметр будет отображаться пользователю, чтобы разделить различные учетные записи в одной системе
    errorStringТолько в случае неудачиПричина, по которой запрос токена доступа не удался. Допустимые значения: "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 /direct/security/revoke

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

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

    ПараметрТип данныхОбязательныйОписание
    client_idStringДаИдентификатор Продавца в системе PayMaster
    access_tokenStringДаПостоянный токен доступа
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

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

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

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

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

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

    {
      "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 /direct/payment/init

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

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

    ПараметрТип данныхОбязательныйОписание
    access_tokenStringДаПостоянный токен доступа, предоставленный Продавцу ранее
    merchant_idStringДаИдентификатор Продавца в системе PayMaster. То же самое, что "client_id" используемый для получения access_token
    merchant_transaction_idStringДаИдентификатор транзакции генерируемый в системе Продавца. Должен использоваться для предотвращения повторного требования об оплате, если истек срок ожидания платежа или не был возвращен processor_transaction_id
    amountNumberДаСумма для оплаты Клиентом
    currencyStringДаТекстовый 3-буквенный код валюты (ISO). Всегда должно быть RUB
    descriptionStringДополнительныйОписание покупки (не более 255 символов)
    customStringДополнительныйДополнительные поля Продавца, не имеющие в названии префикса "ap_", обрабатываются системой PayMaster автоматически и передаются на веб-сайт Продавца после выполнения платежа. Например, в случае REST-запроса: custom[FIO]=ivanovivan&custom[kvartira]=45; в случае JSON: "custom":{"FIO":"123","KVARTIRA":"45"}.
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

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

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

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

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

    {
      "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 /direct/payment/complete

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

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

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

    ПараметрТип данныхОбязательныйОписание
    access_tokenStringДаПостоянный токен доступа, предоставленный Продавцу ранее
    merchant_idStringДаИдентификатор Продавца в системе PayMaster. То же самое, что "client_id" используемый для получения access_token
    merchant_transaction_idStringДаИдентификатор транзакции генерируемый в системе Продавца
    processor_transaction_idStringНетИдентификатор транзакции в платежной системе. Будет включен тогда, когда ответ на запрос инициации платежа возвращает это значение и счет не просрочен
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

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

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

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

    Дополнительные методы позволяют осуществлять привязку (токенизацию) карты прямо с сайта магазина (или из приложения) без необходимости направлять пользователя на сайт 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 /direct/authorize/card

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

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

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

    ПараметрТип данныхОбязательныйОписание
    response_typeStringДаКонстанта. Параметр всегда должен иметь значение "code"
    client_idStringДаИдентификатор Продавца в системе PayMaster
    card_numberStringДаНомер карты пользователя
    card_holderStringДаИмя держателя карты
    card_expiryStringДаСрок действия карты (ММ/ГГ или ГГГГ-ММ)
    card_cvvStringДаCVV код карты
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

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

    ПараметрТип данныхОписание
    confirmationStringСпособ дополнительного подтверждения 3DSecure/DebitAmount
    codeStringВременный токен для идентификации данной сессии
    redirect_urlStringACS-страница процессинга эмитента
    pa_reqStringКодированные данные запроса 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 /direct/authorize/confirm

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

    ПараметрТип данныхОбязательныйОписание
    response_typeStringДаКонстанта. Параметр всегда должен иметь значение "code"
    client_idStringДаИдентификатор Продавца в системе PayMaster
    codeStringДаВременный токен, присвоенный при запросе на авторизацию
    amountStringДаСумма списания, два знака в дробной части, разделитель точка ‘.’
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Проведение 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 /direct/authorize/complete3ds

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

    ПараметрТип данныхОбязательныйОписание
    response_typeStringДаКонстанта. Параметр всегда должен иметь значение "code"
    client_idStringДаИдентификатор Продавца в системе PayMaster
    codeStringДаВременный токен, присвоенный при запросе на авторизацию
    pa_resStringДаРезультат авторизации 3DSecure
    signStringДаПодпись запроса. Передается либо в заголовке запроса, либо в параметре
    typeStringНетТип протокола. Определяется продавцом. Передается либо в заголовке запроса, либо в параметре. Допустимые значения: jws, rest
    iatStringДаФактическое время отправки запроса. Передается либо в заголовке запроса, либо в параметрах

    Справочники

    Коды ошибок

    КодОписание
    invalid_requestВ запросе отсутствуют обязательные параметры или параметр является строкой неверного типа
    verification_failureСбой запроса проверки подписи, или параметр "iat" находится за пределами допустимого временного интервала
    invalid_tokenТокен является недействительным, т.к. не совпадает с предоставленным токеном, токен истек или был отменен клиентом
    token_lockedОперации по токену временно заблокированы. Дата разблокировки указана в поле blocked_until
    unknown_transaction_idТранзакция не может быть найдена по merchant_transaction_id или по processor_transaction_id (если предусмотрен)
    insufficient_fundsКлиент не имеет достаточно средств на счету для выполнения платежа в полном объеме
    payment_cancelledОплата была отменена запросом отмены платежа или по тайм-ауту
    payment_limit_exceededОперация не может быть выполнена из-за превышения лимита
    payment_count_exceededОперация не может быть выполнена из-за превышения количества операций
    invalid_operationНедопустимая операция по карте
    invalid_amountНедопустимая сумма платежа
    account_blockedКарта блокирована
    account_expiredСрок действия карты истек
    invalid_accountНеверный номер карты
    payment_system_rejectedОтказ платежной системы
    otherЭтот код может быть использован для любых других ошибок, которые не перечислины выше

    Приложение А

    Пример 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

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