Інтеграція платіжного шлюзу Fondy в мобільному додатку
Fondy (Cloudipsp) — український платіжний шлюз з нативними SDK для iOS та Android. Підтримує карткові платежи, Google Pay, Apple Pay, а також платежі через мобільний банкінг. SDK називається cloudipsp-ios / cloudipsp-android. Інтеграція будується навколо токенізації на клієнті та підтвердження через серверний API.
Підключення SDK
// Android, build.gradle
implementation("com.cloudipsp:cloudipsp-android:1.x.x")
// iOS, Podfile
pod 'Cloudipsp'
Основний потік: створення токена та проведення платежу
Fondy використовує двохетапну схему: клієнт створює токен карти, передає його на сервер, сервер проводить платіж.
Серверна частина: отримання token для SDK
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"
// CardInputView — вбудований компонент SDK
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) {
// 3DS — SDK передає WebView для обробки
webView.loadUrl(request.url)
}
}
)
iOS: CloudipspView
import Cloudipsp
let api = Cloudipsp(merchantId: 1396424, callbackUrl: "yourapp://payment/result")
// Через готовий PaymentController
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)
}
}
Підпис запитів
Fondy підписує запити через SHA-1 усіх параметрів запиту в алфавітному порядку + password:
SHA1(password|param1_value|param2_value|...)
Неправильна сортування або зайві параметри в підписі — частова причина помилки Invalid signature.
Верифікація через callback
Fondy відправляє server_callback_url POST-запит з результатом транзакції. Верифікуємо підпис вхідного запиту аналогічним SHA-1, тільки порядок: всі поля відповіді в алфавітному порядку.
Обсяг робіт
- Підключення Cloudipsp SDK (iOS / Android)
- Серверний endpoint для отримання token Fondy
- Реалізація CardInputView або користувацького UI з Card-об'єктом
- Обробка 3DS через WebView всередині SDK
- Серверний callback та верифікація підпису
Терміни
2–3 дні. Вартість розраховується індивідуально.







