Обзор

Электронные кошельки RBKmoney — это сервис, позволяющий проводить операции над электронными денежными средствами клиентов-физических или юридических лиц без открытия счета в системе.

Терминология, правила и ограничения сервиса реализованы с учетом требований Регуляторов отрасли (в частности, Федеральный закон от 27.06.2011 N 161-ФЗ).

Дополнительно к RBKmoney Wallet мы предоставляем RBKmoney Identity Storage - сервис безопасного хранилища данных личных документов физических лиц, таких как паспорт, номер СНИЛС, ИНН и пр. Сервис RBKmoney Identity Storage может использоваться как в связке с кошельками, реализуя услуги идентификации физических лиц, так и в качестве отдельного сервиса по хранению персональных данных, соответствующего всем требованиям Регулятора.

Возможности RBKmoney Wallet

Пример услуг, оказываемых на базе технологической платформы RBKmoney Wallet:

  • создание и управление электронным кошельком клиента и его идентификация;
  • эмиссия электронных денежных средств (ЭДС) путем пополнения кошелька с любого из доступных в платежной платформе RBKmoney метода оплаты;
  • движение ЭДС между кошельками RBKmoney, переводы на кошельки других клиентов в рамках платформы;
  • вывод ЭДС на банковскую карту, привязанную к кошельку владельца.

Терминология и сущности

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

В технической реализации предоставление подобных прав реализовано в соответствии со стандартным протоколом OAuth 2.0 и производится в браузере плательщика.

Владелец, реальное физическое или юридическое лицо, может зарегистрировать произвольное количество учетных записей, или User’ов в сервисе RBKmoney Auth.

Пользователь системы

User, или пользователь системы — это уникальная учетная запись в авторизационных сервисах RBKmoney Auth, принадлежащая клиенту системы. Зарегистрировавшись в RBKmoney Auth, клиент получает возможность создать себе кошелек, либо предоставить такую возможность вам, предоставив по вашему запросу соответствующее разрешение в терминологии OAuth2.

Одним из уникальных признаков пользователя системы является его e-mail.

Note

Обратите внимание! RBKmoney Auth — это централизованная служба аутентификации и авторизации, предоставляющая услуги SSO (Single sign-on). Это означает, один раз зарегистрировавшись, вы можете использовать эту учетную запись для всей линейки продуктов RBKmoney.

Пример структуры, описывающей User’а может выглядеть так:

{
  "id": "281220eb-a4ef-4d03-b666-bdec4b26c5f7",
  "createdTimestamp": 1479212158721,
  "username": "nickname",
  "enabled": true,
  "firstName": "Ivan",
  "lastName": "Ivanov",
  "email": "example@example.com"
}

User — это единственная уникальная сущность в рамках Платформы. User может быть владельцем произвольного количества Identity.

Личность

Identity, или цифровая личность — это структура RBKmoney Wallet, описывающая личность владельца кошелька, организацию, с которой были заключены договорные отношения, уровень идентификации (в соответствии со 161-ФЗ) и пр. К цифровой личности привязываются принадлежащие ей сущности - паспорт и СНИЛС, электронные кошельки, номера банковских карточек для вывода на них средств. Также, Identity может создать произвольное количество кошельков Wallet RBKmoney.

Пример структуры, описывающей личность, может выглядеть так:

{
    "class": "person",
    "createdAt": "2018-07-09T12:55:31.763558Z",
    "id": "2",
    "isBlocked": false,
    "level": "anonymous",
    "metadata": {
        "lkDisplayName": "ivanov@example.com"
    },
    "name": "Ivanov Ivan",
    "provider": "ncoeps"
}

Процесс идентификации и лимиты

Идентификация — это привязка набора документов к личности. Существует 3 уровня идентификации личности, каждый из которых определяет следующие лимиты по операциям:

Уровень Статус идентификации Единовременный платеж, ₽ Единовременный остаток, ₽ Ежемесячный лимит, ₽
1 Нет ≤ 15 000 ≤ 15 000 ≤ 40 000
2 Упрощенная ≤ 60 000 ≤ 60 000 ≤ 200 000
3 Полная ≤ 600 000 ≤ 600 000

По-умолчанию личности создаются с 1 уровнем идентификации.

Для повышения уровня идентификации, при необходимости, вы можете запустить процедуру идентификации и привязать набор личных документов, или Private Documents (паспортные данные и СНИЛС). Данные этих документов хранятся в сервисе RBKmoney Identity Storage и их токены могут быть переданы в RBKmoney Wallet в качестве набора идентифицирующих документов с помощью вызова соответствующего метода Wallet API.

Note

При запуске процесса идентификации, или связки Identity и набора Private Documents в фоновом режиме мы производим проверку предоставленных данных документов в сервисе ЕСИА, таким образом гарантируя корректность введенных данных.

Кошелек

Wallet, или кошелек RBKmoney — это сущность, в рамках которой мы ведём учёт баланса ЭДС владельца. Владелец кошелька может предоставить Grant-ы на его пополнение и вывод этих средств. Также, с кошелька осуществляется вывод на Destination.

Структура Wallet может выглядеть так:

{
  "createdAt": "2018-07-09T18:28:05.334236Z",
  "currency": "RUB",
  "id": "1",
  "identity": "1",
  "isBlocked": false,
  "metadata": {
    "client_locale": "RU_ru"
  },
  "name": "User-friendly Wallet Name"
}

Счет

У каждого кошелька создается один счет в валюте кошелька, хранящий состояние баланса. Для создания счета в другой валюте необходимо создать другой кошелек в соответствующей валюте. Пример структуры счета:

