Мобильное приложение FitnessKit интегрируется с различными платёжными системами и банками:
- СберБанк (старый и новый)
- Альфа-банк
- Uniteller
- CloudPayments
- PayOnline
- bePaid
- liqPAY
- СДМ Банк
- Юмани
Используется метод платёжной формы, которая открывается в специальном webview, что обеспечивает лучшую безопасность и актуальность данных. Благодаря этому методу обеспечивается свободное переключение между различными эквайрингами без необходимости обновления приложения.
Мы также отдельно хотим порекомендовать СберБанк, Альфа-банк и Uniteller, как системы, у которых хорошо работает техподдержка, и возникает наименьшее количество сбоев.
Процесс оплаты с технической точки зрения
Когда пользователь в мобильном приложении нажимает кнопку "Оплатить картой", то на сервер идёт запрос /payment/request_payment_form_v2, который после кучи проверок создаёт заказ в базе FitnessKit и запрашивает форму оплаты у платёжной системы, которая настроена для выбранного клуба в разделе PaymentBackend. Ответом на запрос request_payment_form_v2 является ссылка на платёжную форму (в редких случаях html код формы).
Как понять, что оплата попала в приложение
Когда клиент взаимодействует с платёжной формой, то у мобильного приложения нет никаких возможностей понять, что конкретно делает клиент. Даже когда клиент провёл оплату и увидел на платёжной форме сообщение об успешной оплате. Тут всё несколько иначе, платёжная форма взаимодействует напрямую с банком, минуя сервер FitnessKit. И когда оплата прошла, то банк отправляет запрос на сервер FitnessKit с номером заказа, который был оплачен. Такие запросы из банка мы называем Callback-уведомлениями об успешной оплате. Задача сервера в момент получения такого уведомления - проверить, что заказ действительно оплачен и синхронизиировать оплату с учётной системой.
Другие варианты синхронизации заказов
Иногда нет возможности использования Callback-уведомлений из платёжной системы. Например, когда на сайте клуба уже настроен виджет интернет-эквайринга и уведомления идут на какой-то клубный сервер. Для этого у FitnessKit присутствует механизм автоматической проверки того, что заказ оплачен. Работает это так: при открытии платёжной формы в мобильном приложении создаётся заказ, и каждые 15 секунд сервер спрашивает у банка, оплачен ли заказ. Если в какой-то момент заказ становится оплачен, то запросы прекращаются и происходит синхронизация заказа с учетной системой. Важный момент: запросы в платежную систему продолжаются в течение 15 минут. Если заказ не будет оплачен за это время, то он уже не будет оплачен никогда. Банк также запретит оплату, если время выйдет.
Заказы также могут быть синхронизиированы вручную. Менеджеры техподдержки часто используют эту опцию в случаях, когда, например, банк прислал уведомление об успешной оплате, но учётная система была недоступна.
Заказы в панели администратора
В админке есть раздел "Payment", в котором находится пункт "Orders". Там отображаются все успешные и неуспешные заказы клиентов в приложении и на наших виджетах.
При открытии описания заказа одними из самых важных пунктов будут следующие:
Статус оплаты - если оплата прошла успешно и платежная система скинула уведомление, то после проверки платежа данное поле устанавливается в значение "Оплачен", что символизирует успешную обработку заказа банком и сервером FitnessKit. Данное поле также может быть изменено вручную в целях тестирования.
Оплата синхронизирована с CRM - далее сервер FitnessKit пробует синхронизировать оплаченный заказ с учётной системой. Если синхронизация пройдёт успешно, то данное поле также установится в значение "Оплачен".
Мониторинг ошибок в телеграм-боте FitnessKit
У FitnessKit есть телеграм-бот, в который попадают какие-либо ошибки синхронизации заказа с учётной системой. Благодаря этому наши сотрудники могут своевременно реагировать на различные проблемы с заказами и устранять их, а в случае ошибок на стотроне клиентов - уведомлять сотрудников клуба.