Интеграция платежного шлюза CloudPayments в мобильное приложение
CloudPayments — российский платёжный шлюз с нативными SDK для iOS и Android. Из коробки поддерживает 3DS2, СБП, оплату через QR, Apple Pay и Google Pay. Для большинства мобильных приложений интеграция занимает 1–2 дня, если понимать, как устроен flow.
SDK и базовая настройка
// Android, build.gradle
implementation("ru.cloudpayments:sdk-android:1.x.x")
// iOS, SPM или Podfile
pod 'SDK-iOS', :git => 'https://github.com/cloudpayments/CloudPayments-SDK-iOS'
Основной flow: криптограмма карты
CloudPayments не хранит реквизиты карты на вашем сервере. Карточные данные на клиенте преобразуются в криптограмму через PublicID вашего мерчанта, криптограмма передаётся на ваш сервер, сервер передаёт её в CloudPayments API.
// Android
val cardCryptogram = Card.cardCryptogram(
cardNumber = "4111111111111111",
cardDate = "12/25",
cardCvv = "123",
merchantPublicId = "pk_your_public_id"
)
// Отправляем cardCryptogram на свой бэкенд
// iOS
let cryptogram = CPCryptogramPacket.makePacket(
cardNumber: "4111111111111111",
expirationDateString: "12/25",
cvv: "123",
merchantPublicID: "pk_your_public_id"
)
На бэкенде вызываем CloudPayments API:
POST https://api.cloudpayments.ru/payments/cards/charge
{
"Amount": 1500,
"Currency": "RUB",
"InvoiceId": "ORDER-1234",
"CardCryptogramPacket": "...",
"Name": "IVAN IVANOV"
}
3DS2: обработка AcsUrl
Если банк требует 3DS-подтверждение, CloudPayments API возвращает статус 3ds с полями AcsUrl, PaReq, TransactionId. Нужно показать 3DS WebView:
// Android — SDK предоставляет готовый ThreeDsDialogFragment
ThreeDsDialogFragment.newInstance(
acsUrl = response.acsUrl,
transactionId = response.transactionId,
paReq = response.paReq
).show(supportFragmentManager, "3ds")
// iOS — D3DSViewController из SDK
let d3ds = D3DSViewController()
d3ds.acsUrl = response.acsUrl
d3ds.paReq = response.paReq
d3ds.transactionId = response.transactionId
d3ds.delegate = self
present(d3ds, animated: true)
После подтверждения в 3DS WebView SDK возвращает PaRes — его нужно передать в CloudPayments API для завершения транзакции:
POST /payments/cards/post3ds
{ "TransactionId": "...", "PaRes": "..." }
Готовый платёжный UI от SDK
CloudPayments SDK включает готовый PaymentForm — экран ввода карты с логотипами платёжных систем и встроенной валидацией. Полезен если нет ресурсов на кастомный дизайн.
val intent = PaymentActivity.getStartIntent(
context,
cpApiPublicId = "pk_your_public_id",
totalAmount = "1500",
currency = Currency.RUB,
invoiceId = "ORDER-1234",
description = "Оплата заказа"
)
startActivityForResult(intent, REQUEST_CODE_PAYMENT)
Что входит в работу
- Подключение CloudPayments SDK (iOS / Android / Flutter)
- Реализация генерации криптограммы и передачи на бэкенд
- Обработка 3DS через SDK-компоненты
- Опционально: Apple Pay / Google Pay через CloudPayments
- Тестирование с тестовыми картами CloudPayments (тестовый PublicID)
Сроки
2–3 дня. Стоимость рассчитывается индивидуально после анализа требований.







