Apps Kit SDK logoApps Kit SDK
Документация · Портал Apps Kit SDK

Пейволлы

Группа Paywall в боковом меню (Products, Offerings, Paywall Templates) — это самостоятельный раздел для создания и продажи подписок и разовых покупок в приложении без написания кода интерфейса пейволла. Три его составляющие последовательно связаны друг с другом: продукт (Product) — это отдельный SKU магазина (базовый план подписки, специальное предложение или разовая покупка), импортированный из Google Play, App Store или Amazon либо добавленный вручную; набор продуктов (Offering) объединяет несколько продуктов одного приложения в именованную группу, где один продукт выбран по умолчанию; шаблон пейволла (Paywall Template) — это сам экран, созданный в визуальном редакторе портала, который показывает продукты из набора и запускает покупку. После публикации шаблон привязывается к конкретным местам показа в приложении в разделе App Details → Paywalls for App Placeholders, описанном ранее в этом руководстве.

Продукты

Страница Products (/paywall-products) содержит общую таблицу продуктов всех приложений, которыми вы управляете: #, Title (название), App (значок, название и имя пакета приложения), Store (значок платформы — Google Play, Apple App Store или Amazon Appstore — либо серое тире, если магазин приложения не определён), Store identity (идентификатор продукта/SKU в магазине, отображаемый моноширинным шрифтом), Time Period (период), метка Status (Active/Inactive — активен/неактивен), Created At (дата создания) и действия для строки. Поиск выполняется по названию, SKU, описанию, названию приложения или имени пакета. Фильтры App, Status, Store и Time Period позволяют дополнительно сузить список. Внизу используется та же панель пагинации, что и на остальных страницах раздела Paywall.

1789744318189-products-list.png

Нажмите Create Product в правом верхнем углу, чтобы создать продукт, или выберите существующую строку для редактирования. В обоих случаях откроется редактор с двумя панелями: сначала выберите App, которому принадлежит продукт (до этого остальные элементы недоступны), затем нажмите Import для импорта из магазина приложения или Add product для добавления вручную.

1789744336705-products-tree-grouped.png

Когда у приложения появятся продукты, на левой панели они будут сгруппированы по типу: Manual products (созданные непосредственно на портале), One-time products (продукты для разовых покупок) и отдельные Subscription (подписки). Каждую подписку можно развернуть, чтобы увидеть её Base plans (базовые планы) и вложенные в каждый план Offers (специальные предложения). Базовый план задаёт период оплаты и цену в рамках одной подписки: например, планы «Weekly Pro» и «Monthly Pro» могут относиться к одной и той же подписке.

Импорт из Google Play (Android). Для приложения из Google Play пункт Import → Connect Google Play запускает не просто форму ввода, а однократную настройку из двух этапов:

1789744372767-products-import-google-play.png

  • 1. Google Cloud — создайте сервисный аккаунт в Google Cloud Console, включите для него Google Play Android Developer API и скачайте его JSON-ключ.
  • 2. Play Console — пригласите сервисный аккаунт по его адресу электронной почты в Play Console и предоставьте разрешения View app information и Manage store presence. В диалоговом окне показан адрес для копирования и есть прямые ссылки на обе консоли.

Загрузите скачанный JSON-ключ сервисного аккаунта, при необходимости установите флажок Include inactive base plans and offers (по умолчанию выключен — импортируются только активные в Play Console планы и предложения), затем нажмите Fetch products. Каждый результат станет черновиком продукта с заполненными названием, описанием, предварительной ценой, статусом и — только для Google — полным деревом базовых планов и предложений: идентификатором подписки, идентификатором базового плана, а также типом, ценами, этапами и условиями доступности каждого предложения. Повторный импорт обновляет несохранённые черновики данными из Play Console, не затрагивая уже сохранённые продукты.

Импорт из Apple App Store (iOS). Для приложения из App Store команда Import App Store products запрашивает Bundle ID приложения (уже заполнен), Key ID, Issuer ID и файл In-App Purchase key (.p8). Последние три элемента можно получить на странице Users and Access → Integrations → In-App Purchase в App Store Connect; прямая ссылка на неё есть в диалоговом окне. Кнопка Fetch products недоступна, пока не указаны Key ID, Issuer ID и файл .p8. Из-за собственной иерархии Apple (группа подписок → продукт) импортированные продукты не получают такое же дерево базовых планов, как у Google. Статус определяется фактическим состоянием проверки в Apple: только подписка со статусом APPROVED импортируется как Active. Подписки, которые ещё проходят проверку, требуют действий разработчика или были отклонены, импортируются как Inactive.

