Off-Ramp: מכירת קריפטו תמורת פייט באפליקציות מובייל
נתקלנו בזה עשרות פעמים: לקוח רוצה למשוך מטבע קריפטוגרפי לכרטיס בנק, אבל הספק דורש לשלוח קודם את הקריפטו, כשהפייט מגיע רק כמה ימי בנק לאחר מכן. האמון הוא המחסום המרכזי, שנפתר באמצעות ממשק ושקיפות. במאמר זה, אנו מפרקים כיצד שילבנו off-ramp מ-Transak ו-MoonPay — פתרון סוהר, כולל KYC, SEPA והתראות push. אנו מעריכים את הפרויקט שלכם — לוחות זמנים מ-5 עד 12 ימים בהתאם למורכבות. הניסיון שלנו: 5+ שנים בפיתוח שערי פייט למובייל, 30+ אינטגרציות עם ספקי תשלום. במשך 5 שנים, השקנו 15+ פרויקטים של off-ramp לחברות פינטק.
למה Off-Ramp אומר שהקריפטו הולך קודם
בניגוד ל-on-ramp, שבו המשתמש רואה קודם כמה קריפטו הוא יקבל, off-ramp דורש לשלוח קריפטו לכתובת ההפקדה של הספק קודם. זה יוצר מחסום אמון נוסף. הממשק חייב למזער חרדה.
זרימה טיפוסית:
- המשתמש מזין את סכום הקריפטו ופרטי חשבון הבנק.
- הספק מנפיק כתובת הפקדה ומאשר את השער (תוקף הצעת מחיר בדרך כלל 15–30 דקות).
- האפליקציה שולחת קריפטו לכתובת ההפקדה — בדרך כלל דרך מסך השליחה של הארנק המובנה.
- הספק מאשר קבלה ומתחיל בהעברת הפייט.
KYC ואימות חשבון בנק
דרישות AML ל-off-ramp מחמירות יותר. MoonPay ו-Transak דורשות אימות חשבון בנק באמצעות מיקרו-עסקאות (2 חיובים קטנים לאישור) או Open Banking (Plaid, TrueLayer).
האפליקציה חייבת ליידע את המשתמש בבירור על לוחות הזמנים של KYC — האימות יכול לקחת 1–3 ימי עסקים עבור ה-off-ramp הראשון. פעולות עוקבות הן מיידיות לאחר האישור.
// iOS — запуск Transak off-ramp виджета
var components = URLComponents(string: "https://global.transak.com")!
components.queryItems = [
.init(name: "apiKey", value: transakApiKey),
.init(name: "walletAddress", value: userWalletAddress),
.init(name: "defaultCryptoCurrency", value: "ETH"),
.init(name: "productsAvailed", value: "SELL"), // только off-ramp
.init(name: "redirectURL", value: "myapp://offramp-callback"),
.init(name: "themeColor", value: "000000")
]
let safariVC = SFSafariViewController(url: components.url!)
present(safariVC, animated: true) תמיכה ב-SEPA והעברות בנקאיות
למשתמשים אירופאים — SEPA Instant (זיכוי תוך 10 שניות) ו-SEPA Credit Transfer (1–2 ימי עסקים). לבינלאומיים — Wire (SWIFT, 2–5 ימים). הספקים קובעים את השיטות הזמינות לפי מדינת המשתמש.
Transak תומכת ב-SEPA ל-30+ מדינות אירופאיות. MoonPay תומכת ב-SEPA, העברה בנקאית לבריטניה (Faster Payments).
השוואת ספקי Off-Ramp
| תכונה | Transak | MoonPay |
|---|---|---|
| תמיכה ב-SEPA Instant | כן (30+ מדינות) | כן (גוש האירו) |
| אימות חשבון בנק | מיקרו-עסקאות | Open Banking / מיקרו-עסקאות |
| זמן משיכה (SEPA) | 1–2 ימים | 1–2 ימים |
| עמלת משתמש | 0.5–2% | 0.5–2% |
| SDK למובייל | URL widget | URL widget + SDK מקורי |
למה Off-Ramp דורש בדיקה משולשת של עסקאות
בגלל חוסר ההיפוך של העברות קריפטו, כל עסקה נבדקת שלוש פעמים: מקומית באפליקציה, בצד הספק, וב-blockchain. אנו מוסיפים מסך אישור עם פרטים (כתובת, סכום, שער) וטיימר. אם המשתמש לא מאשר תוך דקה, הצעת המחיר פגה והשער מחושב מחדש. זה מפחית את סיכון הטעויות ובונה אמון.
איך להאיץ משיכות עם SEPA Instant?
SEPA Instant אינו זמין לכל המדינות והבנקים. כדי להשתמש בו, הספק חייב לתמוך במערכת זו ולהיות לו בנק שותף באזור היעד. Transak מכסה 30+ מדינות דרך שותפות עם בנק בריטי. אנו ממליצים להשתמש ב-SEPA Instant כשיטה העיקרית לאירופה — 10 שניות לעומת 1–2 ימים ל-SEPA רגיל. הממשק צריך להדגיש אפשרות זו כמומלצת.
סטטוסים והתראות
עסקת off-ramp עוברת מספר סטטוסים: // iOS — запуск Transak off-ramp виджета var components = URLComponents(string: "https://global.transak.com")! components.queryItems = [ .init(name: "apiKey", value: transakApiKey), .init(name: "walletAddress", value: userWalletAddress), .init(name: "defaultCryptoCurrency", value: "ETH"), .init(name: "productsAvailed", value: "SELL"), // только off-ramp .init(name: "redirectURL", value: "myapp://offramp-callback"), .init(name: "themeColor", value: "000000") ] let safariVC = SFSafariViewController(url: components.url!) present(safariVC, animated: true) → crypto_received → processing → fiat_sent. כל מעבר מפעיל התראת push. המשתמש לעולם לא צריך לנחש באיזה שלב הוא נמצא.
// Android — webhook обработчик статусов (серверная часть, прокидывается в push)
when (webhookEvent.status) {
"AWAITING_PAYMENT_FROM_USER" -> sendPush("Ожидаем отправку $amount $currency")
"PAYMENT_DONE_MARKED_BY_USER" -> sendPush("Крипта получена, идёт проверка")
"ON_HOLD_PENDING_DELIVERY_FROM_TRANSAK" -> sendPush("Перевод инициирован")
"COMPLETED" -> sendPush("$fiatAmount ${fiatCurrency} отправлены на счёт")
"FAILED" -> sendPush("Операция отклонена: $reason")
} מה כלול (תוצרים)
- אינטגרציה של ספק off-ramp אחד (Transak או MoonPay) — 5 ימים.
- תצורת ריבוי ספקים עם מעבר — 8–12 ימים.
- כולל: ממשק הזנת סכום, טיפול בהפניות דרך deep links, שליפת סטטוסים דרך webhooks, הגדרת התראות push.
- תיעוד של הזרימה והארכיטקטורה.
- תמיכה במהלך השחרור ל-App Store / Google Play.
לוח זמנים: 5 ימים לספק יחיד, 8–12 לריבוי ספקים. צרו קשר כדי להעריך את הפרויקט שלכם — קבלו ייעוץ על בחירת ספק וארכיטקטורה. אנו מבטיחים שקיפות ועמידה בSEPA ובהנחיות הביקורת של App Store (סעיף 5.1).







