Если цифровой сервис с самого начала создаётся для международной аудитории, вопрос платёжной инфраструктуры встаёт практически сразу. Как принимать оплату от пользователей из разных стран? Как переводить средства исполнителям, если у каждого — своя валюта? Как сделать так, чтобы всё это работало прозрачно, надёжно и без лишней нагрузки на команду?

На примере международной образовательной платформы расскажем, как работают платёжные инструменты в подобном сервисе, какие задачи они решают — и с какими подводными камнями можно столкнуться при их подключении.

Содержание

О проекте

Для заказчика это был первый проект, он пришёл к нам с идеей и эскизами, поэтому мы вместе дорабатывали структуру платформы, продумывали пользовательские сценарии и собирали ТЗ. В результате появился мультиязычный цифровой продукт: сайт, мобильные приложения, административная панель. 

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

В итоге стартап вышел на рынок, получил первых пользователей и привлёк следующий инвестиционный раунд.

Почему Stripe

Платёжная система — один из самых критичных блоков в таких сервисах. Она должна быть надёжной, прозрачной и простой в использовании как для пользователей, так и для команды, которая будет её сопровождать. Изучили доступные сервисы и выбрали Stripe — это международный платёжный провайдер, который работает с картами, Apple Pay, Google Pay и PayPal и позволяет делать выплаты по всему миру. 

Чем он удобен:

  • Поддержка разных сценариев: разовые платежи, подписки, возвраты, удержание средств, платёжные ссылки.

  • Масштабируемость: обслуживает как небольшие интернет-магазины, так и гигантов вроде Amazon или Shopify.

  • Дополнительные сервисы: предлагает инструменты для борьбы с мошенничеством, управления бизнесом и работы с налогами и отчетностью.

С технической стороны Stripe предлагает понятный API, хорошую документацию и гибкость в сценариях. Это особенно важно, если в продукте предусмотрена поурочная или поминутная оплата, как у нас. 

Как устроена оплата в сервисе

Когда ученик выбирает занятие и нажимает кнопку оплаты:

  • Вводит данные своей карты (или использует Apple Pay / Google Pay).

  • Данные отправляются напрямую в систему Stripe, которая проверяет карту и списывает нужную сумму.

  • Данные карты не хранятся у нас, их обрабатывает только Stripe.

Stripe сразу возвращает статус оплаты: успешно / ошибка / ожидается подтверждение.

Получение события об оплате

Когда Stripe провёл платёж, он отправляет уведомление о событии — платёж прошёл, не прошёл, отменён и т.д. Мы не проверяем статус вручную, уведомления приходят в нашу очередь сообщений — RabbitMQ. Это компонент, который работает как диспетчер: принимает сообщения от Stripe и передаёт их нужным частям платформы для обработки.

Пример:

  • Stripe присылает: «Платёж ID123 прошёл успешно»

  • RabbitMQ передаёт это событие системе оплаты

  • Система сохраняет этот статус и обновляет баланс преподавателя.

Учет дохода преподавателей

Система автоматически учитывает:

  • Кто вёл занятие

  • Сколько длилось занятие

  • Сколько ученик заплатил

  • Какую комиссию нужно отдать платформе

На основе этих данных платформа рассчитывает, сколько должен получить преподаватель. Расчёты аккумулируются за месяц — по его итогам преподавателю формируется отчёт.

Выплаты преподавателям

Раз в месяц:

  • Платформа формирует сводку: кто сколько заработал

  • Stripe получает команды перевести деньги на счёт преподавателя (если тот подключил Stripe-аккаунт)

  • Система уведомляет преподавателя о переводе

Это происходит автоматически, администратору не нужно ничего считать и отправлять деньги каждому преподавателю.

Прозрачность для всех участников

  • Ученик может посмотреть историю оплат и статусы своих занятий

  • Преподаватель видит баланс и список оплаченных / неоплаченных уроков

  • Владелец платформы видит отчёты по всем транзакциям, может фильтровать их по пользователям и периодам.

Тестирование

Чтобы не рисковать работающей платформой, мы заранее продумали, как будет устроена среда для разработки и тестирования. Под каждый стенд (то есть отдельную копию системы) мы создавали отдельный бизнес-аккаунт в Stripe. Каждая из этих версий жила своей жизнью, с собственными пользователями и отдельной интеграцией. Это позволяло нам безопасно и гибко проверять разные сценарии: подписка, оплата, сбои, просрочки и так далее.

Например, мы тестировали:

  • что будет, если на карте нет денег;

  • как срабатывает продление подписки через месяц;

  • что происходит, если пользователь не вводит код, который пришел через приложение банка;

  • как выглядят письма с напоминаниями об оплате;

  • можно ли оплатить вручную по ссылке, если списание не прошло и т.д.

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

Что в итоге

Мы успешно подключили Stripe и реализовали ключевой функционал:

  • приём оплат

  • регулярные выплаты преподавателям по всему миру

  • прозрачную учётную систему

  • надёжную среду для тестирования и отладки.

Doubletapp помогает запускать и масштабировать цифровые продукты — от проектирования платформы до настройки сложной инфраструктуры.
Ищете команду, которая сможет взять на себя техническую реализацию и интеграции? Давайте обсудим ваш проект.

Комментарии (0)