Failed to authenticate. API Error: 401 Invalid authentication credentials
[2026-05-16] vault sync
This commit is contained in:
@@ -574,4 +574,144 @@ import SkipRevenueUI
|
||||
|
||||
---
|
||||
|
||||
*Документ создан автоматически исследовательским агентом. Источники: RevenueCat docs, RevenueCat State of Subscription Apps 2024 (290M+ subscribers dataset), Apple Developer docs, Google Play Console Help, Reddit r/androiddev, GitHub skip-revenue.*
|
||||
## 7. Российский рынок: подписки в условиях санкций (май 2026)
|
||||
|
||||
> **TL;DR:** App Store платежи в РФ полностью отключены с 1 апреля 2026. RevenueCat не поддерживает RuStore. Для России нужен отдельный платёжный стек. Единого SDK нет — нужна абстракция.
|
||||
|
||||
### 7.1 Текущий статус платёжных каналов
|
||||
|
||||
| Канал | Статус | Комментарий |
|
||||
|---|---|---|
|
||||
| **App Store (iOS)** | 🔴 **МЁРТВ** с 01.04.2026 | Apple Ireland оштрафована за нарушение санкций → отключила все платежи в РФ. Работает только существующий баланс Apple Account |
|
||||
| **Google Play (Android)** | 🟡 Ограничен | Visa/Mastercard недоступны. МИР — частично. SBP — нет. Часть пользователей платит через операторские счета, но это «расходящийся» канал |
|
||||
| **RuStore (Android)** | 🟢 **Основной канал** | Предустановлен на всех Android-устройствах в РФ с сентября 2025. Полная поддержка МИР, СБП, SberPay, карты из VK ID |
|
||||
| **RuStore на iOS** | 🟠 Не существует | Только RuStore Bridge (требует Android-устройства рядом). Pay SDK для iOS был анонсирован дек. 2025 на «начало 2026» — статус запуска неясен |
|
||||
| **Web-checkout iOS** | 🟡 Технически возможен | Внешний сайт + ЮКасса/Tinkoff/CloudPayments → пользователь получает токен доступа → вводит в приложении |
|
||||
|
||||
### 7.2 RevenueCat: поддержка России
|
||||
|
||||
**RevenueCat НЕ поддерживает RuStore.** RevenueCat оборачивает только:
|
||||
- StoreKit / StoreKit 2 (Apple)
|
||||
- Google Play Billing (Google)
|
||||
|
||||
RuStore использует собственный **Pay SDK** (и мигрирует с устаревшего BillingClient → обязательно до 1 августа 2026). Никакой официальной или сторонней обёртки RevenueCat для RuStore не существует.
|
||||
|
||||
**Следствие для skip-revenue:** `skip-revenue` тоже не покрывает RuStore — это обёртка над RevenueCat.
|
||||
|
||||
**Adapty** — та же ситуация: поддерживает App Store + Google Play, RuStore нет.
|
||||
|
||||
### 7.3 RuStore Pay SDK: ключевые детали
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---|
|
||||
| **Дедлайн миграции с BillingClient** | **1 августа 2026** — старый SDK перестаёт принимать платежи |
|
||||
| **Платёжные методы** | МИР, СБП, SberPay, карты (T-Pay и мобильный счёт — в роадмапе) |
|
||||
| **Авто-подгрузка карт** | Из VK ID — без ручного ввода → **+20% к конверсии** |
|
||||
| **Поддержка подписок** | Полная: trial / promo / main / grace / hold периоды |
|
||||
| **Sandbox** | Есть (в BillingClient не было) |
|
||||
| **Комиссия** | Не публикуется явно; конкурентная с Google Play |
|
||||
| **Фреймворки** | Kotlin/Java, React Native, Flutter, Unity, Godot, Unreal Engine, Defold |
|
||||
| **Swift / iOS нативный SDK** | ❌ Отсутствует |
|
||||
|
||||
### 7.4 Архитектура для покрытия России
|
||||
|
||||
Единого SDK нет. Нужна абстракция на уровне приложения:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ PaymentProvider (протокол) │
|
||||
│ loadProducts() / purchase() / checkStatus() │
|
||||
└──────────┬───────────────────────────┬──────────────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
RevenueCatProvider RuStoreProvider
|
||||
(iOS App Store + (Android RuStore
|
||||
Android Google Play) Pay SDK)
|
||||
skip-revenue пакет Kotlin native
|
||||
Глобальные рынки Только РФ Android
|
||||
│ │
|
||||
└──────────┬────────────────┘
|
||||
▼
|
||||
WebCheckoutProvider
|
||||
(iOS РФ + fallback)
|
||||
ЮКасса / Tinkoff /
|
||||
CloudPayments
|
||||
→ access token flow
|
||||
```
|
||||
|
||||
**Практически это значит:**
|
||||
|
||||
- **Android**: 2 отдельных flavor — `googlePlay` (RevenueCat) и `ruStore` (Pay SDK). Или одна сборка с детектом магазина.
|
||||
- **iOS глобальные**: RevenueCat + skip-revenue (как и планировалось).
|
||||
- **iOS Россия**: Веб-чекаут — пользователь нажимает «Оформить подписку» → открывается Safari/SFSafariViewController → платёж через ЮКасса → сервер выдаёт токен → приложение активирует доступ. Apple разрешает это через External Purchase Link Entitlement (в РФ де-факто выдают для Reader App категории и ряда других).
|
||||
|
||||
### 7.5 Веб-чекаут для iOS России: как работает
|
||||
|
||||
```
|
||||
iOS пользователь
|
||||
↓
|
||||
[Кнопка "Подписаться"]
|
||||
↓
|
||||
SFSafariViewController → ваш сайт (yourapp.com/subscribe)
|
||||
↓
|
||||
Выбор плана + ввод данных карты
|
||||
↓
|
||||
ЮКасса / CloudPayments / Tinkoff
|
||||
(МИР, СБП, SberPay, карты)
|
||||
↓
|
||||
Успешный платёж → сервер создаёт subscription record
|
||||
↓
|
||||
Redirect с токеном → ваше приложение deeplink
|
||||
↓
|
||||
Приложение активирует доступ (по токену или user ID)
|
||||
```
|
||||
|
||||
**Российские платёжные провайдеры для web-checkout:**
|
||||
|
||||
| Провайдер | Комиссия | Методы | Подписки |
|
||||
|---|---|---|---|
|
||||
| **ЮКасса (Сбербанк)** | 2.8–3.5% | МИР, СБП, SberPay, карты, кошельки | Рекуррентные + 54-ФЗ авто |
|
||||
| **CloudPayments (Тинькофф)** | 2–3.9% | МИР, СБП, T-Pay, карты | Лучшая поддержка подписок по API |
|
||||
| **Tinkoff Checkout** | 2.5–3% | МИР, T-Pay, карты | Есть, через API |
|
||||
|
||||
**CloudPayments** — оптимален для подписочной модели: гибкий API, удобное управление рекуррентными платежами, owned by Тинькофф → надёжность.
|
||||
|
||||
### 7.6 Стратегия: стоит ли вообще заниматься РФ?
|
||||
|
||||
**Аргументы за:**
|
||||
- 144 млн человек; mental health ниша практически пустая в RuStore
|
||||
- RuStore — конкурентное преимущество (большинство международных разработчиков игнорируют)
|
||||
- Пользователи платят в рублях, конкуренция ниже → выше средний чек в соотношении
|
||||
|
||||
**Аргументы против:**
|
||||
- iOS Russia = мёртв до изменения политики. Веб-чекаут — сложная инфраструктура для соло-разработчика
|
||||
- RuStore Pay SDK требует отдельную Android-интеграцию без RevenueCat
|
||||
- VK/RuStore — политически неоднозначная зависимость
|
||||
- Юридическая сторона: приём платежей из РФ как резидент Кыргызстана — требует консультации
|
||||
|
||||
**Рекомендация для соло-разработчика на старте:**
|
||||
|
||||
> **Фаза 1 (MVP):** Запуск только на глобальных рынках через RevenueCat + App Store + Google Play. Россию пропустить.
|
||||
>
|
||||
> **Фаза 2 (после первой выручки):** Добавить RuStore Android через Pay SDK как отдельный flavor. Это даёт 100% Android-охват РФ.
|
||||
>
|
||||
> **Фаза 3 (если есть спрос):** Веб-чекаут для iOS-аудитории РФ через CloudPayments. Только если data показывает значимый трафик.
|
||||
|
||||
### 7.7 Если всё-таки делать RuStore: минимальный план
|
||||
|
||||
```
|
||||
□ 1. Зарегистрировать юрлицо или ИП (RuStore требует юридическое лицо)
|
||||
□ 2. Зарегистрироваться в RuStore Console (console.rustore.ru)
|
||||
□ 3. Создать отдельный Android productFlavor: ruStore
|
||||
□ 4. Подключить Pay SDK (не BillingClient — он умирает 01.08.2026)
|
||||
□ 5. Создать продукты в RuStore Console (подписки)
|
||||
□ 6. Реализовать RuStorePaymentProvider абстракцию
|
||||
□ 7. Протестировать в Sandbox
|
||||
□ 8. Публикация → отдельный APK для RuStore подписан тем же ключом
|
||||
```
|
||||
|
||||
**Важно:** RuStore требует, чтобы подпись APK совпадала с подписью билда в Console. Нельзя использовать debug keystore.
|
||||
|
||||
---
|
||||
|
||||
*Документ обновлён май 2026. Источники: CNews, MacDailyNews, The Verge, RuStore Developer Docs, ASO World Russia 2026, RevenueCat Blog (app-to-web), Adapty Blog (alternative payments), softwarelead.pro (Pay SDK migration).*
|
||||
|
||||
Reference in New Issue
Block a user