- BrainTools - https://www.braintools.ru -

Мой опыт монетизации проекта: шахматы по переписке с платёжным сервисом

Я уже больше года работаю над проектом Language Dove [1], и наконец пришло время его монетизировать.

В этой статье – мой опыт [2] с двумя платёжными сервисами: американским MoR (merchant of record) Paddle и интернет-эквайрингом от IDBank в Армении, а также технические детали интеграции с тем из них, который я в итоге выбрал.

О проекте

Language Dove – это платформа для изучения языков: у меня есть курсы с нуля, интерактивные книги, упражнения на говорение.

Но главная фича сайта – это караоке-субтитры к фильмам с двумя видами перевода: адаптивным художественным и буквальным, но на уровне отдельных слов [3]. Про то, как я их делаю, я недавно писал на Хабре [4].

Если у вас нормально работает YouTube, то фильмы с субтитрами можно посмотреть тут (с переводом на русский) [5] или тут (с переводом на английский) [6].

Если у вас проблемы с YouTube – есть демка на Google Drive [7]: первая серия «Футурамы» с апскейлом до 2160p и с субтитрами, вшитыми прямо в видео.

Мой опыт монетизации проекта: шахматы по переписке с платёжным сервисом - 1

В базовом варианте все переводы делаются автоматически. Однако, есть возможность подправить их вручную. Для «Футурамы» я так и сделал – это заняло ~2 часа, по часу на каждый вид перевода.

Модель монетизации

Я реализовал 2 вида монетизации:

  1. Подписка на материалы сайта. Весь контент делится на платный и бесплатный – доступ к платному открывается единой подпиской. В библиотеке (курсы, книги, видео с субтитрами) у каждого материала хранится булевой флаг платности. Чуть сложнее с упражнениями на говорение: они разбиты на шесть уровней, каждый следующий (кроме последнего) вдвое длиннее предыдущего. Первый уровень (100 предложений) бесплатный, остальные – по подписке.

    Мой опыт монетизации проекта: шахматы по переписке с платёжным сервисом - 2
  2. Заказ субтитров для кастомных видео. Пользователь оформляет заказ, оставляет контакты → мне приходит сообщение в Телеграм → я ему пишу, беру видео → я делаю субтитры → отдаю результат → пользователь платит. Нужны две страницы: страница заказа с калькулятором цен и страница оплаты после получения субтитров. Для пользователей из России вторая страница не используются – идёт расчет внутри РФ.

    Мой опыт монетизации проекта: шахматы по переписке с платёжным сервисом - 3

Обо мне

Живу в Ереване.

Ради проекта уволился с работы, оформил ИП, а затем бизнес-ВНЖ.

ИП-счёт открыл в IDBank – потому что у них есть интернет-эквайринг.

Гражданство РФ.

Какие есть альтернативы

Stripe [8] – самый популярный выбор у американских фаундеров, но в Армении он не работает. Есть обходной путь через удалённую регистрацию компании в США, но это даже на словах звучит запредельно сложно.

Я посмотрел другие американские сервисы: Lemon Squeezy [9], Paddle [10], Dodo Payments [11], FastSpring [12]. Везде на определённом этапе требуется верификация по паспорту.

Patreon [13] тоже рассматривал, но быстро отбросил. «Поддержите нас на Patreon, чтобы получить доступ к платным фичам сайта» – я такого ни на одном серьёзном сайте не видел. Для западной аудитории это выглядело бы схематозно и подозрительно.

Тогда я вспомнил про IDBank и решил подать заявку на «виртуальный POS-терминал» [14] (это они так называют интернет-эквайринг). Сайт банка жёстко глючил, подать онлайн не получилось – пришлось звонить, и оператор оформила заявку по телефону.

Dodo Payments

Решил обходить сервисы по возрастанию популярности – в моём представлении, менее популярный сервис с большей вероятностью будет добрее к русским.

Dodo отбросил сразу: верификация там происходит уже после настройки аккаунта и получения первых платежей. То есть ты всё подключаешь, получаешь деньги – и тут тебе: «а теперь покажите паспорт». Нет, спасибо.

Fast Spring

На следующий день после регистрации пришло письмо

For this type of service our compliance team requests three months of transaction statements to review from a previous payment processor. Would this be possible, or is this a new product offering?

Понял, что шансов мало, но на всякий случай я подробно расписал свою ситуацию. Ожидаемо отказали, причём формулировка породила больше вопросов, чем ответов:

Unfortunately we would not be able to move forward without those statements and we require all new sellers to go through a verification process and if you were using a Russian Passport for that it would be declined due to currency restrictions.

Какое отношение русский паспорт имеет к валюте? (Мой ИП-счёт, естественно, долларовый.) Может, имели в виду «current restrictions»?

Проверка сайта в Paddle

