Реализация промокодов и скидок в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Реализация промокодов и скидок в мобильном приложении
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Реализация промокодов и скидок в мобильном приложении

Промокоды в мобильных приложениях — это три разных механизма с разной сложностью реализации: нативные промокоды App Store/Google Play, кастомная серверная логика с собственными кодами, и promotional offers через RevenueCat/Adapty. Смешивать их без понимания ограничений — типичная ошибка.

Нативные промокоды App Store

Apple позволяет генерировать до 1000 промокодов на версию приложения (для paid apps) или на IAP. Пользователь вводит код в App Store → получает продукт. В приложение это приходит как обычная транзакция — обрабатывается стандартным StoreKit flow.

Проблема: промокоды App Store нельзя применить внутри приложения. Пользователя нужно перенаправить в App Store. Для большинства монетизационных сценариев (скидка для конкретного пользователя, реферальная программа) это не работает.

Собственные промокоды — серверная реализация

Кастомные промокоды живут целиком на бэкенде:

Схема данных:

promo_codes: id, code, discount_type (percent|fixed|trial_days), value,
             max_uses, used_count, expires_at, product_ids[], user_id (опционально)
promo_redemptions: id, code_id, user_id, created_at, purchase_id

Флоу на клиенте:

  1. Пользователь вводит код → клиент вызывает POST /api/promo/validate с кодом и product_id
  2. Сервер возвращает тип скидки и применяемую цену
  3. Клиент показывает итоговую цену
  4. Покупка через нативный IAP по полной цене → на сервере после верификации транзакции применяем скидку (начисляем разницу валютой, продлеваем trial, etc.)

Прямое изменение цены IAP на клиенте невозможно — Apple и Google не позволяют динамически менять стоимость продукта. Вся логика скидок реализуется post-purchase на сервере или через отдельные продукты с уже заниженной ценой.

Promotional offers как механизм скидки

Для подписок на iOS — SKPaymentDiscount / SubscriptionOffer в StoreKit 2. Создаём offer в App Store Connect с нужной ценой, сервер генерирует подпись для конкретного пользователя. Это легальный способ предложить скидку без обхода нативного биллинга.

// Получаем offer с сервера
let offerSignature = await serverAPI.getPromoSignature(userID: user.id, offerID: "discount_50")

let product = try await Product.products(for: ["premium_monthly"]).first!
let purchaseOption = product.subscriptionOffer(
    offerID: "discount_50",
    keyID: offerSignature.keyID,
    nonce: offerSignature.nonce,
    signature: offerSignature.signature,
    timestamp: offerSignature.timestamp
)
let result = try await product.purchase(options: [purchaseOption!])

Ввод промокода в UI

Поле ввода промокода — отдельный экран или bottom sheet с debounce-валидацией (запрос к серверу через 300мс после последнего символа). Важно: показывать загрузку во время валидации и обрабатывать ошибки — «код истёк», «код уже использован», «не применим к выбранному продукту».

Сроки — 2–3 дня: серверная модель промокодов, API валидации и применения, UI компонент, интеграция с IAP flow.