Импорт из Amazon Appstore. В Amazon импорт выполняется через файл, а не через учётные данные: загрузите Product catalog JSON (экспорт продуктов из Amazon App Tester) и нажмите Import products. Элементы с типом SUBSCRIPTION становятся продуктами-подписками, а элементы ENTITLED и CONSUMABLE — продуктами для разовых покупок. В Amazon нет понятия базового плана, поэтому каждый импортированный продукт содержит непосредственно свой Amazon Product ID/SKU, а не дерево базовых планов.

Создание продукта вручную. Кнопка Add product создаёт черновик, в котором идентификаторы продукта в магазине вы вводите самостоятельно, а не импортируете. Это удобно, если продукт ещё не настроен в консоли магазина или вы хотите сначала подготовить его на портале. Набор полей зависит от магазина приложения: для Google Play нужны Subscription ID, Base plan ID и Billing period; для App Store — Subscription group и Product ID; для Amazon — Product ID и тип продукта. Продукт также можно пометить как разовую покупку вместо регулярной подписки.

После успешного импорта заполненное из магазина поле становится доступным только для чтения. Подсказка сообщает: «Импортировано из магазина. Измените значение в Google Play / App Store / Amazon, затем выполните импорт повторно». Изменения нужно вносить в консоли соответствующего магазина, а затем повторять импорт, а не редактировать поле здесь.

1789744448829-products-base-plan-offers.png

Независимо от магазина у каждого продукта есть Title (название, 100 символов), обязательное Description (описание, 500 символов), необязательные теги Features / Benefits (возможности / преимущества), пользовательские Params в формате ключ/значение и Status (Active/Inactive), который можно менять даже у импортированного продукта. В Time Period можно выбрать неделю, месяц, 3 месяца, 6 месяцев, год, бессрочный доступ либо Custom Period с произвольным текстом. Далее сохранённые продукты добавляются в Offering.

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

Наборы продуктов

Набор продуктов (Offering) объединяет несколько продуктов одного приложения в именованную группу, которую затем можно показать в шаблоне пейволла. Именно этот уровень определяет, какие продукты разрешено продавать через конкретный пейволл и какой из них выбран по умолчанию.

1789744472318-offerings-list.png

На странице Offerings (/paywall-offerings) отображаются #, Offering Name (название набора), App, количество Products, Status, Created At и действия. Поиск и фильтры App/Status работают так же, как на странице Products. Нажмите Create Offering, чтобы создать набор.

1789744566510-offerings-edit-products.png

Каждый набор принадлежит ровно одному App. Сначала выберите приложение: от него зависит список доступных продуктов. Если затем сменить приложение, текущий выбор продуктов будет сброшен. Заполните Name (название, 100 символов) и необязательное Description (описание, 500 символов), затем в списке Products in Offering отметьте продукты приложения, которые нужно включить в набор, в том числе отдельные варианты базовых планов. В списке есть команда Select all и собственное поле поиска. У каждого отмеченного продукта есть кнопка Default: она назначает этот продукт выбранным по умолчанию в наборе и автоматически снимает такое назначение с предыдущего продукта. Таким образом, в каждом наборе всегда ровно один продукт выбран по умолчанию. Для сохранения нужно выбрать хотя бы один продукт.

Шаблон пейволла связан ровно с одним набором продуктов. Эта связь задаётся в диалоговом окне шаблона Configure App, описанном ниже. Каждая карточка цены, размещённая на холсте шаблона, привязывается к конкретному продукту из связанного набора. Именно это определяет, какие продукты и цены может показывать пейволл.

Шаблоны пейволлов

В разделе Paywall Templates вы создаёте экран пейволла в визуальном редакторе — писать код нативного интерфейса не нужно. Шаблон создаётся один раз, привязывается к одному приложению и одному набору продуктов и может быть переведён на несколько языков. После публикации его можно привязать к реальным местам показа в разделе App Details.

1789744608353-paywall-templates-list.png

Список шаблонов

Страница Paywall Templates (/paywall-templates) содержит все созданные вами пейволлы: #, Template Name (название шаблона), Status (Published/Draft — опубликован/черновик), Apps (приложения, которым он назначен), Updated At (дата обновления) и действия. Фильтры Status и App сужают список, а поле поиска позволяет искать по названию.

Создание пейволла

При нажатии Create Paywall предлагаются два варианта: Start from scratch («Откройте пустой экран телефона и добавьте свои стеки, текст, карточки продуктов, кнопки и ссылки на юридические документы») или Use template («Выберите существующий пейволл и создайте новый черновик с тем же холстом и компонентами»).

1789744746399-paywall-create-picker.png

Use template открывает галерею с двумя разделами: Default Templates — несколько встроенных стартовых макетов, каждый со своим названием и описанием, которые можно полностью настроить под себя, — и Your Templates, ранее сохранённые шаблоны вашего аккаунта. Выбор любой карточки копирует холст и компоненты этого шаблона в новый черновик. Привязки к продуктам не переносятся, поэтому затем нужно заново сопоставить каждую карточку цены с продуктом из вашего набора. Start from scratch открывает полностью пустой холст.