На очереди Paddle.

В Paddle для работы с реальными деньгами нужно пройти две стадии верификации: проверка сайта и верификация личности.

С первой стадией всё прошло относительно гладко. 

Нужно было добавить стандартные юридические страницы: Terms of Service, Privacy Policy, Refund Policy и Pricing.

После отправки на проверку через 3 дня пришло письмо с замечаниями:

1. Срок рефанда. Paddle требует минимум 14 дней на возврат – у меня было меньше, попросили исправить.

2. Распознавание речи. Потребовали убрать функцию распознавания речи в упражнениях на говорение с формулировкой: “Paddle cannot support products that have a voice-over feature”. Я изучил список запрещённых продуктов [15] – самое близкое к войсоверам – это “Content Generation with Voice Impersonations”. Очевидно, сотрудник перепутал speech-to-text и text-to-speech. В ответном письме объяснил разницу, добавив, что распознавание речи используется практически всеми языковыми платформами.

3. Формат обучения [16]. Спросили, предзаписаны ли материалы или я занимаюсь репетиторством вживую – последнее запрещено как “human services”. Ответил, что всё предзаписано, и дал ссылку на курс испанского.

Ещё через 3 дня пришёл ответ – сайт одобрен.

Идём в армянский банк

Вспоминаем про IDBank. Ответа на заявку так и не было, поэтому я пошёл в отделение лично.

Сначала всё шло нормально – меня усадили обсуждать «виртуальный POS» с менеджером. Спрашиваю: есть стандартная процедура для подписочной модели? А если нет, то можно ли навелосипедить на основе разовых платежей? Менеджер кому-то позвонила и неуверенно ответила: подписок нет, но навелосипедить можно.

В остальном сервис устраивал: автоматический приём международных карточных платежей, деньги идут на счёт ИП напрямую. Писать кастомный код для подписки я не боялся.

Уже собирался оставлять заявку, но на всякий случай спросил: «А ничего, что сайт на английском»? Оказалось – сайт обязательно должен иметь армянскую версию. Спрашиваю: «Можно нейронкой перевести»? Менеджер не поняла. «Ну, искусственным интеллектом [17].» (Сказать «машинный перевод» я побоялся – подумает, что я собираюсь построчно гнать через Google Translate.) Она всё равно не поняла. Тогда напрямую: «Ничего, если перевод будет звучать немного коряво?» – «Ничего страшного, главное, чтобы всё было понятно.»

Ушёл из банка с задачей: добавить локализацию на армянский.

Добавляем локализацию

Я решил сделать полноценный переключатель языка – не только на армянский, но и на другие языки.

Для каждого языка хранится .json-файл с локализованными строками. Файл генерируется автоматически, после чего перевод можно поправить вручную. Строки сгруппированы по страницам – каждая страница переводится отдельным запросом к LLM.

Стратегия перевода зависит от типа страницы:

  1. Для пользовательских страниц (лендинг, цены, блог, статьи по грамматике, страница заказа субтитров) используется транскреация [18], адаптивный перевод (такой же, как и для фильмов).

  2. Юридические (ToS, Privacy Policy, Refund Policy) – прямой перевод, потому что транскреация может накреативить там, где это крайне неуместно.

Про различия обычного перевода и транскреации я писал в предыдущей статье [4]. Для перевода использовал Claude Opus 4.5 – по моим личным бенчмаркам, модели Anthropic лучше других справляются с языковыми задачами.

Вручную переводы я не правил. Логика [19] простая: если я поменяю хотя бы одно слово в английском тексте, при перегенерации получится другой перевод всей страницы, и ручные правки пойдут в мусорку. Лучше сначала прийти к финальным формулировкам на английском, а потом уже шлифовать переводы.

То, что вы видите на сайте в русской версии [20] – это на 100% машинный перевод. По-моему, выглядит весьма достойно. А вот с армянским LLM справляются заметно хуже. Скорее всего, армянская версия ощутимо пахнет машинным переводом. Если среди читателей есть армяне – поделитесь впечатлениями [21], интересно.

После перевода сайта я снова пришёл в банк, и заявку наконец обработали.

Верификация личности в Paddle

Теперь самое «интересное» – верификация с паспортом РФ.

Paddle использует сервис Onfido: присылают ссылку, загружаешь фото документа и селфи, Onfido всё проверяет и возвращает вердикт. Россия в списке есть – можно отправить внутренний паспорт или загранпаспорт. Я выбрал загран.

Важный нюанс: принимают только фотографию, не скан. У меня камера на планшете сломана, а вебка – так себе. К счастью, нашлось старое фото заграна, снятое ещё рабочей камерой.


Отправил всё днём, ночью пришёл ответ:

  • Фото недостаточно чёткое, нужно переснять.

  • Нужен proof of address в несанкционной стране: utility bill или договор аренды.

