Мы интегрируем платежный шлюз Fondy (Cloudipsp) в мобильные приложения под iOS и Android. Ошибка при интеграции — это не просто некорректная оплата, а риск блокировки в App Store из-за нарушения Section 4.2 или Section 5.1. За 5+ лет мы провели 30+ успешных интеграций и знаем, как обойти типовые ловушки: неправильную подпись, сбой 3DS, несовместимость с Apple Pay. Используем нативные SDK cloudipsp-ios / cloudipsp-android, что гарантирует прохождение ревью и максимальную конверсию.
Кейс: исправление подписи для крупного e-commerce проекта
Один из наших клиентов — маркетплейс с миллионной аудиторией — столкнулся с ошибкой Invalid signature при интеграции Fondy. Мы выяснили, что проблема в неверной сортировке параметров: сервер клиента включал лишний параметр merchant_data, который не должен участвовать в подписи. После исправления логики на стороне сервера платежи пошли без сбоев, а конверсия оплат выросла на 15%. Этот кейс показывает, насколько важна автоматизация подписей.
Что такое двухэтапная схема оплаты и почему она безопаснее?
Fondy использует двухэтапную схему: клиент создаёт токен карты на мобильном устройстве, передаёт его на сервер, а сервер проводит платёж. Это безопасно и снижает нагрузку PCI DSS. В отличие от WebView-интеграции, нативный SDK не передаёт чувствительные данные через ваш сервер, что минимизирует риски утечки. Дополнительно вы получаете встроенную поддержку 3DS 2.0, Apple Pay и Google Pay — всё это без дополнительных затрат на разработку.
Как избежать типовых ошибок при интеграции Fondy?
Подключение SDK (для обеих платформ):
// Android, build.gradle implementation("com.cloudipsp:cloudipsp-android:1.x.x") // iOS, Podfile pod 'Cloudipsp' Получение token для SDK (серверный endpoint)
POST https://pay.fondy.eu/api/checkout/token { "request": { "server_callback_url": "https://your-server.com/payment/callback", "order_id": "ORDER-1234", "currency": "UAH", "merchant_id": "1396424", "order_desc": "Заказ №1234", "amount": "15000", "signature": "sha1_signature" } } Ответ содержит token — передаётся в мобильный SDK.
Android: CardInputView и оплата
// Токен полученный от сервера val token = "server_token" val cardInputView = CardInputView(context) val cardNumber = CardNumber("4111 1111 1111 1111") val mm = ExpireMonth("12") val yy = ExpireYear("2025") val cvv = Cvv("123") Cloudipsp.checkout( context = context, token = token, card = Card(cardNumber, mm, yy, cvv), email = "[email protected]", listener = object : Cloudipsp.PayCallback { override fun onPaidProcessed(order: Order) { if (order.status == Order.Status.Approved) { handleSuccess(order.transactionId) } } override fun onPaidFailure(e: Cloudipsp.Exception) { handleError(e.message) } override fun on3dsRedirect(request: Cloudipsp.Request3ds, webView: WebView) { webView.loadUrl(request.url) } } ) iOS: CloudipspView
import Cloudipsp let api = Cloudipsp(merchantId: 1396424, callbackUrl: "yourapp://payment/result") let paymentController = PaymentController(token: serverToken) paymentController.present(in: self) { [weak self] result in switch result { case .success(let order): self?.handleSuccess(order.orderStatus) case .failure(let error): self?.handleError(error.localizedDescription) } } Почему нативная интеграция лучше WebView?
Нативный SDK Cloudipsp в 2–3 раза ускоряет оплату и повышает конверсию за счёт встроенного 3DS и push-уведомлений. WebView-обёртки часто блокируются App Store (см. Section 4.2) и не поддерживают Apple Pay / Google Pay. Мы гарантируем корректную работу с APNs и FCM для уведомлений о статусе платежа. Экономия бюджета на доработки после ревью — до 40% по сравнению с WebView-решением.
Как подключить Fondy за 4 шага
- Получите merchant ID и пароль от Fondy через личный кабинет.
- Установите SDK: через Gradle для Android или CocoaPods для iOS.
- Создайте серверный endpoint
/api/tokenдля генерации токена. - Реализуйте UI с
CardInputView(Android) илиPaymentController(iOS) и обработку callback.
Подпись запросов и верификация callback
Подпись формируется через SHA-1 всех параметров запроса, отсортированных в алфавитном порядке, с добавлением password. Неправильная сортировка — частая причина ошибки Invalid signature. Мы автоматизируем этот процесс. Callback-запросы от Fondy на server_callback_url верифицируются аналогично: все поля ответа сортируются, подписываются. Это гарантирует подлинность транзакции.
Сравнение этапов на iOS и Android
| Этап | iOS | Android |
|---|---|---|
| Подключение SDK | CocoaPod Cloudipsp |
Gradle com.cloudipsp:cloudipsp-android |
| UI для ввода карты | PaymentController |
CardInputView |
| Обработка 3DS | Автоматический WebView | Cloudipsp.PayCallback.on3dsRedirect |
| Токенизация | Через Cloudipsp API |
Через Cloudipsp.checkout |
Типовые ошибки и их решения
| Ошибка | Причина | Решение |
|---|---|---|
Invalid signature |
Неправильная сортировка параметров | Автоматизируем подпись |
| 3DS не открывается | Отсутствует WebView на iOS | Использовать PaymentController |
| Callback не приходит | Неверный server_callback_url |
Проверить доступность сервера |
Что входит в работу
- Подключение Cloudipsp SDK (iOS / Android)
- Серверный endpoint для получения token
- Реализация UI с CardInputView или PaymentController
- Настройка 3DS через WebView
- Верификация callback-запросов
- Тестирование в песочнице и продуктивном окружении
- Документация по интеграции и передача доступов
- Обучение команды заказчика работе с платежным модулем
- Пост-релизная поддержка на 2 недели
Сроки и стоимость
Интеграция одной платформы занимает 2–3 дня. Для обеих платформ — до 4 дней при параллельной разработке. Стоимость рассчитывается индивидуально и зависит от архитектуры вашего приложения, но мы гарантируем прозрачную смету до начала работ. Есть опыт интеграции с Firebase, Supabase и кастомными бэкендами.
Закажите интеграцию Fondy в ваше приложение — мы гарантируем прохождение App Store Review и высокую конверсию платежей. Получите консультацию: мы оценим ваш проект бесплатно. Свяжитесь с нами — мы подскажем, как лучше интегрировать платежи в ваше приложение.







