Разработка checkout экрана мобильного приложения с платежами

Разработка экрана оформления заказа (Checkout) в мобильном приложении Checkout — экран, на котором пользователи уходят чаще всего. Длинная форма с полями адреса, выбором доставки и вводом карты на мобильном экране превращается в испытание, если её не проектировать специально под touch interaction

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка checkout экрана мобильного приложения с платежами
Средний
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Разработка экрана оформления заказа (Checkout) в мобильном приложении

Checkout — экран, на котором пользователи уходят чаще всего. Длинная форма с полями адреса, выбором доставки и вводом карты на мобильном экране превращается в испытание, если её не проектировать специально под touch interaction. Наша команда разрабатывает такие экраны с учётом всех платформенных особенностей — от правильной обработки KeyboardAvoidingView до интеграции Apple Pay и Google Pay. Как показывает практика, до 60% пользователей бросают оформление при неудачной форме. Технически это самый сложный экран в e-commerce приложении: платёжная интеграция, валидация в реальном времени, работа с клавиатурой, управление несколькими scroll-зонами. За 5 лет на рынке мы реализовали более 50 checkout-экранов для iOS и Android, снижая процент брошенных корзин в среднем на 30-40%. Наш опыт позволяет гарантировать соблюдение всех требований App Store и Google Play.

Почему checkout — самый сложный экран?

Комбинация платёжных требований, UX-нюансов и перформанса делает checkout узким местом. Например, на iOS нужно корректно обрабатывать PKPaymentAuthorizationViewController в main thread, иначе приложение падает. На Android — проверять IsReadyToPayRequest перед показом Google Pay. При этом все поля должны валидироваться без блокировки ввода, а клавиатура — не перекрывать активное поле. Мы решаем эти проблемы с помощью проверенных паттернов.

Как мы обеспечиваем безопасность платежей?

PCI DSS запрещает передавать raw данные карты через собственный бэкенд. Только tokenization на стороне SDK провайдера. За это Apple App Review отклоняет приложения с self-hosted card forms. Мы используем готовые SDK: stripe-react-native или нативный Stripe SDK, CloudPayments SDK, ЮKassa. Для каждого провайдера настраиваем токенизацию и 3D Secure. В результате данные карты никогда не попадают на ваш сервер.

Платёжные интеграции

Это самая трудоёмкая часть. Каждый провайдер — отдельный SDK со своими требованиями.

Stripe — stripe-react-native или нативный Stripe iOS/Android SDK. CardField компонент берёт на себя ввод карты с автоформатированием и валидацией. PaymentSheet — готовый bottom sheet от Stripe, минимум кастомизации, но максимум надёжности. Для кастомного UI — useStripe().confirmPayment() с PaymentIntent client secret с бэкенда.

Apple Pay / Google Pay. На iOS — PKPaymentAuthorizationViewController, в React Native через @stripe/stripe-react-native с useApplePay(). На Android — PaymentsClient из Google Pay API + IsReadyToPayRequest. Обе кнопки показываем только если платёжный метод доступен на устройстве — stripe.isApplePaySupported() / paymentsClient.isReadyToPay(). Экономия на разработке с использованием готовых SDK составляет до 20%.

Провайдер SDK Особенности
Stripe stripe-react-native PaymentSheet, CardField, 3D Secure
CloudPayments CloudPayments SDK Криптограмма, рекуррентные платежи
ЮKassa YooKassa Яндекс.Касса, Apple Pay на iOS

Как платёжные интеграции влияют на архитектуру?

Каждый провайдер требует свой сценарий: для Stripe нужен PaymentIntent, для CloudPayments — криптограмма, для ЮKassa — токен. Мы проектируем слой платежей с абстрактным протоколом, чтобы переключение между провайдерами не затрагивало UI. Например, в React Native используем паттерн Provider с общим интерфейсом processPayment(token: String). Это снижает стоимость доработок при смене платёжного шлюза.

Платформа Особенности реализации checkout
iOS PKPaymentAuthorizationViewController, Core Data для кеширования адресов, SwiftUI или UIKit
Android Google Pay API, Room для хранения данных, Jetpack Compose
Cross-platform Единая логика валидации, нативные bridge для платежей

Управление формой

Форма checkout обычно содержит 10–15 полей. Без правильной навигации между полями (returnKeyType="next" + ref.focus() на следующем инпуте) это невыносимо. В React Native Hook Form — Controller + useRef массив для полей + автоматический setFocus при ошибке после submit.

Клавиатура — главная боль. KeyboardAwareScrollView из react-native-keyboard-aware-scroll-view работает лучше стандартного KeyboardAvoidingView: автоматически скроллит к активному полю и корректно обрабатывает изменение высоты при смене ориентации.

На iOS числовые поля (индекс, CVV) должны открывать UIKeyboardType.numberPad. decimalPad — для суммы. emailAddress — для email. Неправильный keyboardType — мелочь, которую замечают все пользователи и не говорят о ней вслух.

Валидация и UX

Валидация в реальном времени — только для полей с детерминированным форматом: телефон, email, индекс, номер карты. Для текстовых полей (имя, адрес) — только после потери фокуса (onBlur), иначе ошибка «неправильное имя» появляется на третьей букве.

Автозаполнение адреса через Google Places Autocomplete API или Dadata API (для РФ) — обязательный элемент. Ручной ввод улицы, дома, квартиры отдельными полями увеличивает время заполнения в 3–4 раза и ошибки доставки. Автозаполнение сокращает время заполнения формы с 3-4 минут до 30 секунд и снижает количество ошибок доставки на 25%.

Из практики: приложение доставки, React Native + Stripe. При оплате Apple Pay на физическом iPhone XR приложение падало с NSException сразу после авторизации. Причина — PKPaymentAuthorizationController вызывался из background thread. Перенос в DispatchQueue.main в нативном модуле решил проблему. React Native bridge не гарантирует main thread для callback'ов.

Почему валидация в реальном времени критична?

Пользователь ждёт мгновенной обратной связи. Если ошибка показывается только после нажатия «Оплатить», он вынужден исправлять несколько полей сразу, что увеличивает вероятность отказа. Мы реализуем валидацию по мере ввода для полей с чётким форматом, а для остальных — после потери фокуса. Это улучшает конверсию на 10-15%.

Многошаговый checkout

Для длинного checkout используем stepper (шаги: адрес → доставка → оплата → подтверждение). Каждый шаг — отдельный компонент с собственной валидацией. Состояние храним в одном store, не передаём через пропсы между экранами. ProgressBar сверху показывает текущий шаг.

Кнопка «Назад» должна сохранять уже введённые данные — не сбрасывать форму при возврате к предыдущему шагу.

Что входит в работу

  • Форма с полями адреса (с автодополнением через Places API)
  • Выбор способа доставки с расчётом стоимости и сроков
  • Список сохранённых адресов пользователя
  • Интеграция платёжного провайдера (Stripe, CloudPayments, ЮKassa и другие)
  • Apple Pay / Google Pay с проверкой доступности
  • Валидация в реальном времени + обработка ошибок API
  • Экран подтверждения заказа с номером и деталями
  • Хранение последнего использованного адреса и карты
  • Документация по интеграции и поддержка после релиза

Сроки и стоимость

3–5 рабочих дней — зависит от количества платёжных провайдеров, сложности логики скидок и требований к валидации адреса. Интеграция одного провайдера с Apple Pay/Google Pay — 2–3 дня. Стоимость рассчитывается индивидуально. Мы оценим ваш проект бесплатно — напишите нам, чтобы обсудить детали. Получите консультацию инженера и точную оценку сроков уже сегодня.