Отправил семь документов в качестве proof of address:

  • текущий и 3 предыдущих ВНЖ

  • договор аренды

  • скриншоты оплаты коммуналки из банковского приложения (в Армении счета на физическую почту не присылают)

Фото решил переснять вебкой крупным планом.


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


На этот раз к фото претензий не было. Зато попросили банковскую выписку с именем и адресом за последние 3 месяца.

А вот это проблема. В банке с личным счётом указан российский адрес (открывал в 2022-м, сразу после переезда). В банке с ИП-счётом мало транзакций, а армянский адрес не совпадает с адресом проживания – оформлял ИП удалённо, и компания вписала свой юрадрес вместо моего.

Попробовал сменить адрес в первом банке – отказали. Их устраивает только регистрация по адресу в паспорте, никакие другие документы не годятся; я делал регистрацию, но для предыдущего ВНЖ. Да и в выписке они адрес всё равно не указывают.

Делать нечего – отправил выписки из обоих банков и честно описал всю ситуацию. Для подтверждения адреса приложил справку о регистрации ИП.


Ответ снова про фото паспорта: у системы проблема с распознаванием (и это с профессиональным снимком!). Спросили, есть ли другой документ. Выбора нет – только потрёпанный временем внутренний паспорт РФ.

Снова пошёл в фотостудию. На этот раз сфоткал и загран, и внутренний паспорт по нескольку раз. Отправил всё.


В ответ – опять запрос proof of address в несанкционной стране. К этому моменту имена сотрудников Paddle начали повторяться – видимо, я перебрал их всех.

Снова отправил все документы.


На этот раз написали, что им нужно время проверить всё предоставленное. Через 3 дня пришло подтверждение – верификация пройдена. Ещё несколько дней занял «Final Review», но там прошло без проблем.

Ура, получилось! Наконец-то можно интегрировать монетизацию.

Как там с армянским банком.

Через 2 недели после подачи заявки позвонили и попросили добавить на сайт логотипы Visa, Mastercard, ArCa и IDram. Добавил – сказали, что отправили на дальнейшую проверку.

Ещё через месяц – когда аккаунт Paddle уже был верифицирован, но монетизация ещё не внедрена – пришло письмо с отказом от IDBank.

Что именно им не понравилось – не знаю. Возможно, сайт не выглядел достаточно армянским: нет перевода материалов на армянский (только машинный перевод интерфейса); цены в долларах; в ToS указано, что английская версия имеет преимущественную силу.

Как работает Paddle

В Paddle разработчик создаёт продукты, а для каждого продукта назначает одну или несколько цен.

Атрибуты цены:

  1. Тип платежа: единовременный, ежемесячный или ежегодный

  2. Значение для каждой страны – в долларах или другой поддерживаемой валюте (примерно у половины стран местная валюта не поддерживается)

  3. Отображение: с НДС, без НДС или по традиции страны. В США цены указывают без НДС (он добавляется при покупке), в большинстве других стран – с НДС

Есть два вида API-ключей:

  1. Фронтенд-ключ – публичный. Через него я получаю цены в локали пользователя для отображения на сайте

  2. Бекенд-ключ – секретный. Я использую его для проверки наличия подписки

Также есть скидочные коды: задаём, к каким ценам применим код, а также размер скидки. Скидка срабатывает, когда пользователь вводит код на странице покупки.

Комиссия Paddle: 5% + $0.50 за транзакцию. Из-за фиксированных 50 центов невыгодно дробить крупные покупки на несколько транзакций.

Процесс интеграции

  1. Создаём продукты, цены и скидочные коды

  2. На фронтенде делаем страницу с ценами – подтягиваем их c помощью фронтенд-ключа

  3. По кнопке «Купить» / «Подписаться» – редирект на страницу оплаты Paddle. Контролируем её косвенно: можно передать email и скидочный код для автозаполнения

  4. После покупки получаем событие на фронтенде и обновляем статус пользователя. Можно настроить вебхук для бекенда, но мне это не нужно – статус подписки проверяется при запросе контента

Пока подписка активна, Paddle сам списывает деньги по расписанию – с нашей стороны ничего не требуется.

Paddle хранит платёжные данные пользователей и предоставляет персональную ссылку на управление подпиской – отмена, смена платёжных данных. Эта же ссылка приходит в письме при покупке.

Реализация подписки на платные материалы

Я создал два продукта: ежемесячная подписка ($9/мес) и годовая($72/год, т.е. $6/мес). Отображение цены – по традиции страны, чтобы не раздражать пользователей.

Красивый прайсинг

Проблема: при автоконвертации, цены во многих локалях выглядят некрасиво – получаются нецелые числа, плюс отсутствует «психологический прайсинг» (199 вместо 200 – мозг [22] видит «сто с чем-то» и воспринимает цену ниже).

