Обзор
Электронные кошельки 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
.
Оба провайдера настроены на оказание услуг резидентам Российской Федерации.
Собираем все вместе¶
Итоговая диаграмма связей описанных выше сущностей может выглядеть так: