БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Оплата в мобильном приложении: СБП и сохранённые карты

Оплата в мобильном приложении магазина на 1С-Битрикс: СБП, сохранённые карты и кассовые чеки

Пользователь дошёл до оплаты в вашем приложении — самый ценный момент всей воронки. И тут его встречает форма ввода 16 цифр карты с крошечными полями, переход в браузер и возврат «в никуда». Каждый лишний шаг здесь стоит заказов: на мобильном экране терпение короче, а конкурент с оплатой в одно касание — на расстоянии свайпа. Оплата в приложении — это не «та же оплата, что на сайте», а отдельная инженерная задача.

Разберём, как сделать оплату в мобильном магазине быстрой и надёжной: СБП с диплинками, сохранённые карты по токенам, кассовые чеки по 54-ФЗ и, главное, честный статус заказа на основе вебхуков. Всё это опирается на серверную логику магазина на 1С-Битрикс, а серверную часть и обмен помогает выстроить автоматизация продаж и склада на 1С.

Коротко

  • Оплата в приложении должна минимизировать шаги: СБП через диплинк в банк и сохранённые карты по токену без повторного ввода.
  • Магазин не хранит номера карт — только токен на стороне провайдера; полные реквизиты через ваш сервер не проходят.
  • Статус «оплачено» ставится по вебхуку от провайдера, а не по нажатию кнопки; обязательна защита от двойных списаний.
  • Нужен фискальный чек по 54-ФЗ, а заказ и оплата уходят в 1С тем же обменом, что и заказы с сайта.

Почему оплата в приложении — отдельная задача

На вебе привычна модель «уход на страницу банка и возврат по ссылке». В приложении такая схема ощущается неуклюже: каждый переход в браузер и обратно — это трение и риск потерять пользователя. Мобильный сценарий строится иначе: оплата должна происходить внутри приложения или через быстрый прыжок в банковское приложение и обратно, без ручного ввода данных.

При этом бизнес-логика заказа остаётся общей с сайтом: корзина, скидки, статусы и обмен с учётной системой живут на сервере в модуле «Интернет-магазин». Приложение — это новая витрина оплаты поверх той же серверной логики, а не отдельный магазин. Такое разделение и делает проект поддерживаемым.

Способы оплаты в мобильном магазине

Набор способов оплаты в приложении обычно короче и «мобильнее», чем на сайте:

Приоритет в мобильном сценарии — СБП и сохранённые карты: они дают самый короткий путь к оплате.

Путь платежа: от корзины до статуса в 1С Корзинасумма заказаСБП / QRоплата по QR-кодуБанкавторизацияПодтверждениеwebhook оплатыСтатус в 1Сзаказ оплачен
Схема: покупатель платит через шлюз, банк авторизует платёж, а webhook возвращает статус — заказ автоматически помечается оплаченным в 1С.

Оплата по СБП и диплинки

СБП в приложении работает через связку с платёжным провайдером и диплинки. Приложение запрашивает у провайдера платёжную ссылку по заказу и открывает банковское приложение пользователя, где тот подтверждает платёж. Дальше — ключевой момент: результат приложение узнаёт не от того, что пользователь вернулся, а от вебхука провайдера.

  1. Создание платежа. Приложение отправляет заказ на сервер, сервер создаёт платёж у провайдера и получает СБП-ссылку.
  2. Переход в банк. Приложение открывает диплинк, банк подтверждает оплату у пользователя.
  3. Возврат. Пользователь возвращается в магазин на экран ожидания.
  4. Подтверждение. Сервер получает вебхук об успехе и обновляет статус заказа, приложение показывает результат.

Сохранённые карты и токены

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

Ключевой принцип: полные реквизиты карты не должны проходить через ваш сервер и тем более храниться в базе. Вы работаете только с токеном. Это и безопаснее, и снимает с вас большую часть требований к защите платёжных данных.

Кассовые чеки по 54-ФЗ

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

Элемент чекаЧто важно
ПозицииСовпадают с составом заказа, корректные наименования
Ставка НДССоответствует товару, берётся из карточки/1С
Признак предмета расчётаТовар, услуга, предоплата — по типу позиции
Контакт покупателяEmail или телефон для отправки чека
Момент расчётаПолная оплата или предоплата

Ставки НДС и признаки предмета расчёта удобно вести на стороне учёта и передавать на сайт обменом, чтобы касса пробивала корректные чеки без ручного вмешательства.

Вебхуки и достоверный статус заказа

Самое частое и дорогое заблуждение — считать заказ оплаченным сразу после нажатия «Оплатить». Нажатие лишь запускает платёж; успех подтверждается асинхронно, вебхуком от провайдера. Именно вебхук — единственный достоверный источник статуса. Пользователь может не вернуться в приложение, потерять сеть, отменить оплату в банке — а вебхук всё равно расскажет серверу правду.

Как построить приём вебхуков безопасно — с проверкой подписи, защитой эндпоинта и повторной обработкой — мы разбирали в статье про REST, вебхуки и безопасность в Битрикс. Там же — почему нельзя доверять данным, пришедшим «от клиента», и как отличать настоящий вызов провайдера от подделки.

Идемпотентность и защита от двойных списаний

В мобильной среде связь рвётся, пользователь жмёт кнопку повторно, вебхук приходит дважды — всё это норма, и система должна её переживать без последствий. Ключевое свойство — идемпотентность: повторная обработка одного и того же платежа не должна ни списывать деньги дважды, ни пробивать второй чек, ни создавать дубль заказа.

UX экрана оплаты и ожидания

Пока платёж обрабатывается, пользователь не должен теряться в догадках. Хороший экран ожидания честно говорит «Проверяем оплату», не показывает повторную кнопку оплаты и сам обновляет статус — опросом сервера или по push-уведомлению. Когда приходит подтверждение, экран сменяется на успех с номером заказа и чеком.

Если ответ задерживается, скажите об этом прямо: «Оплата обрабатывается, мы пришлём уведомление». Это снимает тревогу и, что важнее, предотвращает повторные попытки оплаты, ведущие к двойным списаниям и путанице в заказах.

Связь приложения с 1С-Битрикс и API

Приложение общается с магазином через API: получает каталог, создаёт заказ, инициирует платёж и узнаёт статусы. Серверная логика остаётся в 1С-Битрикс — это гарантирует, что заказы из приложения и с сайта идут единым потоком и попадают в учёт одинаково. Проектировать такой API и его безопасность лучше заранее.

Подходы к построению серверной части на современном ядре мы описывали в материале про D7 и ORM в Битрикс, а вопросы стабильного развёртывания обновлений бэкенда — в статье про CI/CD и деплой в Битрикс. Платёжный контур — та часть, где выкатывать изменения нужно особенно аккуратно.

Передача оплаты и чеков в 1С

Факт оплаты, реквизиты чека и статус заказа должны дойти до учётной системы без дублей и потерь. Обычно заказ уходит в 1С обменом, а статус оплаты обновляется отдельно, когда приходит подтверждение от провайдера. Важно согласовать, что именно и в какой момент передаётся, чтобы в учёте не появлялись «оплаченные без денег» или задвоенные заказы.

Навести порядок в этом потоке — от статусов оплаты до выгрузки чеков — помогает услуга автоматизации продаж и склада на 1С. Если обмен уже работает нестабильно, начать стоит с аудита и оптимизации 1С, иначе платежи будут «теряться» на стыке систем.

Безопасность платёжного контура

Платёжный контур — самая чувствительная часть приложения, и к нему предъявляют повышенные требования:

Частые ошибки

Чек-лист внедрения

  1. СБП через диплинк. Оплата открывает банковское приложение и возвращает пользователя на экран ожидания.
  2. Сохранённые карты. Повторная оплата по токену, реквизиты хранит провайдер, не вы.
  3. Статус по вебхуку. Заказ помечается оплаченным только после подтверждения провайдера.
  4. Идемпотентность. Повторные клики и вебхуки не приводят к двойным списаниям и чекам.
  5. Чек по 54-ФЗ. Касса пробивает корректный чек с верными ставками НДС и признаками расчёта.
  6. Экран ожидания. Понятный статус оплаты без кнопки повторной оплаты.
  7. Единый поток в 1С. Заказы из приложения и с сайта попадают в учёт одинаково, без дублей.
  8. Безопасность. Суммы считает сервер, вебхуки проверяются, канал шифрован.

Вывод

Оплата в мобильном приложении — это не перенос вебовой формы на телефон, а отдельный сценарий, где выигрывает самый короткий путь к деньгам: СБП через диплинк и сохранённые карты по токену. Но скорость витрины бессмысленна без надёжного бэкенда: статус заказа определяется вебхуком, а не нажатием, система идемпотентна, а чек по 54-ФЗ пробивается ровно один раз.

