שילוב שער התשלומים YooKassa לאפליקציות מובייל
כאשר משלבים תשלומים באפליקציית מובייל, האתגר העיקרי הוא עמידה בדרישות האבטחה. טיפול ישיר בנתוני כרטיסי אשראי דורש הסמכת PCI DSS ברמה 1, שעלותה כ-9–13 אלף דולר בחסכונות וביקורות שנתיות. אנחנו, צוות עם 7 שנות ניסיון בפיתוח מובייל ויותר מ-30 פרויקטים של YooKassa, פותרים זאת באמצעות טוקניזציה: ה-SDK של הלקוח יוצר טוקן תשלום חד-פעמי, והשרת שלך מעבד את התשלום באמצעות הטוקן הזה. שום נתוני כרטיס לא יוצאים מהמכשיר, מה שמבטל את הצורך בהסמכת PCI.
בעיות שאנחנו פותרים
עלויות עמידה ב-PCI DSS
ללא טוקניזציה, עליך לטפל בנתוני כרטיס רגישים ולעבור ביקורת PCI DSS ברמה 1 יקרה. הגישה שלנו באמצעות טוקניזציה של YooKassa מסירה את הנטל הזה לחלוטין. התשתית שלך אף פעם לא נוגעת במספרי כרטיס אמיתיים, מה שמפחית משמעותית סיכוני אבטחה ועלויות עמידה בדרישות.
מורכבות 3D Secure
תהליכי 3D Secure נשברים לעיתים קרובות באפליקציות מובייל אם לא מיושמים כראוי. אנחנו מטפלים בעיבוד אוטומטי של 3D Secure באמצעות YooKassa SDK, ומבטיחים הפניות חלקות וטיפול בקריאות חוזרות. בפרויקט מסחר אלקטרוני עדכני, הפחתנו את שיעור כשלי התשלום מ-12% ל-2% על ידי אופטימיזציה של טיפול ב-3D Secure.
תמיכה במספר אמצעי תשלום
משתמשים מצפים לגמישות: כרטיסים, SberPay, SBP, Apple Pay, Google Pay ו-YooMoney. אנו מגדירים את YooKassa SDK להציג את האמצעים המתאימים בהתאם ללוגיקה של האפליקציה שלך, מה שמגביר את ההמרה. עבור לקוח קמעונאי, הוספת SBP הגדילה את התשלומים הניידים ב-30%.
איך אנחנו עושים את זה: צלילה טכנית
ארכיטקטורת טוקניזציה
YooKassa SDK בצד הלקוח (iOS או Android) מצפין נתוני כרטיס ושולח אותם ישירות ל-YooKassa. ה-SDK מחזיר טוקן תשלום לאפליקציה שלך. הטוקן הזה מועבר לשרת האחורי שלך, שיוצר תשלום דרך YooKassa API. השרת שלך אף פעם לא רואה פרטי כרטיס אמיתיים.
אינטגרציית iOS עם YooKassaPayments SDK
אנו משלבים את ה-SDK דרך CocoaPods או SPM. מסך התשלום מופעל כפי שמוצג להלן. אנו מטפלים בקבלת הטוקן ובמצבי שגיאה.
import YooKassaPayments
let inputData = TokenizationModuleInputData(
clientApplicationKey: "live_your_client_key",
title: "Your Company",
subtitle: "Заказ №1234",
amount: Amount(value: 1500, currency: .rub),
paymentTypes: [.bankCard, .sberbank, .sbp, .applePay, .yooMoney],
savePaymentMethod: .on,
isLoggingEnabled: false
)
let viewController = TokenizationAssembly.makeModule(
inputData: inputData,
moduleOutput: self
)
present(viewController, animated: true)טיפול בתוצאות:
extension PaymentViewController: TokenizationModuleOutput {
func tokenizationModule(
_ module: TokenizationModuleInput,
didTokenize token: Tokens,
paymentMethodType: PaymentMethodType
) {
dismiss(animated: true)
sendTokenToBackend(token.paymentToken, paymentMethodType: paymentMethodType.rawValue)
}
func didFinish(on module: TokenizationModuleInput, with error: YooKassaPaymentsError?) {
dismiss(animated: true)
if let error = error {
print("YooKassa error: \(error)")
}
}
} אינטגרציית Android עם YooKassa Payments SDK
אנו מוסיפים את התלות (הגרסה העדכנית ביותר בתיעוד הרשמי):
implementation("ru.yoomoney.sdk.kassa.payments:yookassa-android-sdk:7.x.x") הפעלת מסך התשלום:
private val tokenizeLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val token = Checkout.createTokenizationResult(result.data!!)
sendTokenToBackend(
token.paymentToken,
token.paymentMethodType.name
)
}
}
fun startPayment() {
val paymentParameters = PaymentParameters(
amount = Amount(BigDecimal.valueOf(1500), Currency.getInstance("USD")),
title = "Your Company",
subtitle = "Заказ №1234",
clientApplicationKey = "live_your_client_key",
shopId = "your_shop_id",
savePaymentMethod = SavePaymentMethod.ON,
paymentMethodTypes = setOf(
PaymentMethodType.BANK_CARD,
PaymentMethodType.SBERBANK,
PaymentMethodType.SBP,
PaymentMethodType.GOOGLE_PAY,
PaymentMethodType.YOO_MONEY
)
)
val intent = Checkout.createTokenizeIntent(this, paymentParameters)
tokenizeLauncher.launch(intent)
} אישור תשלום בצד השרת
השרת האחורי שלך מקבל את הטוקן ויוצר תשלום דרך YooKassa API:
POST https://api.yookassa.ru/v3/payments
Authorization: Basic base64(shopId:secretKey)
Content-Type: application/json
Idempotence-Key: unique-uuid
{
"amount": {
"value": "1500.00",
"currency": "USD"
},
"capture": true,
"payment_method_data": {
"type": "bank_card"
},
"confirmation": {
"type": "mobile_application",
"return_url": "yourapp://payment/result"
},
"payment_token": "token_from_client",
"description": "Заказ №1234"
}אם התשובה כוללת import YooKassaPayments let inputData = TokenizationModuleInputData( clientApplicationKey: "live_your_client_key", title: "Your Company", subtitle: "Заказ №1234", amount: Amount(value: 1500, currency: .rub), paymentTypes: [.bankCard, .sberbank, .sbp, .applePay, .yooMoney], savePaymentMethod: .on, isLoggingEnabled: false ) let viewController = TokenizationAssembly.makeModule( inputData: inputData, moduleOutput: self ) present(viewController, animated: true) ו-extension PaymentViewController: TokenizationModuleOutput { func tokenizationModule( _ module: TokenizationModuleInput, didTokenize token: Tokens, paymentMethodType: PaymentMethodType ) { dismiss(animated: true) sendTokenToBackend(token.paymentToken, paymentMethodType: paymentMethodType.rawValue) } func didFinish(on module: TokenizationModuleInput, with error: YooKassaPaymentsError?) { dismiss(animated: true) if let error = error { print("YooKassa error: \(error)") } } } , נדרש 3D Secure. ה-SDK מטפל בזה אוטומטית; לאינטגרציה ישירה, פתח את implementation("ru.yoomoney.sdk.kassa.payments:yookassa-android-sdk:7.x.x") ב-private val tokenizeLauncher = registerForActivityResult( ActivityResultContracts.StartActivityForResult() ) { result -> if (result.resultCode == Activity.RESULT_OK) { val token = Checkout.createTokenizationResult(result.data!!) sendTokenToBackend( token.paymentToken, token.paymentMethodType.name ) } } fun startPayment() { val paymentParameters = PaymentParameters( amount = Amount(BigDecimal.valueOf(1500), Currency.getInstance("USD")), title = "Your Company", subtitle = "Заказ №1234", clientApplicationKey = "live_your_client_key", shopId = "your_shop_id", savePaymentMethod = SavePaymentMethod.ON, paymentMethodTypes = setOf( PaymentMethodType.BANK_CARD, PaymentMethodType.SBERBANK, PaymentMethodType.SBP, PaymentMethodType.GOOGLE_PAY, PaymentMethodType.YOO_MONEY ) ) val intent = Checkout.createTokenizeIntent(this, paymentParameters) tokenizeLauncher.launch(intent) } או ב-Custom Tabs.
מקרה בוחן: שיפור ביצועי אפליקציית מסחר אלקטרוני
בפרויקט עדכני עבור חנות מקוונת גדולה, שילבנו את YooKassa עם טוקניזציה ואופטימיזציה של תהליך התשלום. על ידי כוונון עדין של בקשת הטוקן וטיפול בתגובת השרת האחורי, הפחתנו את זמן עיבוד התשלום הממוצע מ-8 שניות ל-1.2 שניות. שיעור הנטישה בקופה הניידת ירד ב-15%.
תהליך האינטגרציה שלנו
- איסוף נתונים – אנו דנים בתרחישי התשלום שלך, באמצעים הנדרשים ובארכיטקטורת האפליקציה.
- ביקורת – סקירת קוד קיים וזיהוי בעיות חוסמות.
- עיצוב – תכנון תהליך הטוקניזציה, נקודות קצה בשרת האחורי וטיפול בשגיאות.
- הערכה – מתן מחיר קבוע לאחר ניתוח (ציר זמן ועלות מותאמים לפרויקט שלך).
- פיתוח – אינטגרציית YooKassa SDK ב-iOS/Android, כתיבת לוגיקת תשלום בצד השרת, הגדרת webhooks.
- בדיקות – בדיקות עם סביבת הבדיקה של YooKassa המכסות את כל התרחישים.
- השקה – סיוע בבדיקות עמידה בדרישות App Store ו-Google Play.
ציר זמן ועלות
אינטגרציה בסיסית (פלטפורמה אחת, תשלומי כרטיס בלבד) אורכת 2–3 ימים. הוספת אמצעי תשלום נוספים או פלטפורמה שנייה מאריכה את הזמן בהתאם. העלות נקבעת לאחר ביקורת חינמית של הפרויקט שלך. למהנדסים שלנו יש 7+ שנות ניסיון במובייל והם ביצעו 30+ אינטגרציות של YooKassa. אנו מבטיחים טיפול נכון ב-3D Secure, בתהליכי החזרים ועמידה בהנחיות הביקורת של App Store (סעיפים 4.2 ו-5.1).
טעויות נפוצות שיש להימנע מהן
- חשיפת מפתח סודי – לעולם אל תטמיע אותו בקוד האפליקציה.
- שכחת מפתח אידמפוטנטיות – שלח תמיד מפתח ייחודי כדי למנוע חיובים כפולים.
- התעלמות מהפניה של 3D Secure – בדוק את תהליך ההפניה בסביבה מבוקרת.
- אי טיפול בשגיאות רשת – יישם לוגיקת ניסיון חוזר ויצירת טוקן מחדש.
מה כלול בעבודה שלנו
- אינטגרציה מלאה של YooKassa SDK (iOS / Android / Flutter)
- הגדרת אמצעי תשלום לפי הדרישות שלך
- נקודת קצה בצד השרת ליצירת תשלום ואישור
- הגדרת Webhook לקריאות חוזרות של סטטוס סופי
- בדיקות בחנות הבדיקה של YooKassa
- סיוע בפרסום ב-App Store / Google Play (בדיקות עמידה בדרישות)
כדי להתחיל, בקש ביקורת חינמית מהמהנדסים שלנו. נסקור את האפליקציה שלך ונספק תוכנית אינטגרציה אופטימלית עם הצעת מחיר קבועה.







