Настройка плана с 12-месячным обязательством

Important

Для предложения плана с обязательством нужна годовая подписка в App Store, кастомный пейвол и Adapty SDK версии 4.3 или выше. Флоу не поддерживают отображение такого плана.

Чтобы подписчики оформляли годовую подписку с ежемесячной оплатой, добавьте план с обязательством на 12 месяцев к вашему годовому продукту в App Store Connect и в Adapty.

Прежде чем начать

Прежде чем внедрять планы с обязательством, убедитесь, что вы:

  • Выбирайте правильный рынок: Планы с обязательством недоступны в Соединённых Штатах. В Германии, Израиле, Южной Африке и Турции подписчики могут отменить подписку с немедленным эффектом через поддержку Apple.
  • Выбирайте правильную версию ОС: Подписчикам нужна iOS 26.4 или новее, либо такая же версия iPadOS, macOS, tvOS или visionOS. Собирайте приложение с Xcode 26.5 или новее.
  • Выбирайте правильный ценовой диапазон: Сумма 12 ежемесячных платежей должна составлять от 1x до 1,5x стоимости годовой подписки с единовременной оплатой.
  • Используйте Adapty SDK v4.3 или новее: В версиях приложения с более ранним SDK пользователи смогут купить только план с единовременной оплатой.
  • Обновите код, который читает ID продуктов: Вебхуки, интеграции, экспорт данных и серверный API передают покупки плана с обязательством как <product_id>:monthly. Если ваш код обрабатывает ID продуктов, обновите логику до первой такой покупки.

1. Настройка App Store Connect

  1. Откройте годовую подписку в App Store Connect или создайте новую подписку с длительностью 1 Year.
  2. В разделе Availability добавьте одни и те же страны в разделах 1 Year Upfront и Monthly with 12-Month Commitment. Apple предлагает тарификацию с обязательным сроком только там, где доступна авансовая тарификация. Обратное не обязательно: вы можете предлагать план с единовременной оплатой в странах без плана с обязательным сроком.
  3. В разделе Subscription Prices установите авансовую цену для базовой территории, если у подписки её ещё нет. Apple требует авансовую цену, даже если пользователям отображается только план с обязательным сроком.
  4. Установите ежемесячную цену для базовой территории. Ежемесячная цена должна составлять от 1/12 до 1/8 авансовой цены. Например, при авансовой цене €59,99 ежемесячная цена может быть от €5,00 до €7,49.

App Store Connect рассчитывает цены для других стран на основе цен базовой территории.

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

2. Настройка Adapty

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

  1. Откройте годовой продукт. Если его ещё нет, создайте его и подключите подписку, настроенную в App Store Connect. Не создавайте новый продукт через Adapty: это создаст отдельную подписку без плана с обязательством.

  2. Откройте вкладку App Store и выберите Offer monthly payments with a 12-month commitment.

    App Store tab of a yearly product with the Offer monthly payments with a 12-month commitment checkbox
  3. Во всплывающем окне из списка Monthly price, USD выберите цену рассрочки, соответствующую значению в App Store Connect. Список содержит только ценовые точки App Store в допустимом диапазоне. Эта цена является справочным значением: Adapty не отправляет её в App Store Connect.

    Monthly with 12-month commitment pop-up with the Monthly price, USD field

3. Настройте офферы

В App Store Connect у каждого тарифного плана есть собственные introductory offer, promotional offer, win-back offer и коды офферов. Оффер для авансового плана не применяется к плану с обязательством.

  • Бесплатные пробные периоды и другие introductory offers: В App Store Connect настройте предложение для тарифного плана с обязательством. Adapty автоматически применяет introductory offers. Когда introductory offer заканчивается, начинается 12-месячный срок обязательства подписчика.
  • Promotional и win-back offers: Настройте promotional или win-back offers для тарифного плана с обязательством в App Store Connect. Затем добавьте предложения в Adapty и установите для них App Store plan значение Monthly with 12-month commitment. В строке пейвола отображаются только предложения для соответствующего тарифного плана. Если вы не используете кастомные пейволы, добавлять предложения в Adapty не нужно.
  • Промокоды (Offer codes): Настройте промокоды для тарифного плана с обязательством в App Store Connect.

4. Добавить на кастомный пейвол