Решение – скрипт, который автоматически вычисляет цены во всех валютах с учётом НДС-традиции и подбирает красивые числа, сохраняя примерно одинаковый доход с транзакции:

  1. Вычисляем вещественное референсное значение в местной валюте

  2. Ищем целое число, которое меньше референсного не более чем на 10%, но при этом у него либо отличается ведущая цифра, либо меньше цифр в записи

  3. Если такого нет – просто округляем

Авторизация и защита

Авторизация у меня через Supabase: magic link или Google. При нажатии «Подписаться» пользователь обязан быть авторизован – иначе он может вписать произвольный email, а Paddle его не проверяет. Неавторизованных просим сначала залогиниться.

Пользователь идентифицируется по email. На бекенд передаётся не email напрямую, а JWT-токен сессии – email извлекается из него через Supabase API.

Бекенд умеет по email:

  1. Проверять наличие подписки

  2. Возвращать ссылку на управление подпиской

Если у залогиненного пользователя уже есть активная подписка — кнопки «Подписаться» деактивируются (Paddle, как выяснилось, не контролирует повторную подписку на тот же продукт).

Логика доступа к контенту

Если материал бесплатный → отдаём сразу.

Если платный → извлекаем email из JWT, проверяем подписку. Есть – отдаём. Нет – возвращаем ошибку [23], на фронтенде показываем попап «материал платный» с редиректом на страницу подписки.

Реализация заказа субтитров

Стоимость обработки видео зависит от:

  • Длины видео: короткое / среднее / длинное

  • Нужен ли адаптивный художественный перевод

  • Нужен ли контекстуальный перевод на уровне слов

  • Количества видео в заказе

Итого я создал 12 цен: 3 длины × 4 комбинации переводов. Скидки за объём реализованы через скидочные коды.

Внимание [24]: цены указаны из расчета, что все переводы автоматические. Я в теории могу их улучшить вручную, но это весьма трудоёмко (напоминаю, на одну серию «Футурамы» ушло 2 часа). Можно об этом договориться отдельно.

Мой опыт монетизации проекта: шахматы по переписке с платёжным сервисом - 4

Также я сверстал страничку для оплаты после выполнения заказа.

Все настройки задаются через параметры URL. Предполагается, что я сам формирую соответствующую ссылку и отправляю её пользователю.

Мой опыт монетизации проекта: шахматы по переписке с платёжным сервисом - 5

Выводы

Таким образом, монетизировать свой проект через Paddle возможно даже с российским паспортом; однако процесс верификации будет небыстрым.

Я рассказал про подводные камни монетизации и надеюсь, что кому-то помог не совершить ошибок.

Автор: einhorn

Источник [25]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/27271

URLs in this post:

[1] Language Dove: https://languagedove.com

[2] опыт: http://www.braintools.ru/article/6952

[3] буквальным, но на уровне отдельных слов: https://habr.com/ru/articles/928456/

[4] недавно писал на Хабре: https://habr.com/ru/articles/994896/

[5] тут (с переводом на русский): https://languagedove.com/library?target_language=All&translation_language=ru&category=All%20videos

[6] тут (с переводом на английский): https://languagedove.com/library?target_language=All&translation_language=en&category=All%20videos

[7] демка на Google Drive: https://drive.google.com/file/d/10Bwz02RzZ0yMSOpLQpGMu4uERnCB-t3F/view?usp=sharing

[8] Stripe: https://stripe.com

[9] Lemon Squeezy: https://www.lemonsqueezy.com

[10] Paddle: https://www.paddle.com

[11] Dodo Payments: https://dodopayments.com

[12] FastSpring: https://fastspring.com

[13] Patreon: https://www.patreon.com

[14] «виртуальный POS-терминал»: https://idbank.am/ru/business/instruments/torgovoe-finansirovanie/v-pos-pos-1/

[15] список запрещённых продуктов: https://www.paddle.com/help/start/intro-to-paddle/what-am-i-not-allowed-to-sell-on-paddle

[16] обучения: http://www.braintools.ru/article/5125

[17] интеллектом: http://www.braintools.ru/article/7605

[18] транскреация: https://en.wikipedia.org/wiki/Transcreation

[19] Логика: http://www.braintools.ru/article/7640

[20] на сайте в русской версии: https://languagedove.com/?site_language=ru

[21] впечатлениями: http://www.braintools.ru/article/2012

[22] мозг: http://www.braintools.ru/parts-of-the-brain

[23] ошибку: http://www.braintools.ru/article/4192

[24] Внимание: http://www.braintools.ru/article/7595

[25] Источник: https://habr.com/ru/articles/1011226/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1011226

www.BrainTools.ru

Rambler's Top100