Держите серверную логику и обмен на стороне 1С-Битрикс, не храните карты у себя и передавайте оплату в учёт единым потоком с сайтом. Тогда оплата в приложении станет самым сильным, а не самым слабым звеном вашей мобильной коммерции.

Частые вопросы

Чем оплата в приложении отличается от оплаты на сайте?

На сайте пользователь обычно уходит на платёжную страницу банка и возвращается по ссылке. В приложении важно свести переходы к минимуму: оплата по СБП открывает банковское приложение через диплинк, а оплата картой выполняется по сохранённому токену без повторного ввода данных. Логика заказа и статусов при этом та же, что и на сайте, — она живёт в модуле «Интернет-магазин» на стороне 1С-Битрикс.

Как работает оплата по СБП в мобильном приложении?

Приложение запрашивает у платёжного провайдера ссылку или QR на оплату по Системе быстрых платежей, а затем открывает банковское приложение пользователя через диплинк. Клиент подтверждает платёж в своём банке и возвращается в магазин. Итоговый статус заказа приложение узнаёт не от «возврата» пользователя, а от вебхука провайдера — это надёжнее, потому что пользователь может не вернуться в приложение.

Безопасно ли хранить карты покупателей?

Магазин не хранит номера карт — их хранит платёжный провайдер, а на вашей стороне остаётся только токен, ссылающийся на карту. Это соответствует требованиям к безопасности платёжных данных: полные реквизиты карты не проходят через ваш сервер и не лежат в базе. Токен привязывается к конкретному пользователю, и повторная оплата идёт по нему без ввода CVC или с подтверждением по правилам провайдера.

Нужен ли кассовый чек при оплате в приложении?

Да. Оплата в мобильном приложении — это то же самое эквайринговое поступление, что и на сайте, поэтому по 54-ФЗ нужен фискальный чек. Обычно чек пробивает облачная касса, подключённая к вашему платёжному или фискальному провайдеру: после успешной оплаты формируется чек, а его данные возвращаются в заказ. Важно, чтобы в позициях чека были корректные ставки НДС и признаки предмета расчёта.

Почему нельзя менять статус заказа сразу после нажатия «Оплатить»?

Потому что нажатие «Оплатить» — это только начало платежа, а не его успех. Пользователь может не завершить оплату, отменить её в банке или столкнуться с ошибкой. Достоверный сигнал об успехе приходит асинхронно, вебхуком от провайдера. Если пометить заказ оплаченным по факту нажатия, вы получите «оплаченные», но фактически неоплаченные заказы — классическая и дорогая ошибка.

Что показать пользователю, пока платёж обрабатывается?

Экран ожидания с понятным статусом «Проверяем оплату» и без кнопки «оплатить ещё раз», чтобы избежать двойных списаний. Приложение опрашивает статус заказа или ждёт push от сервера, а когда приходит подтверждение вебхуком — показывает успех. Если ответ задерживается, честно сообщите, что оплата обрабатывается, и что клиент получит уведомление, — это снимает тревогу и повторные попытки.

Как связать оплату в приложении с 1С?

Заказ и факт оплаты передаются в учётную систему тем же обменом, что и заказы с сайта: приложение работает через API магазина на 1С-Битрикс, поэтому в 1С попадает единый поток заказов. Важно, чтобы статусы оплаты и данные чека доходили до учёта корректно и без дублей, — это часть настройки обмена и автоматизации продаж.

Можно ли использовать один платёжный шлюз для сайта и приложения?

Да, и это предпочтительно. Один провайдер и одна логика статусов на сервере упрощают поддержку: приложение и сайт обращаются к общему бэкенду на 1С-Битрикс, который и общается с платёжным шлюзом. Отличается только «витрина» оплаты — в приложении это нативные экраны, СБП-диплинки и сохранённые карты, а серверная обработка платежа и чеков общая.

Поделиться:

Нужна надёжная оплата в приложении и на сайте?

Настроим СБП, сохранённые карты, чеки по 54-ФЗ и достоверные статусы заказов на едином бэкенде 1С-Битрикс. Рассчитаем работу по вашему проекту.

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем интернет-магазины и мобильные витрины на 1С-Битрикс: платёжные интеграции, чеки по 54-ФЗ и обмен заказов с 1С.

← Все статьи блога