Привет!
Если вы читали наши предыдущие посты (читали же?), то точно помните, что мы в RBK.money очень сильно за опенсорс. Настолько, что выложили в открытый доступ наш антифрод в виде открытых исходников под лицензией Apache 2.0.
Как вы понимаете, нам понравилось. Одного антифрода нам показалось мало, поэтому мы взяли и выложили в опенсорс всю нашу платежную платформу. Вообще всю. От самого первого микросервиса до навороченных систем аналитики, маршрутизации платежей, системы обработки и хранения карточных данных и десятков других микросервисов и пользовательских интерфейсов. Это именно тот код, на котором сейчас, в этот момент работает наш процессинг.
Зачем мы это сделали? Как это работает внутри? Как теперь жить дальше? Читайте под катом. Я гарантирую, что такого вы еще не встречали — еще никто в мире не опенсорсил платежную систему такого уровня.
История меняется прямо сейчас на ваших глазах!
О чём вообще речь — бизнес-фичи
Наша RBK.money Payments — это отказоустойчивая высокопроизводительная распределенная платежная система, с помощью которой вы можете управлять любыми транзакциями онлайн. Пластиковые карты, система быстрых платежей от НСПК, SMS и мобильная коммерция, электронные деньги и криптовалюты, алипей и вичат — она может процессить любые электронные платежные методы, используемые людьми сейчас.
А ещё это универсальные интерфейсы платежных протоколов как для host-to-host интеграций для банков, платежных систем, мерчантов, так и пользовательские интерфейсы для конечных плательщиков. То есть платформа может работать как основной процессинг, как предпроцессинг или как маршрутизатор платежей между разными процессингами одновременно.
Мы основательно проработали UX и дизайн наших пользовательских интерфейсов, самым главным из которых является наш платежный виджет RBKmoney Checkout и аналогичные по дизайну SDK для Android и iOS. Интерфейсы не только красивые, но и функциональные: поддерживают любые платформы (и десктоп, и мобилка) позволяют различные типы интеграции, как standalone-платежную страницу, так и эффект модального окна на сайте подключенного к нам партнера — торгово-сервисного предприятия, или ТСП.
RBKmoney Checkout полностью автоматизировано и самостоятельно проводит весь процесс платежа, от ввода платежных данных, до отображения дополнительных страниц аутентификации, таких как 3D-Secure и отображения статуса проведения платежа. Это значительно сокращает время и трудозатраты по интеграции ТСП к нашей платежной платформе.
Как работает чекаут, можете посмотреть вживую по ссылке https://rbk.mn/DCQBwJzVHO. Он настроен на тестовый мокет-банк, поэтому деньги с вас не спишутся. Тестовые карты лежат в документации https://developer.rbk.money/docs/payments/refs/testcards/.
Поддерживаются как средства приема и проведения платежей, позволяющие принимать средства от плательщиков в адрес ТСП, так и средства вывода, такие как выплаты на банковские счета, выплаты на карты или любые другие платежные методы, такие как криптовалюты.
Наша платформа имеет развитые интерфейсы взаимодействия с ТСП, такие как онбординг мерчантов, системы отчетности и интеграции с бэк офис-системами, такими как биллинг, АБС, внутренние системы учета.
Еще мы сделали универсальную систему учета движения средств по счетам участников сделки, чтобы можно было получить корректный и актуальный бухгалтерский баланс в любой момент времени в онлайн-режиме. На любой тип платежных транзакций можно настроить произвольное количество проводок, учитывающих все мыслимые комиссии для всех участников сделки, что позволит иметь полный актуальный баланс и возможность автоматической сверки принятых платежей.
У нас реально мощнейшие средства управления конфигурацией платформы, свой DSL, которым можно описать любые сценарии.
Есть системы динамической маршрутизации потоков платежей, такие как маршрутизация в зависимости от статистической доступности стороннего платежного шлюза с автоматическим переключением на резервные каналы.
Есть, конечно и статические условия — в зависимости от параметров платежа, таких как тип платежной системы, суммы платежа, страны и т.п.
Под это дело написана админка позволяющая визуально конфигурировать настройки платформы, с диффами, ревью изменений и коммитами, все как мы с вами любим, когда это делается нормально.
Реализовали и возможность неттинга, это перевод средств между счетами POS и кошельком для выплат. Это позволяет предоставлять интегрированные продукты, давая ТСП возможность создать заявку на перевод произвольного количества средств, принятых в рамках эквайринга на счет для выплат на карты или любые другие платежные методы.
Умеем делать выплаты на карты, а также на основе процессинга можно строить банковские страницы для P2P-переводов.
Внутри встроены сервисы-адаптеры для пробивки онлайн-чеков с любым из существующих на рынке ОФД. Даже разрабатывать ничего не нужно, все это у вас будет из коробки. 54-ФЗ покрыт полностью.
А ещё на борту есть как собственное антифрод-решение (да-да, то самое, о котором мы писали), так и возможность подключения любого стороннего продукта. Кроме этого, реализована универсальная система логирования и мониторинга, позволяющая за секунды найти любые данные о платежах, нюансах работы системы, организовать работу технической поддержки без доступа в продакшен-среду.
Подключение внешних клиентов — онбординг
Мы запилили гибкие средства по онбордингу мерчантов (онбординг — это когда юрлицо подключается к нам, там спрашиваются документы, сайты ревьювятся, в общем такая, немаленькая процедура со всеми составляющими KYC&AML), включая систему claim-ов, которая позволяет автоматизировать процесс онбординга и проверки подключающихся ТСП. В личном кабинете у мерчанта есть возможность создать заявки на создание новых сайтов, на которых будет вестись прием платежей, а для владельца в интерфейсе управления платформой — принять, отклонить или запросить дополнительные данные по заявке.
Можно в онлайне в виде ленты-чата общаться с клиентом, попросить загрузить дополнительные сканы документов, или помочь с проблемами — все в одном и том же интерфейсе.
Все это можно интегрировать со сторонними CRM-системами. У нас такая стоит, в нее из Claim-management сервиса регистрируются заявки, которые потом обрабатывает коммерция.
Можете вживую поиграться и посмотреть, как работает онбординг, регистрация у нас открыта и бесплатна. Не нужно "звонить менеджеру", чтобы получить доки API или доступ в ЛК. Сам ЛК по ссылке https://beta.dashboard.rbk.money/onboarding.
Эксплуатация и технологии
Платформа построена исключительно на основе opensource-технологий и рассчитана на работу на commodity hardware или в публичных облаках, таких как Amazon AWS. Архитектура системы изначально разработана на основе микросервисного подхода и возможностей линейного масштабирования производительности.
Универсальные внутренние протоколы RPC — все на трифте. 100% документированные внутренние и внешние API, поскольку сваггер. Это позволяет производить доработки системы и интеграции даже сторонними разработчиками по аутсорс-модели.
Благодаря концепции адаптеров протоколов — отдельных микросервисов, которые вовнутрь смотрят по трифту, а наружу реализуют специфичные для банков или любых других платежных систем протоколы, ее можно расширять не трогая внутренности.
У нас сейчас подключены десятки разных банков и подключать новые — это не боль, а рутина. Просто пишется адаптер, настраивается в админке роутинг и платежи пошли. В идеальных случаях реализация новых шлюзов у нас занимала 4 рабочих дня.
Поскольку наша идеология в том, что любое взаимодействие с платформой построено исключительно на вызове методов публичного или внутреннего API, это позволяет создавать и предоставлять любые пользовательские интерфейсы по схеме white label включая возможность разработки собственных форм ввода карточных данных и проведения платежей силами мерчантов. Никакого сервер-сайд рендеринга, только апишечка, только хардкор!
Платформа имеет 100% покрытие всех публичных методов API интеграционным протоколом и есть фреймворк заточенный под написание таких платежных тестов. У нас есть CI, который благодаря архитектуре, при каждом коммите разворачивает инстанс процессинга у себя внутри, применяет фикстуры необходимых настроек и прогоняет этот тест. Выкатить на прод ломающую дичь при таком подходе достаточно трудно, поэтому падаем мы очень редко.
Используемые программные средства позволяют организовать прием любого количества платежей без доработки или сложного конфигурирования, простым добавлением физических или виртуальных серверов, позволяя добиться линейного масштабирования производительности — мы храним состояние в как можно меньшем количестве мест. А Riak как основное хранилище состояний сам по себе умеет это из "коробки".
Бережное отношение к вычислительным ресурсам и архитектурные подходы позволяют организовать бесперебойный прием сотен платежных транзакций в секунду всего на одной стандартной 42U стойке с оборудованием низшего или среднего класса (одноюнитовые 2хCPU-сервера с 128G RAM, ноунеймы) без использования больших вендорских систем и СХД, либо в виртуальной среде аналогичной вычислительной мощности. Количество стоек с оборудованием архитектурой неограниченно.
Дисковые массивы, вендорские решения — все это не нужно. Можете в Амазоне поднимать, можете в своем облаке, можете на своем железе и при этом вы не разоритесь.
Безопасность
Техническая реализация средств хранения и обработки чувствительных данных, таких как данные держателей карт, паспортных данных и любых других персональных данных (а мы их храним и обрабатываем), позволяет пройти сертификации регуляторов, такие как PCI-DSS с минимальными расходами и за короткое время. Количество микросервисов, имеющих доступ к открытым карточным данным сокращено до минимально необходимого количества, даже ядро платежного процессинга не оперирует открытыми карточными данными. Учитывая корректно выстроенные бизнес-процессы, время аудита при сертификации PCI-DSS от старта до получения AOC (акт комплаенса) у нас составляет в среднем 3-4 рабочих дня.
Мы уделяем приоритетное внимание обеспечению IT-безопасности всех наших продуктов. Все наши протоколы открыты публично, мы исповедуем максимально открытый подход в противоположность security through obscurity. Поэтому уже много лет поддерживаем программу публичного поиска уязвимостей на hackerone.com, а vulnerability managemet и SecOps-подходы являются частью процесса разработки.
Наша программа багбаунти открыта публично, за уязвимости платим неплохие деньги. Делаем CTF-ки.
Вообще все, что касается безопасности, мы привыкли делать хорошо. Хочешь сделать что-то хорошо — сделай сам, здесь эта поговорка работает на 100%. Поэтому мы даже 3D-Secure сервер пишем свой, а не используем банковские. И у него есть сертификат соответствия от EMVco, а это, поверьте, очень сложно получить. И дорого. Зато работает потом нормально, а не как обычно на рынке.
Специфики
Разработку платформы мы ведем на 3 основных языках программирования — Erlang для высоконагруженных микросервисов, там, где требуется высокая производительность при низких затратах вычислительных ресурсов, Java, там, где требуется разработка сложной бизнес-логики и наличие большого количества готовых библиотек и JS для пользовательских интерфейсов.
Наша платформа разрабатывалась в идеологии "сделано инженерами для инженеров", что позволяет организовать удобную и приятную эксплуатацию решения техническими специалистами. Нами внедрены системы непрерывной интеграции и полное покрытие интеграционными тестами, что позволяет отказаться от дорогостоящей модели больших релизов и деплоить изменения в онлайн-режиме, максимально сокращая время от разработки до деплоя на продакшен. Полная автоматизация процесса, распределенная архитектура, наличие стейджинга и покрытие тестами обеспечивают возможность непрерывного деплоя без остановки сервисов и практически без даунтаймов.
Event-sourcing модель, реализация библиотек RPC и полное логирование в Elasticsearch позволяют предоставить службам эксплуатации системы поиск полносвязанных цепочек запросов внутри системы, а таким образом и быстрый и легкий поиск технических проблем и возможность организации любых сценариев автоматического мониторинга и оповещения.
Это реально так круто и работает, как я описываю, честно!
Что внутри
В базовую поставку продукта входят
- Keycloak, система аутентификации и авторизации пользователей и мерчантов, opensource-решения от Redhat, включающая бэк-офис и пользовательские интерфейсы
- RBKmoney Checkout, универсальный платежный виджет, предоставляющий пользовательский интерфейс для ввода платежных данных и проведение платежей
- RBKmoney Dashboard, Базовый пакет личного кабинета ТСП, позволяющий организовать онбординг, сервисы статистики и управления платежами
- CommonAPI, микросервисы, обслуживающие предоставление внешнего API для интеграции ТСП, банков, платежных систем, платежных терминалов и любых других платежных методов, а также любого другого внешнего взаимодействия с платформой
- Shumway, микросервисы, обеспечивающие управление счетами участников системы, поддерживающие план проводок и гарантирующие корректность и актуальность балансов счетов
- CommonAPI PCI-DSS, микросервисы, обеспечивающие предоставление внешнего API для приема и обработки данных держателей карт, позволяющие минимизировать количество мест обработки немаскированных ДДК
- Card Data Storage, микросервисы, обеспечивающие надежное зашифрованное хранилище чувствительных данных, поддерживающие автоматический контроль затирания CVV после проведения платежа, перешифровку и владельцев распределенного ключа, что снимает человеческие риски доступа к открытым карточным данным
- Binbase, микросервисы, обеспечивающие определение информации о стране, банке-эмитенте, типе платежной карты и предоставляющие информацию для по маршрутизации платежного потока в зависимости от указанных данных
- RBKmoney 3DS-Server, микросервисы, обеспечивающие взаимодействие с MPI и проведение платежей с учетом протокола 3D-Secure 2.1
- RBKmoney Protocol Adapter, микросервисы, обеспечивающие бесшовную интеграцию для проведения платежей через платежную систему RBKmoney
- ISO8583 Adapter, микросервисы, обеспечивающие бесшовную интеграцию для проведения платежей через любой платежный шлюз, поддерживающий стандартный протокол ISO8583
- Midgard, микросервисы, обеспечивающие реализацию клиринга принятых в онлайн платежей с пластиковых карт
- Hellgate, микросервисы, обеспечивающие функционирование ядра процессинга, такие как прием и проведение платежей, маршрутизацию, управление платежными транзакциями в режиме онлайн. Поддерживает все существующие МПС, токенизированные методы оплаты (GooglePay, ApplePay, SamsungPay), все известные криптовалюты, сервисы мобильной коммерции, сервисы электронных денег и системы приема наличных платежей. Позволяет расширить список до любых существующих платежных методов простым написанием адаптеров внешних протоколов.
- Fistful, микросервисы, обеспечивающие функционирование ядра процессинга электронных денег, таких как управление кошельками ТСП и конечных пользователей, системы идентификации, выплаты на карты, криптовалюты и другие платежные методы в режиме онлайн
- Bender, микросервисы, обеспечивающие идемпотентность внешних вызовов API и возможность использования стороннего идентификатора транзакции, используемого внешними интеграторами
- Faultdetector, микросервисы, обеспечивающие автоматическое определение доступности стороннего платежного шлюза, используя математические статистические модели, предоставляющие возможность принятия для Hellgate решения об изменении маршрута платежей, например, в случае технических проблем на шлюзе, а также автоматический возврат трафика при его восстановлении
- URL shortener, микросервисы, обеспечивающие сокращение URL для возможности выставления счетов к оплате плательщикам посредством SMS или других уведомлений
- Dominant, микросервисы, обеспечивающие управление конфигурацией домена платформы, позволяющей конфигурировать любые бизнес-процессы и поддерживающей версионирование конфигураций
- Machinegun, распределенная СУБД, позволяющая хранить и обрабатывать информацию о всех событиях платформы и осуществлять репликацию данных в бек-офис через универсальный брокер Kafka, используется для хранения состояний платформы
- RBKmoney Fraudbusters, микросервисы, позволяющие организовать мощный и гибкий процесс защиты от несанкционированных действий с платежами, управлять фильтрами и ограничительными правилами
- Аntifraud Adapter, адаптер протокола для RBKmoney Аntifraud, позволяющий микросервису Hellgate бесшовно подключиться к антифрод-решению RBKmoney Fraudbusters
- Moneypenny, универсальный адаптер протоколов мобильной коммерции, позволяющий бесшовно реализовать прием платежей через сервисы мобильной коммерции
- Cryptoadapter, адаптер протоколов криптовалют, позволяющий организовать прием и проведение платежей используя все существующие на данный момент криптовалюты
- IDDQD, пользовательский интерфейс для конфигурации платформы, позволяющий в онлайн-режиме управлять всеми настройками продукта
- Magista, микросервисы, обеспечивающие предоставление статистики и поиска платежей для личного кабинета ТСП
- Hooker, микросервисы, обеспечивающие рассылку асинхронных коллбеков с информацией о платежах партнерам, интегрировавшим решение
- Newway, микросервисы, обеспечивающие репликацию всех событий платформы (платежи, изменение конфигурации, онбординг) в реляционное СУБД-хранилище на базе PostgreSQL. Позволяют предоставлять внутренние BI-сервисы, интеграцию с внутренними системами, такими как АБС, биллинг, системы управления бухгалтерским учетом
- Dudoser, микросервисы, обеспечивающие уведомление плательщиков о совершенных транзакциях посредством email
- Payouter, микросервисы, обеспечивающие функционирование вывода принятых в онлайн-режиме средств на счета ТСП-участников системы
- Reporter, микросервисы, обеспечивающие генерацию и предоставление ТСП актов об оказанных услугах
- Вспомогательные сервисы и сопутствующее ПО
- Basho Riak KV, используется для хранения состояний онлайн-части процессинга, распределенная masterless-СУБД, позволяющая предоставить всегда доступное хранилище данных, автоматическую репликацию и защиту от сбоев - СУБД PostgreSQL, используется для хранения структурированных данных, систем BI, интеграции с внутренними системами
- Кластер Elasticsearch, используется для хранения логов и всех событий, генерируемых платформой. Позволяет получить актуальную информацию о любом событии, предоставляя возможность дебага и поддержки системы без доступа в продакшен-среду
- Grafana, используется для построения дашбордов для внутренних пользователей системы, от бизнес-отчетности на базе PostgreSQL-баз, информация в которые реплицируется микросервисами группы Newway до технических отчетов и алертинга на базе запросов к Elasticsearch
- Любой дистрибутив Linux, используется как системная ОС, на которой разворачиваются все программные продукты
- Docker, используется как базовая система контейнеризации приложений, все микросервисы разворачиваются в docker-контейнерах
- Hashicorp Consul, используется для автоматического Service Discovery между всеми микросервисами платформы, а также для распределенного хранилища на базе Machinegun
- SaltStack и Kubernetes, используется для оркестрации платформы и управления инфраструктурой по подходам Devops
- Apache Thrift, используется для организации RPC между микросервисами платформы, позволяет создавать самодокументируемые спецификации протоколов и гибкую доработку как имеющихся, так и новых микросервисов
- Apache Kafka, используется как event-broker для репликации данных между онлайн и бек-офис частями системы
Кому пригодится
Прежде всего, среди потенциальных клиентов платформы мы видим банки, которые хотят предоставлять сервисы интернет-эквайринга, универсальные платежные системы, обеспечивающие прием и обработку любых видов платежей. Платформа станет решением и для крупных ТСП, которые хотят иметь надежный платежный шлюз, не зависящий от конкретного провайдера платежных услуг, а также для стартапов в области платежных решений.
Мы хотим создать первую в мире платежную экосистему, позволяющую любому участнику с минимальными затратами организовать прием платежей и сосредоточиться на решении бизнес-задач, не тратя время и ресурсы на разработку собственного платежного решения.
Сейчас же ситуация такова, что на рынке есть множество inhouse-решений, которые, по сути, дублируют функциональность базовой модели — прием и проведение платежей, учет средств, предоставление сервисов вашим мерчантам. Но, насколько нам известно, в мире не существует ни одной платежной системы, которая готова была взять на себя миссию по созданию экосистемы платежных решений, предоставив для этого все возможности.
Именно поэтому мы приняли решение распространять наш продукт по opensource-модели. Уже сейчас вы можете свободно получить универсальный, полнофункциональный платежный процессинг в свое полное владение, включая все исходные коды продукта. Вы можете дорабатывать продукт так, как нужно именно вам, присоединиться к формируемому нами community и совместно участвовать в разработке продукта. Или даже сделать свое собственное закрытое решение на базе программного кода нашей платформы.
Поверьте, а кто не верит — легко это сделает. Мы сделали действительно хороший продукт, который базируется исключительно на свободном ПО и спроектирован таким образом, чтобы вложения в инфраструктуру были минимальными, подойдет даже публичное облако.
Наши протоколы и подход "все доступно через API" позволяют вам создавать любые решения на основе нашего продукта даже не дорабатывая исходные коды основных микросервисов, достаточно реализовать собственные пользовательские интерфейсы или модифицировать наши, заключить контракты с теми платежными системами, которые нужны именно вам, написать к ним адаптеры протоколов и начать развивать свой бизнес уже сегодня.
Мы позаботились о том, чтобы у вас не было проблем с производительностью и надежностью системы, ведь наш продукт построен с использованием микросервисных подходов и архитектуры распределенных систем, поэтому он никогда не будет узким местом.
Конечно, используем самые современные версии языков программирования и фреймворков и обеспечиваем своевременное обновление всех наших продуктов на новые версии в плановом режиме, а также обеспечиваем адекватно быструю реакцию и обновление любых наших приложений в случае публикации высокорисковых уязвимостей — ведь этот же процессинг мы используем для своих сервисов.
Архитектура спроектирована таким образом, чтобы у вас не было проблем с сертификацией и подключением даже к самым строгим и требовательным провайдерам, таким как EMVco. Вы с легкостью сможете пройти сертификацию PCI-DSS и реализовать прямое подключение к МПС (с технической стороны, разумеется).
Сейчас эта платформа обслуживает более 2,5 тысяч мерчантов из разных стран мира, к ней подключено более 30 различных банков и провайдеров платежных услуг, обрабатываются сотни платежей в секунду с десятками миллиардов рублей оборота. Вы получаете надежное, работающее решение, качество которого проверено временем.
Где взять и куда писать
Важно ещё вот что. Не нужно путать свободное ПО и бесплатное ПО. В этом случае вам все равно придется потратить какие-то средства на довольно очевидные вещи — необходимо будет иметь в штате технических специалистов, способных развернуть сопутствующую инфраструктуру, настроить сервера, базы данных, сопутствующее ПО, заключить контракты с существующими поставщиками платежных сервисов и реализовать техническую интеграцию с ними.
Зато с нашим решением вам не придется нести затраты на лицензии проприетарных программных продуктов или привязываться к решениям конкретного вендора платежных решений.
Решение предоставляется как в виде исходных кодов в репозиториях нашей организации на GitHub https://github.com/rbkmoney, так и в виде готовых бинарных приложений, встроенных в контейнеры Docker из нашего публичного Docker Registry https://hub.docker.com/u/rbkmoney.
Бизнес-модель нашего вендорского направления тоже продумана, разумеется мы хотим на этом зарабатывать. Но не за счет лицензий и продажи продукта, а за счет интеграций, платной технической поддержки и кастомных доработок продукта. Но это не главное.
Моя сокровенная мечта в том, чтобы наш продукт жил, развивался и занял достойную его часть рынка платежных систем, поверьте, продукт этого достоин.
Из минусов. Да, это опенсорс и это аджайл. С документацией в том, классическом виде, что можно ожидать у нас плоховато пока. Эта статья, пожалуй, самое полное описание продукта на данный момент. Но мы работаем над этим, и я рассчитываю на помощь коммьюнити — описания, переводы на другие языки, может быть даже разработка.
Сам продукт сложный. Мы сейчас активно мигрируем в кубер, партнеримся с разными публичными облачными сервисами, чтобы в них по одному клику можно было развернуть продукт. Но сейчас без нашей помощи развернуть работающий процессинг будет трудновато.
Присоединяйтесь к нам, у нас есть штат квалифицированных разработчиков, чтобы все настроить и запустить.
Пользуйтесь, пишите отзывы, задавайте вопросы, мы будем рады помочь.
А ещё у нас есть специальный чат в Telegram для оперативного обмена информацией между участниками комьюнити.
Автор: Anton Kuranda