We integrate the Fondy (Cloudipsp) payment gateway into mobile applications for iOS and Android. An integration error is not just an incorrect payment—it's a risk of getting blocked in the App Store for violating Section 4.2 or Section 5.1. With 5+ years of experience and 30+ successful integrations, we know how to avoid typical pitfalls: incorrect signature, 3DS failure, incompatibility with Apple Pay. We use native SDKs cloudipsp-ios / cloudipsp-android, ensuring review approval and maximum conversion.
Case Study: Fixing Signature for a Large E-commerce Project
One of our clients—a marketplace with millions of users—faced an Invalid signature error when integrating Fondy. We traced the issue to incorrect parameter sorting: the client's server included an extra parameter merchant_data that should not participate in the signature. After fixing the server-side logic, payments went through smoothly, and payment conversion increased by 15%. This case demonstrates the importance of automating signatures.
What is the Two-Stage Payment Scheme and Why is It Safer?
Fondy uses a two-stage scheme: the client creates a card token on the mobile device, passes it to the server, and the server processes the payment. This is secure and reduces PCI DSS load. Unlike WebView integration, the native SDK does not transmit sensitive data through your server, minimizing leak risks. Additionally, you get built-in support for 3DS 2.0, Apple Pay, and Google Pay—all without extra development costs.
How to Avoid Typical Fondy Integration Mistakes
SDK Setup (for both platforms):
// Android, build.gradle implementation("com.cloudipsp:cloudipsp-android:1.x.x") // iOS, Podfile pod 'Cloudipsp' Getting token for SDK (server 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": "Order #1234", "amount": "15000", "signature": "sha1_signature" } } The response contains a token—pass it to the mobile SDK.
Android: CardInputView and Payment
// Token obtained from server 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) } } Why Native Integration is Better Than WebView
The native Cloudipsp SDK speeds up payment by 2–3 times and increases conversion thanks to built-in 3DS and push notifications. WebView wrappers are often blocked by the App Store (see Section 4.2) and do not support Apple Pay or Google Pay. We guarantee correct operation with APNs and FCM for payment status notifications. You save up to 40% on post-review fixes compared to WebView solutions.
How to Connect Fondy in 4 Steps
- Obtain merchant ID and password from Fondy via your personal account.
- Install the SDK: via Gradle for Android or CocoaPods for iOS.
- Create a server endpoint
/api/tokenfor token generation. - Implement UI with
CardInputView(Android) orPaymentController(iOS) and callback handling.
Request Signing and Callback Verification
The signature is generated via SHA-1 of all request parameters sorted alphabetically, with the password appended. Incorrect sorting is a common cause of the Invalid signature error. We automate this process. Callback requests from Fondy to server_callback_url are verified similarly: all response fields are sorted and signed. This guarantees transaction authenticity.
Stage Comparison on iOS and Android
| Stage | iOS | Android |
|---|---|---|
| SDK integration | CocoaPod Cloudipsp |
Gradle com.cloudipsp:cloudipsp-android |
| Card input UI | PaymentController |
CardInputView |
| 3DS handling | Automatic WebView | Cloudipsp.PayCallback.on3dsRedirect |
| Tokenization | Via Cloudipsp API |
Via Cloudipsp.checkout |
Typical Errors and Their Solutions
| Error | Cause | Solution |
|---|---|---|
Invalid signature |
Incorrect parameter sorting | Automate signing |
| 3DS not opening | Missing WebView on iOS | Use PaymentController |
| Callback not received | Invalid server_callback_url |
Check server availability |
What Our Work Includes
- Cloudipsp SDK integration (iOS / Android)
- Server endpoint for token retrieval
- UI implementation with CardInputView or PaymentController
- 3DS setup via WebView
- Callback request verification
- Sandbox and production environment testing
- Integration documentation and access transfer
- Training of your team on the payment module
- 2-week post-release support
Timelines and Pricing
Integrating a single platform takes 2–3 days. For both platforms—up to 4 days with parallel development. The cost is calculated individually based on your app architecture, but we provide a transparent estimate before work begins. We have experience integrating with Firebase, Supabase, and custom backends.
Order Fondy integration into your app—we guarantee App Store Review approval and high payment conversion. Get a free consultation: we will evaluate your project at no cost. Contact us—we will advise on the best way to integrate payments into your app.