{
    "available": {
        "amount": 0,
        "currency": "RUB"
    },
    "own": {
        "amount": 0,
        "currency": "RUB"
    }
}

Право на управление кошельком

Без прямого на то согласия владельца кошелька провести операции ввода или вывода средств нельзя. В качестве электронного подтверждения такого согласия используются Grant’ы, подтверждающие ваше право перевести или вывести с кошелька определенную в Grant’е сумму. Grant’ы имеют четко определенный срок жизни, после которого автоматически становятся недействительными.

Пример Grant’а на совершение операции суммой в 100Р:

{
    "asset": {
        "amount": 10000,
        "currency": "RUB"
    },
    "token": "eyJtZXRhZGF0YSI6eyJhc3NldCI6eyJhbW91bnQiOjE0MzAwMDAsImN1cnJlbmN5IjoiUlVCIn19LCJyZXNvdXJjZUlEIjoiWUhiOGR0MVJrSG5oT1djSmRYR0I3bXlNQTRaIiwicmVzb3VyY2VUeXBlIjoid2FsbGV0cyIsInZhbGlkVW50aWwiOiIyMDE5LTA3LTA3VDExOjA0OjA5WiJ9",
    "validUntil": "2019-07-07T11:04:09Z"
}

Метод вывода средств

К Identity может быть привязано неограниченное количество Destination, или методов вывода денег. На момент написания статьи поддерживается только банковская карта.

Пример структуры, описывающей BankCardDestinationResource, может выглядеть так:

{
  "createdAt": "2018-07-09T20:03:16.438363Z",
  "currency": "RUB",
  "id": "1",
  "identity": "1",
  "isBlocked": false,
  "metadata": {
    "display_name": "Моя зарплатная карта"
  },
  "name": "User-friendly name",
  "resource": {
    "bin": "415039",
    "lastDigits": "0900",
    "paymentSystem": "visa",
    "token": "6OqZRRhIPoPchPII20gfIk",
    "type": "BankCardDestinationResource"
  },
  "status": "Unauthorized"
}
Средство вывода

К Destination может быть привязано одно средство вывода. Таким средством может быть, например, банковская карта, счет в банке, номер телефона или электронный кошелек другой системы.

Структура средства вывода в виде банковской карты может выглядеть так:

{
    "authData": "50jPBQ22aP1Uvw4cr86iKT",
    "bin": "415039",
    "lastDigits": "0900",
    "paymentSystem": "visa",
    "token": "eyJiaW4iOiI0MTUwMzkiLCJsYXN0RGlnaXRzIjoiMDkwMCIsIm1hc2tlZFBhbiI6IjA5MDAiLCJwYXltZW50U3lzdGVtIjoidmlzYSIsInRva2VuIjoiNk9xWlJSaElQb1BjaFBJSTIwZ2ZJayJ9"
}
Право на управление методом вывода средств

Destination — это привязанный к Identity получатель выводимых денег, например привязанная владельцем банковская карта. Владелец Destination может выдать Grant на его использование третьим лицам.

Пример структуры Destination Grant:

{
    "token": "eyJtZXRhZGF0YSI6e30sInJlc291cmNlSUQiOiIyeHdHWW1CZ1A5bUJOeE1IVW04RlpncnNtTFUiLCJyZXNvdXJjZVR5cGUiOiJkZXN0aW5hdGlvbnMiLCJ2YWxpZFVudGlsIjoiMjAxOS0wNy0wN1QxMTowNDowOVoifQ",
    "validUntil": "2019-07-07T11:04:09Z"
}

Вывод средств

Для того, чтобы вывести с кошелька полученную в Grant’е сумму необходимо провести Withdrawal, или операцию вывода средств с кошелька. Это комплексная операция, требующая наличия:

  • идентификатора кошелька RBKmoney;
  • идентификатора Destination;
  • Grant’а на управление Destination (если вывод осуществляется на чужой ресурс);
  • Grant’а на вывод определенной суммы с Wallet.

Пример структуры Withdrawal:

{
  "wallet": "1",
  "destination": "1",
  "body": {
    "amount": 1430000,
    "currency": "RUB"
  },
  "metadata": {
    "notify_email": "iliketrains@example.com"
  },
  "walletGrant": "eyJtZXRhZGF0YSI6eyJhc3NldCI6eyJhbW91bnQiOjE0MzAwMDAsImN1cnJlbmN5IjoiUlVCIn19LCJyZXNvdXJjZV9pZCI6IjF1WFpKMjc4VGZ3WTlncGR4Q2tEZHNIalZuRiIsInJlc291cmNlX3R5cGUiOiJ3YWxsZXRzIiwidmFsaWRVbnRpbCI6IjIwMTktMDctMDdUMTE6MDQ6MDlaIn0",
  "destinationGrant": "eyJtZXRhZGF0YSI6e30sInJlc291cmNlX2lkIjoibFh4OERCYzhSNmlJdEdPUmV1VlJONGtNcEpQIiwicmVzb3VyY2VfdHlwZSI6ImRlc3RpbmF0aW9ucyIsInZhbGlkVW50aWwiOiIyMDE5LTA3LTA3VDExOjA0OjA5WiJ9"
}

Провайдеры услуг и резиденции

Провайдер услуг - это сущность в рамках юридической структуры RBKmoney, которая предоставляет услуги, связанные с кошельками. Для разных стран могут использоваться разные провайдеры. На момент написания данной версии документации существует 2 провайдера услуг: тестовый с идентификатором test и боевой с идентификатором ncoeps.

Оба провайдера настроены на оказание услуг резидентам Российской Федерации.

Собираем все вместе

Итоговая диаграмма связей описанных выше сущностей может выглядеть так:

relations-diagram.png