Warning

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

  1. В кастомном пейволе добавьте годовой продукт и установите для него Billing plan в значение Monthly. Чтобы продавать на том же пейволе тариф с единовременной оплатой, добавьте годовой продукт ещё раз с Upfront billing plan.
    • Чтобы предложить пользователям, которые покупают тариф с единовременной оплатой, upfront offer вместо него — на более ранней версии SDK или там, где commitment plan не применяется — выберите его в разделе Fallback offer.
  2. В приложении отображайте цену из product.subscriptionPricingTerms. Для пользователей, которые могут купить commitment plan, Adapty SDK возвращает его цены. Для всех остальных SDK возвращает цены тарифа с единовременной оплатой:
    • Чтобы определить, какой тариф вернул SDK, проверьте product.subscriptionPricingTerms?.billingPlan. Значение .monthly соответствует commitment plan, .upFront — тарифу с единовременной оплатой.
    • Для отображения цены за отдельный платёж используйте subscriptionPricingTerms.localizedBillingPrice и subscriptionPricingTerms.billingPeriod.
    • Для отображения годовой суммы используйте subscriptionPricingTerms.commitmentInfo.localizedPrice и subscriptionPricingTerms.commitmentInfo.period. Для commitment plan product.localizedPrice и product.subscriptionPeriod возвращают те же годовые значения.

Пользователи не могут приобрести план с обязательным сроком в следующих случаях:

  • Неподдерживаемая версия ОС или страна: Устройство Apple пользователя работает на версии системы ниже 26.4, либо план недоступен в App Store их страны. SDK Adapty в этом случае возвращает цену авансового плана.
  • Существующая авансовая подписка: StoreKit сообщает, что пользователь уже подписан. Чтобы сменить план, подписчики используют настройки подписки Apple.
  • Продвигаемая встроенная покупка: Пользователь выбирает продукт в App Store, после чего SDK Adapty инициирует покупку в вашем приложении. Для таких покупок SDK поддерживает только авансовый план.

Чтобы прекратить предлагать план с обязательствами, в своих кастомных пейволах установите для годового продукта Billing plan на Upfront или удалите строку Monthly. Снять флажок Offer monthly payments with a 12-month commitment в Adapty невозможно. Текущие подписчики продолжают обновляться на новый период обязательств каждый год — если только вы не нажмёте Remove Monthly Billing для годовой подписки в App Store Connect. Подписчики, уже взявшие на себя обязательства, продолжают платить до истечения срока действия своего периода.

5. Протестируйте план в песочнице

Следуйте гайду по тестированию в песочнице, используя два аккаунта песочницы:

  • Аккаунт из страны, где доступен план с рассрочкой: пейвол должен отображать план с рассрочкой с ежемесячной ценой и общей суммой. После покупки в профиле пользователя песочницы должен появиться уровень доступа годового продукта.
  • Аккаунт из США: пейвол должен отображать только план с единовременной оплатой.

Если ваш код обрабатывает идентификаторы продуктов из вебхуков или Server-side API, убедитесь, что он получает покупки commitment-plan как <product_id>:monthly.

Для локального тестирования логики покупок используйте StoreKit Testing в Xcode версии 26.5 или новее. Покупки в StoreKit Testing не попадают в Adapty.

Устранение неполадок

  • Флажок ежемесячных платежей отсутствует: флажок Offer monthly payments with a 12-month commitment появляется только для продукта типа Annual с App Store product ID. Он остаётся неактивным, пока у продукта не задан Price (USD).
  • Пользователи не видят бесплатный пробный период или другое предложение для плана с обязательством: в App Store Connect каждое предложение относится к одному тарифному плану. Настройте предложение для плана с обязательством. Для promotional offer или win-back offer также укажите App Store plan предложения в Adapty как Monthly with 12-month commitment.
  • Все пользователи видят полную стоимость: убедитесь в следующем:
    • Приложение собрано в Xcode 26.5 или новее. При использовании более ранней версии Xcode SDK Adapty всегда возвращает цены плана с единовременной оплатой.
    • В кастомном пейволе для годового продукта Billing plan установлен как Monthly.
  • Некоторые пользователи видят полную стоимость: эти пользователи не могут купить план с обязательством.
  • На пейволе отображается годовая сумма вместо стоимости рассрочки: для плана с обязательством product.localizedPrice возвращает годовую сумму. Чтобы показать стоимость одного платежа, используйте subscriptionPricingTerms.localizedBillingPrice.