1789744771801-paywall-use-template-gallery.png

Дизайн пейволла: работа с холстом

При открытии нового или существующего шаблона вы попадаете в конструктор.

1789744792287-paywall-builder-overview.png

Над рабочей областью в одну строку расположена верхняя панель: название, значок карандаша рядом с ним для переименования, Configure App, переключатель Draft / Live, выбор языка и кнопки Clear / Discard draft / Save draft / Publish. Левая панель переключается между Layers — деревом всех элементов на холсте с командами копирования и вставки стеков — и Add Components, палитрой блоков для добавления, которая открывается при нажатии + на любом стеке. В центре находится интерактивный предпросмотр в рамке телефона в реальном размере. Справа — Inspector, панель свойств выбранного элемента с разделами Content, Layout, Layer Order, Appearance и Actions.

1789744812066-paywall-add-components.png

Палитра компонентов сгруппирована по назначению: Core — базовые блоки (Text, Image, GIF, Close button, Video и контейнеры Stack с вертикальным, горизонтальным расположением или наложением слоёв, а также составной блок Header и пустой контейнер Custom); Paywall — блоки пейволла (Package — кликабельные карточки цены в семи вариантах: Simple, Featured, Compact, Free trial, Percentage discount, Fixed discount и Intro price; Purchase button — кнопка покупки; One-time purchase button — кнопка разовой покупки; кнопки Express checkout — быстрого оформления покупки); Interactive — интерактивные блоки (Tabs для переключения между группами планов, например месячными и годовыми; Switch; Button; Carousel); Content — контентные блоки (цитата-отзыв Social proof, список возможностей Feature list, метка Badge, значок «Award» / лучшего предложения и Legal link — ссылка на условия использования или политику конфиденциальности).

Привязка продуктов и цен

1789744829200-paywall-package-product-data.png

У каждой карточки Package в разделе Content есть выпадающий список Offering package. В нём доступны только продукты из набора, выбранного в Configure App: Subscription → Base plan → Preferred offer, именно в таком порядке. Выбор привязывает карточку к конкретному продукту. После этого Inspector показывает актуальный предпросмотр Product data, доступный только для чтения: название, описание, предварительную цену и возможности непосредственно из данных продукта. Рядом есть подсказка, что эти данные можно использовать и в других местах холста с помощью токенов цены, например {planKey.price}. Если макет карточки не соответствует выбранному продукту — например, обычная карточка цены привязана к продукту с бесплатным пробным периодом, — Inspector предлагает команду Apply [x] layout, чтобы привести макет в соответствие. Для кнопок покупки и карточек цены также можно настроить Visible under tab: тогда карточка будет видна только при выборе соответствующей вкладки Tabs.

Именно в Configure App задаётся, из какого приложения и набора берутся продукты шаблона:

1789744847559-paywall-configure-app.png

Выберите одно App слева, затем один из его наборов Offerings справа. Для каждого варианта отображается его ключ и до пяти ключей входящих в него продуктов. В каждый момент шаблон привязан ровно к одному приложению и одному набору продуктов.

Языки и переводы

1789744871233-paywall-language-dropdown.png

Выпадающий список языков на верхней панели содержит язык по умолчанию и все добавленные языки. Каждый отмечен как Default, Translated, Needs update или Draft. Через Manage languages можно добавлять и удалять языки; их количество ограничено вашим тарифом. Translate with AI выполняет машинный перевод на выбранные языки; часовые и суточные лимиты также зависят от тарифа. Перевод — не отдельная копия макета, а слой текстовых замен поверх единого дизайна на языке по умолчанию. Поэтому выбор другого языка переводит холст в режим «Текст перевода доступен для редактирования, стиль заблокирован»: во время перевода нельзя добавлять, перемещать, изменять размер или оформление элементов. При этом Inspector каждого текстового поля переключается в режим ввода перевода, и введённый текст сохраняется только для выбранного языка.

Черновик, опубликованная версия и публикация

Переключатель Draft / Live определяет, какую версию шаблона вы просматриваете. Live доступна только для чтения, поэтому перед изменениями нужно перейти в Draft. Clear локально очищает холст: до сохранения на сервере ничего не удаляется. Discard draft безвозвратно удаляет несохранённый черновик и загружает последнюю опубликованную версию. Save draft сохраняет текущий холст как черновик, не затрагивая опубликованную версию. Кнопка Publish недоступна, пока не выбраны ровно одно приложение и один набор продуктов и пока каждая карточка Package не привязана к реальному продукту. После прохождения этих проверок кнопка публикует текущий черновик как новую версию Live. Только после этого шаблон можно назначить плейсхолдеру приложения в разделе App Details → Paywalls for App Placeholders.