Мы интегрируем платежный шлюз 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 и высокую конверсию платежей. Получите консультацию: мы оценим ваш проект. Свяжитесь с нами — мы подскажем, как лучше интегрировать платежи в ваше приложение.







